반응형

텐서플로(Tensorflow) 시작하기


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



소개

텐서플로우(TensorFlow)는 기계 학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리입니다. 데이터 플로우 그래프(Data Flow Graph) 방식을 사용하였습니다.

데이터 플로우 그래프

데이터 플로우 그래프는 수학 계산과 데이터의 흐름을 노드(Node)와 엣지(Edge)를 사용한 방향 그래프(Directed Graph)로 표현합니다.

data flow graph

노드는 수학적 계산, 데이터 입/출력, 그리고 데이터의 읽기/저장 등의 작업을 수행합니다. 엣지는 노드들 간 데이터의 입출력 관계를 나타냅니다.

엣지는 동적 사이즈의 다차원 데이터 배열(=텐서)을 실어나르는데, 여기에서 텐서플로우라는 이름이 지어졌습니다.

텐서(Tensor)는 과학과 공학 등 다양한 분야에서 이전부터 쓰이던 개념입니다. 수학에서는 임의의 기하 구조를 좌표 독립적으로 표현하기 위한 표기법으로 알려져 있지만, 분야마다 조금씩 다른 의미로 사용됩니다. 여기에서는 학습 데이터가 저장되는 다차원 배열 정도로 이해하시면 되겠습니다.

특징

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

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

이후의 설명은 Python을 중심으로 진행하겠습니다. (pip를 통한 Python3설치는 개발 중으로, Python2 기반으로 하겠습니다.)

"구글이 텐서플로우를 오픈소스로 한 것은, 기계 학습이 앞으로 제품과 기술을 혁신하는데 가장 필수적인 요소라고 믿기 때문입니다." - Google Brain Team

설치

텐서플로우는 설치가 비교적 쉬운 편입니다만, 다음과 같은 제약이 있습니다:

  • Unix계열 OS(Linux/Mac OSX)만 지원합니다.
  • GPU 버전은 Linux만 지원합니다.

Linux / Mac OSX

Unix 계열 OS를 사용하시는 분들은 공식 페이지의 설치 문서를 참고하시면 쉽게 설치할 수 있습니다.

윈도우

윈도우 사용자 분들은 가상 머신을 이용하거나, 도커 툴박스 설치 후 진행하시기 바랍니다.

이미지를 받고 컨테이너 실행

텐서플로우의 도커 이미지는 소스코드, 예제, 툴도 포함되어 있기에 풀 버전을 받는 것을 권합니다.

Linux / Mac OSX

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

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

컨테이너 안의 /tensorflow 폴더에 소스가 설치되어 있습니다. (주의: 이 폴더에서 모듈을 import 하시면 에러가 발생합니다. )

윈도우

윈도우의 경우 Docker QuickStart Terminal 실행 후(이때 고래 그림 아래의 IP를 기억해 둡니다) 아래와 같이 실행하시기 바랍니다.

winpty docker run -it -p 8888:8888 b.gcr.io/tensorflow/tensorflow-full

이미지를 받은 후 컨테이너가 실행되면, Jupyter 노트북 서버가 자동으로 시작된 상태입니다. 웹브라우저에서 '위의IP:8888'을 입력하면 Jupyter Notebook 환경에 접속됩니다. 여기에서 tensorflow를 사용하실 수 있습니다.

동작 확인

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

$ 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
>>>

.

반응형
반응형

데뷔 후 뜨거운 관심을 받은 오픈소스 프로젝트 10개   http://www.bloter.net/archives/266272

 

깃허브는 오픈소스 프로젝트들의 성지라고 불릴 만큼 다양한 프로젝트를 공유한다. 개발자는 깃허브에서 소스코드를 저장하고 살펴보는 것 뿐만 아니라 특정 인물을 팔로우하거나 소셜 활동도 할 수 있다. 대표적으로 깃허브에서 ‘스타’는 ‘좋아요’를, ‘포크’는 공유 기능을 담당하는데, 이 수치를 보면 오픈소스 프로젝트의 인기를 가늠할 수 있다. 깃허브는 10월25일, 소스코드가 공개된 후 1주일 동안 가장 많은 스타수를 받은 프로젝트를 1위부터 10위까지 공개했다. 개발자들의 기대가 그만큼 높은 오픈소스 프로젝트라고 할 수 있겠다.

 

10위. 에니메이(Anime)

에니메이는 자바스크립트 애니매이션 라이브러리다. 2016년 6월27일 출시됐으며, 공개된 이후 첫 주 동안 6013번 스타가 찍혔다. 에니메이는 가볍고, 유연한게 특징이며, CSS, SVG, DOM 속성, JS 객체와 결합해 사용하기도 쉽다. 에니메이 홈페이지를 방문하고 클릭 몇 번을 해보면 에니메이로 어떤 효과를 넣을 수 있을지 감이 올 것이다. 에니메이는 프랑스에 거주하는 줄리안 가르니에라는 디자이너 겸 개발자가 만들었다. 그의 홈페이지를 방문하면 재밌는 소개글을 볼 수 있으니 참고하면 좋다.

 

9위. 리액트 앱 만들기(create-react-app)

 

리액트 앱 만들기는 페이스북이 배포한 오픈소스 프로젝트다. 리액트는 2013년 사용자 인터페이스를 만들기 위한 자바스크립트 라이브러리이며, 리액트 자체도 깃허브 내에서 큰 인기를 끌고 있다. ‘리액트 앱 만들기’는 따로 환경설정을 신경 쓰지 않고 리액트 앱 결과물을 만들어주는 소스코드다. 2016년 7월22일 출시된 이후 1주일 동안 스타수가 6438번 눌러졌다.

8위. 클립보드JS(Clipboard.js)

클립보드JS는 글씨를 복사하고 붙여넣을 수 있는 기능을 자바스크립트로 쉽게 구현하도록 돕는 기술이다. 크기가 3KB밖에 되지 않고, 플래시나 프레임워크 없이 쉽게 클립보드를 만들어주는 장점이 있다. 제노 로차라는 브라질 출신 개발자가 만든 이 기술은 2015년 11월에 공개됐으며, 출시 후 1주일 동안 6522번 스타가 눌러졌다.

7위 비주얼 스튜디오 코드(Visual Studio Code)


비주얼 스튜디오 코드는 마이크로소프트(MS)가 만든 코드 편집기이자 디버깅 도구다. 기존 IDE ‘비주얼 스튜디오’룰 웹 기반으로 만든 것이라 볼 수 있다. 기술 뒷단에는 일렉트론이 쓰였으며, MS 개발자 행사에서 오픈소스 기술로 변환됐다. 비주얼 스튜디오 코드는 2015년 11월에 출시됐으며, 1주일 동안 스타수는 7847번이었다.

6위. N1

N1은 데스크톱용 e메일 애플리케이션이다. 일렉트론, 플럭스, 리액트 등을 사용해 만들었으며 테마나 플러그인을 추가해 다양한 기능을 구현할 수 있다. 오픈소스 기술이며, 나만의 e메일 클라이언트를 만들 수 있다는 이유로 관심을 받았다. 2015년 10월 공개된 이후 스타수는 8588개가 찍혔다. 나이라스라는 기업이 개발했으며, 기본 기능은 무료로 제공하고, 기업용 기능은 유료로 판매 중이다.

5위. 머티리얼 디자인 라이트(Material Design Lite)


머티리얼 디자인은 구글의 디자인 철학이다. 질감이 느껴지는 표면과 선명한 그래픽 디자인, 직관적인 사용자 경험을 위한 자연스러운 애니메이션을 추구하는 게 특징이다. 머티리얼 디자인 라이트는 단순한 형태의 웹사이트에 머티리얼 디자인 원칙을 쉽게 적용하게 도와주는 코드다. 자바스크립트 프레임워크에 영향을 받지 않으며 다양한 기기, 플랫폼, 웹브라우저 버전을 지원한다. 머티리얼 디자인 라이트 공식 홈페이지에선 구체적인 가이드라인과 템플릿 등도 볼 수 있다. 머티리얼 디자인 라이트는 2015년 7월 공개됐으며, 스타수는 일주일 만에 9609번이 됐다.

4위. 리액트 네이티브 (React Native)

 

리액트 네이티브는 모바일 앱을 만들기 위한 프레임워크다. 페이스북이 만들고 바로 오픈소스 기술로 출시됐다. 리액트가 웹 개발자 혹은 하이브리드 앱 개발자에게 주목받았다면 리액트 네이티브는 모바일 개발자에게 관심을 받고 있다. 리액트 네이티브를 이용하면 안드로이드와 iOS 앱 개발시 동일한 소스코드르 이용할 수 있다. 기존 하이브리드 앱보다 성능이 높고, 각 플랫폼이 지원하는 고유 기능을 이용할 수 있다는 점이 인기 요인이다. 리액트 네이티브는 2015년 3월 출시됐으며, 출시 첫 주에 스타수는 1만976개였다.

3위. 텐서플로우(Tensorflow)

텐서플로우는 구글이 만든 오픈소스 머신러닝 라이브러리다. 구글이 만든 머신러닝 기술은 어떨지 궁금한 개발자들이 텐서플로우를 찾고 있다. 구글은 ‘텐서플로우 서빙’이란 기술도 오픈소스로 공개해 더 많은 개발자들이 쉽게 텐서플로우를 이용할 수 있게 지원하고 있다. 텐서플로우 프로젝트를 이끄는 마이크 슈스터 박사는 지난 4월 한국을 방문해 “머신러닝 생태계의 발전을 위해 텐서플로우를 공개했다”라며 “팀 내부적으로는 소프트웨어 관리와 문서화를 더 잘하기 위해서 오픈소스화 했다”라고 밝혔다. 텐서플로우는 2015년 11월 공개됐으며, 첫 주에 1만1822명 사용자가 스타 버튼을 눌렀다.

2위. 얀(Yarn)

가장 최근에 배포된 오픈소스 프로젝트다. 2016년 10월11일에 공개된 얀은 페이스북, 구글, 틸데가 공동으로 만들었으며, 출시 1주일 만에 1만6천개 스타가 찍힐 만큼 높은 관심을 받았다. 얀은 자바스크립의 의존성을 관리해주는 기술이다. 속도와 안정성, 보안성을 장점을 내세우고 있다.

1위. 스위프트(Swift)

스위프트는 애플이 만든 프로그래밍 언어다. 2014년에 처음 공개됐고, 2015년에 12월3일에 오픈소스 언어로 전환됐다. 깃허브에 스위프트가 올라오자 1주일 만에 2만3097개의 사용자가 스타를 눌렀다. iOS 앱 개발시 사용할 수 있고, 기존 오브젝티브C 언어의 단점을 보완할 수 있다는 이유로 많은 개발자들이 관심을 받았다. 스위프트는 이미 깃허브에서 가장 인기있는 언어 15위 안에 들었으며, 풀 리퀘스트(Pull Request)수정한 브랜치 내용을 기존 버전에서 반영할 수 있도록 깃허브로 보내는 행위를 일컫는다.close 수는 지난해에 비해 262% 올랐다.

 

 

 

 

.

반응형

+ Recent posts