텐서플로우 시작

소개


텐서플로우(TensorFlow)는 기계 학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리

특징

텐서플로우는 다음과 같은 특징을 가집니다:

  • 데이터 플로우 그래프를 통한 풍부한 표현력
  • 코드 수정 없이 CPU/GPU 모드로 동작
  • 아이디어 테스트에서 서비스 단계까지 이용 가능
  • 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산을 처리
  • Python/C++를 지원하며, SWIG를 통해 다양한 언어 지원 가능

Linux

Unix 계열 OS에서는 아래의 명령을 실행하면 이미지를 받고 컨테이너가 실행됩니다. 컨테이너 실행 후 자동으로 컨테이너 안의 쉘 환경으로 들어가게 됩니다.

docker run -it b.gcr.io/tensorflow/tensorflow-full

동작 확인

설치가 잘 되었는지 다음의 코드로 확인해봅니다.

$ python

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>>

다음 기술에 대한 내용은 이곳을 참조

https://gist.github.com/haje01/202ac276bace4b25dd3f

 

TensorFlow

https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/tutorials/wide/

https://www.tensorflow.org/install/install_linux#determine_which_tensorflow_to_install

윈도우 GPU tensorflow 설치 및 그래픽카드별 성능 비교

http://goodtogreate.tistory.com/entry/GPU-TensorFlow-on-Window-10-TensorFlow-GPU%EB%B2%84%EC%A0%84-%EC%9C%88%EB%8F%84%EC%9A%B010-%EC%84%A4%EC%B9%98

TensorFlow 개발환경 ( Eclipse + PyDev, Pycharm, Jupyter)
http://goodtogreate.tistory.com/entry/PyDev%EC%97%90-TensorFlow-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0

기계 학습을 최대한 활용할 수 있는 오픈소스/머신러닝 프레임워크

아파치 스파크(Apache Spark) MLlib
아파치 스파크는 하둡) 제품군의 하나로 널리 알려져있지만, 이 인메모리(In-memory) 데이터 처리 프레임워크는 하둡 생태계가 아닌 다른 곳에서도 명성을 떨치고 있다. 오늘날 스파크는 빠른 속도의 인메모리 데이터에 적용할 수 있는 알고리즘 라이브러리가 늘어남에 따라 인기 높은 기계 학습 툴이 되었다.

아파치 싱가(Apache Singa)
‘딥러닝(Deep Learning)’ 프레임워크는 자연어 처리와 이미지 인식 등의 주요 기계 학습 기능에 활용된다. 최근 아파치 인큐베이터(Apache Incubator)에 수용된 싱가는,대용량 데이터로 딥 러닝 모델을 간편하게 학습할 수 있게 해주는 오픈소스 프레임워크다.

카페(Caffe)
딥 러닝 프레임워크인 카페는 표현성, 속도, 모듈성을 염두에 두고 개발됐다. 2013년 머신 비전 프로젝트를 위해 개발된 카페는 그 이후로 언어 능력과 멀티미디어 등 다른 응용 분야도 포함할 수 있도록 확장됐다.

마이크로소프트 애저 ML 스튜디오(Microsoft Azure ML Studio)
필요한 데이터와 연산 능력의 수준을 고려할 때 클라우드는 ML 앱에 대한 이상적인 환경이다. 마이크로소프트는 애저에 월, 시간 단위로 과금하거나 무료로 제공하는 기계학습 서비스 애저 ML 스튜디오를 적용했다. 참고로 마이크로소프트의 하우올드로봇(HowOldRobot) 프로젝트가 이 시스템으로 개발된 것이다.

아마존의 일반적인 클라우드 서비스 접근방식은 일정한 패턴이 있다. 기본을 제공하고 관심이 있는 핵심 청중을 끌어들이며 이를 기초로 개발하도록 한 후에 그들이 정말로 필요한 것을 찾아 제공하는 것이다.

마이크로소프트 DMLT(Distributed Machine Learning Toolkit)
기계학습 문제에 컴퓨터를 더 많이 투입할수록 좋을 것이다. 그러나 여러 컴퓨터를 모으고 여기에서 ML 애플리케이션이 잘 구동되도록 하기란 쉽지 않은 작업일 수 있다. 마이크로소프트의 DMTK 프레임워크는 시스템 클러스터에서 다양한 기계학습 작업을 배포하는 문제를 해결해준다.

구글 텐서플로우(Google TensorFlow)
마이크로소프트의 DMTK와 마찬가지로 구글 텐서플로우는 복수의 노드에서 확장될 수 있도록 개발된 기계학습 프레임워크다. 구글의 퀴베르네시스(Kubernetes)와 마찬가지로 구글의 내부 문제를 해결하기 위해 개발됐는데, 이후 구글은 이를 오픈소스 제품으로 공개했다.

마이크로소프트 CNT(Computational Network Toolkit)
DMTK를 공개하여 이목을 집중시킨 마이크로소프트는 또 다른 기계학습 툴킷인 CNTK를 선보였다.

벨레스(Veles, 삼성)
벨레스는 딥러닝 애플리케이션을 위한 분산형 플랫폼이다. 텐서플로우나 DMTK와 마찬가지로 C++로 작성됐다. 그러나 노드 사이의 자동화와 조율을 수행하는 데에는 파이썬을 이용한다.

브레인스톰(Brainstorm)
스위스의 루가노(Lugano, Switzerland)의 IDSIA(Institute Dalle Molle for Artificial Intelligence)에서 박사 과정을 밟고 있는 클라우스 그레프(Klaus Greff)와 루페시 스리바스타바(Rupesh Srivastava)가 2015년 한 해 동안 개발한 프레임워크다. 브레인스톰 프로젝트의 목표는 “DNN(Deep Neural Network)을 더 빠르고 유연하며 재미있게” 만드는 것이다. LSTM 등 다양한 순환형 신경망 모델을 위한 지원이 이미 포함되어 있다

엠엘팩 2(mlpack 2)
2011년에 공개된 C++ 기반의 기계학습 라이브러리가 엠엘팩이다. 해당 라이브러리 개발자는 “확장성, 속도, 사용 편의성”을 위해 이를 개발했다고 밝한 바 있다 . Mlpack 도입은, 약식의 경우 “블랙 박스(Black Box)” 작업을 위한 명령줄 실행 가능문 저장소를 통해 이뤄질 수 있으며, 좀더 정교하게는 C++ API를 통해 가능하다.

마빈(Marvin)
상대적으로 최근에 개발된 마빈 신경망 프레임워크는 PVG(Princeton Vision Group)의 제품이다. 해당 프로젝트의 문서에서 개발자들이 설명했듯이 “해킹당하기 위해” 개발됐다. C++과 CUDA GPU 프레임워크로 작성된 몇 개의 파일에만 의존하고 있다.

네온(Neon)
자체 딥러닝 하드웨어 및 소프트웨어 플랫폼을 개발하는 기업 너바나(Nervana)는 네온이라는 딥러닝 프레임워크를 오픈소스 프로젝트로 공개했다. 이는 CPU, GPU, 너바나의 자체 맞춤형 하드웨어에서 부하 작업이 수행될 수 있도록 삽입형 모듈을 사용한다.

원문보기:
http://www.ciokorea.com/slideshow/28347#csidxa010cdf8df233ed957fe76125118a9c

 

사이킷-런(Scikit-learn)
파이썬(Python)은 수학, 과학, 통계에 없어서는 안 될 프로그래밍 언어
프로젝트 : 사이킷-런
깃허브 : https://github.com/scikit-learn/scikit-learn

쇼군(Shogun)
가장 오래된 기계 학습 라이브러리들 가운데 하나인 쇼군(Shogun)은 1999년 개발됐으며, C++에 기반 쇼군은 SWIG 라이브러리 덕분에 자바, 파이썬, C#, 루비, R Lua, Octave, Matlab에서도 이용할 수 있다.

Project: Shogun
GitHub: https://github.com/shogun-toolbox/shogun

어코드(Accord) Framework/AForge.net
닷넷(.Net)용 단일 프로세싱 프레임워크 겸 기계 학습 라이브러리인 어코드(Accord)는 AForge.net의 확장판.
‘단일 프로세싱’은 이미지를 통합하거나 얼굴을 인식하는 등 이미지와 음성을 처리하는 여러 기계 학습 알고리즘을 일컫는다.
Project: Accord Framework/AForge.net
GitHub: https://github.com/accord-net/framework/

Mahout
Apache Mahout 소프트웨어 는 세 가지 주요 기능을 제공합니다.
1.확장 가능한 알고리즘을 구축하기위한 간단하고 확장 가능한 프로그래밍 환경과 프레임 워크
2.Scala + Apache Spark, H2O, Apache Flink를위한 광범위한 사전 작성 알고리즘
3.Samsara, 규모에서 작동하는 R 유사 문법을 사용한 벡터 수학 실험 환경

Project: Mahout

MLlib
아피치의 스파크 및 하둡용 기계 학습 라이브러리인 MLlib은 속도와 확정이 뛰어난 알고리즘과 유용한 데이터 형식을 지원
Project: MLlib

H2O
옥스데이터(Oxdata)의 H2O는 이미지 분석보다는 부정행위나 트렌드 분석 등 비즈니스 프로세스에 더 적합한 알고리즘이다.
프로젝트 : H20
깃허브 : https://github.com/0xdata/h2o

클라우데라 오릭스(Cloudera Oryx)
하둡을 대상으로 한 또 다른 기계 학습 프로젝트인 오릭스(Oryx)는 클라우데라 하둡 배포판이다.
프로젝트 : Cloudera Oryx
깃허브 : https://github.com/cloudera/oryx

고런(GoLearn)
구글의 고(Go)는 5년밖에 되지 않은 언어이다.
프로젝트 : GoLearn
깃허브 : https://github.com/sjwhitworth/golearn

 

Weka
자바 기계 학습 알고리즘을 집대성했다.
프로젝트 : Weka

CUDA-Convnet
현재 대다수는 GPU가 특정 기능 구현에서는 CPU보다 성능이 앞선다는 사실을 안다.
프로젝트 : CUDA-Convnet

ConvNetJS
ConvNetJS는 이름이 암시하듯, 자바스크립트 기반의 신경망 기계 학습 라이브러리를 제공하는데, 브라우저를 데이터 워크벤치로 사용하게끔 도와준다. Node.js를 이용하는 사람들을 위한 NPM 버전도 있다.
프로젝트 : ConvNetJS
깃허브 : https://github.com/karpathy/convnejs

원문보기:
http://www.itworld.co.kr/slideshow/90912#csidx3474f782700fb51b664c83eb74ac6cb