텐서플로우는 머신러닝 라이브러리로 추상화가 엄청 잘 되어 있어서

초보자도 코드 몇 자 끄적이면 하루만에 구글넷같은 복잡한 네트워크를 구성할 수 있고

결과도 의도한 대로 잘 나오게 할 수 있다.


 하지만 텐서플로우에서 디폴트 자료구조로 Tensor 오브젝트를 쓰는데

이 Tensor 자료구조라는 놈이 엄청나게 폐쇄적인 놈이라 니 스스로 알고리즘이나 플로우를 파이선만으로 짜서 구성할 수 없게 해 놓았다.


 py_func(...) 라는 함수가 있어서 파이선 함수를 콜백으로 등록해 놓고 쓸 수는 있게 해 놓았는데

이건 리턴형이 한정되어 있어서 이걸로 레이어를 구성한다? 불가능한 소리임.


 그렇다면 연구/개발을 목적으로 프로그램을 개발한다면 어떤 프레임워크가 괜찮을까?


 대표적으로 Caffe 가 있다.

Caffe 는 기본적으로 사용자가 코드해서 바꿀 수 있는 뮤터블 데이터를 지원하고

애초에 Nvidia GPU 가 있는 상황을 상정해서 만든 라이브러리이기 때문에

CPU, GPU 간의 묵시적 데이터 통신도 지원한다.


 그리고 Caffe 는 DIGITS 프레임워크와 함께 쓰면 최상의 효과를 가져오는데

최근 DIGITS 에 업데이트 된 내용이

스스로 python 레이어를 짜서 DIGITS 에 업로드 시키고, 그 레이어를 아주 큰 네트워크의 일부로 쓸 수 있다는 점이다.

이 점이 텐서플로우와는 차별되는 가장 큰 장점 중에 하나이고


 Visualization 에 있어서는 텐서보드가 DIGITS을 따라올 수가 없다.

단 하나 단점이라고는 Deployment 가 Tensorflow 보다 아주 "약간" 불편하다는 점인데

이 점은 개선될 거라고 본다.


 서비스 개발할려면 Tensorflow 쓰고, R&D 할려면 Caffe 랑 DIGITS 이랑 같이 쓰자.