태그 보관물: TensorFlow

DeepCognition.ai

(업데이트) 세트렉아이의 전태균님이 이 플랫폼이 케라스(Keras)로 만들어졌다고 알려 주셨습니다. 모델을 만든 후 작성된 코드를 다운 받을 수 있는데요. 전태균님의 깃허브에서 직접 작성한 것deepcognition.ai 에서 만든 코드를 비교해 볼 수 있습니다.

Deep Cognition Labs에서 개발한 딥러닝 GUI 플랫폼인 DeepCognition.ai 베타 서비스가 릴리즈 되었습니다. 이 서비스는 웹 기반 어플리케이션으로 마우스 드래그앤 드롭으로 모델을 그리고, 훈련과 테스트를 클라우드 머신(AWS으로 추측됩니다)에서 수행합니다. 딥러닝 라이브러리는 텐서플로우를 사용한다고 합니다. 이와 비슷한 비즈니스 모델이 앞으로 계속 생길 듯하여 만드는 단계를 한번 따라가 보았습니다.

유료 서비스이지만 베타 중이어서인지 결재 정보를 넣지 않고도 간단한 모델을 만들 수 있었는데 임시적인 것인지 일시적인 오류인지는 모르겠습니다. 아직 친절한 설명은 충분하지 않지만 동영상 설명이 있어서 간단한 모델은 쉽게 따라할 수 있을 것 같습니다. 아래는 간단한 MNIST 예제를 만드는 과정입니다.

왼쪽에 간단한 메뉴가 구성되어 있는데 맨 위에 프로젝트를 생성하는 버튼이 있습니다. 프로젝트를 만들고 나서 최대화 아이콘을 누르면 워크 스페이스 같은 창으로 이동됩니다.

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-18-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-11-11-23

계속 읽기

Keras go to TensorFlow

케라스(Keras)를 개발한 구글의 프랑소와 숄레(François Chollet)가 트위터에 남긴 글과 fast.ai 의 블로그로 미루어 보아 케라스가 텐서플로우의 contrib 아래로 들어갈 것 같습니다. 아마도 케라스에서 텐서플로우 부분만 떼어내서 들어가지 않을까 예상됩니다. tf.slim 은 contrib.laryercontrib.slim 에 있는 가장 널리 사용되는 텐서플로우 래퍼(wrapper) 중 하나입니다. 케라스가 포함되면 tf.slim과 함께 텐서플로우의 주요한 하이레벨 API 가 될 것 같습니다.

TensorFlow XLA with JIT Compilation

tf-jit

텐서플로우 XLA(Accelerated Linear Algebra)의 초기 버전이 얼마전 마스터 브랜치에 추가 되었습니다. XLA 는 텐서플로우 백서의 끝부분에 향후 과제로 언급된 성능향상을 위한 JIT 컴파일러에 대한 첫 결과물로 보입니다.

We also have a number of concrete directions to improve the performance of TensorFlow. One such direction is our initial work on a just-in-time compiler that
can take a subgraph of a TensorFlow execution, perhaps with some runtime profiling information about the typical sizes and shapes of tensors, and can generate an optimized routine for this subgraph.

텐서플로우 그래프가 JIT 컴파일 된다면 성능 향상은 물론 다양한 기기, 특히 모바일 기기에 손쉽게 구겨 넣을 수 있을 것으로 보입니다. 그리고 XLA를 지원하는 CPU, GPU 들도 나름 생태계를 만들어 가지 않을까 생각되네요. 이미 예상한 로드맵이라고는 하지만 혀를 내두르지 않을 수 없네요. 지난 NIPS에서 발표한 Jeff Dean의 XLA 자료도 함께 참고하세요.

TensorFlow 1.0.0 alpha Release

텐서플로우 1.0 알파 버전이 릴리즈 되었습니다. 지난번에 포스팅된 API 변화 내용 외에도 추가된 변경사항이 많이 있습니다. 아래는 추가적인 변경 사항 중 대표적인 몇가지 입니다.

  • 나눗셈과 나머지 계산이(/, //, %) 파이썬 2.x 스타일로 변경되었습니다. 즉 제수와 피제수 중 하나만 부동소수면 결과도 부동 소수 입니다(파이썬 3.x 은 제수, 피제수와 상관없이 부동 소수를 리턴합니다). tf.mod, tf.div 도 같은 맥락으로 변경되었으며 정수 결과를 얻기 위해서 tf.truncatemod, tf.truncatediv 를 사용할 수 있습니다.
  • tf.divide 가 현재 사용하고 있는 파이썬에 맞는 나눗셈을 합니다. 만약 파이썬 2 스타일을 원할 경우 tf.div 를, 파이썬 3 스타일로 나눗셈을 할 경우 tf.truediv 를 사용할 수 있습니다.
  • tf.multiply, tf.subtract, tf.negative 가 추가되고 tf.mul, tf.sub, tf.neg 는 deprecated 됩니다.
  • tf.scalar_summary, tf.histogram_summary 같은 summary 연산자가 삭제되고 tf.summary.scalar, tf.summary.histogram 이 추가 되었습니다.

이외에도 많은 버그와 수정사항이 포함되었습니다. 추가 기능으로 눈에 띠는 것은 커맨드라인 디버거(tfdbg)와 자바 API 입니다. tgdbg 는 인터렉티브한 쉘 환경을 사용해 텐서플로우 코드를 살필 수 있는 기능을 제공하는 것 같습니다. 자세한 내용은 커맨드라인 디버거 하우투 문서를 참고하세요(이 페이지의 이미지가 보이질 않네요). 자바 API는 아직 experiment 수준이지만 자바를 즐겨 쓰는 분들에게는 반가운 소식이 될 것 같습니다!

텐서플로우 1.0.0-alpha 버전을 설치하려면 pip 명령에 패키지를 직접 지정해야 합니다.

##### 파이선 2.7
# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0a0-cp27-none-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0a0-cp27-none-linux_x86_64.whl

# Mac OS X, CPU only, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0a0-py2-none-any.whl

# Mac OS X, GPU enabled, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0a0-py2-none-any.whl

##### 파이썬 3.x
# Ubuntu/Linux 64-bit, CPU only, Python 3.4
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0a0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 8.0 and CuDNN v5.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0a0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.5
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0a0-cp35-cp35m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 8.0 and CuDNN v5.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0a0-cp35-cp35m-linux_x86_64.whl

# Mac OS X, CPU only, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0a0-py3-none-any.whl

# Mac OS X, GPU enabled, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0a0-py3-none-any.whl

# 설치
$ sudo pip install --upgrade $TF_BINARY_URL

Windows CPU:

C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0a0-cp35-cp35m-win_amd64.whl

Windows GPU:

C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0a0-cp35-cp35m-win_amd64.whl

TensorDebugger(TDB): Visual Debugger for TF

tdb

텐서플로우의 모델을 실시간으로 확인할 수 있는 파이썬 라이브러리인 텐서디버거(TensorDebugger,TDB)가 공개되었습니다. 이 라이브러리는 구글 브레인팀의 엔지니어인 에릭 장(Eric Jang)이 개발한 것으로 텐서플로우의 공식 레파지토리에 들어가 있지는 않습니다. 스샷에서 볼 수 있듯이 주피터 노트북과 연동하여 사용할 수도 있습니다. MNIST 데이터를 사용한 예제도 제공하고 있습니다.

주요한 명령은 sess.run 과 같은 역할이나 브레이크 포인트와 데이터 플로팅을 위한 tdb.debug 와 데이터 플로팅 노드를 만들어 주는 tdb.plot_op 입니다. 자세한 내용은 깃허브와 예제를 참고해 주세요. 텐서디버거의 최대 장점은 아마도 실시간으로 뉴럴 네트워크를 돌리면서 원하는 값들을 비주얼하게 볼 수 있다는 점입니다.

텐서디버거는 pip 를 사용하여 설치할 수 있습니다.

pip install tfdebugger

주피터 노트북을 위한 확장은 파이썬 쉘에서 아래 명령을 사용하여 설치합니다.

import notebook.nbextensions
import urllib
import zipfile
SOURCE_URL = 'https://github.com/ericjang/tdb/releases/download/tdb_ext_v0.1/tdb_ext.zip'
urllib.urlretrieve(SOURCE_URL, 'tdb_ext.zip')
with zipfile.ZipFile('tdb_ext.zip', "r") as z:
    z.extractall("")
notebook.nbextensions.install_nbextension('tdb_ext',user=True)

TensorFlow API Changes

텐서플로우 v0.12 버전이 릴리즈되면서 파이썬 API 가 일부 변경되었습니다. 혼돈을 줄 수 있는 것들을 바로 잡고 또 가능하면 NumPy 와 일관성을 가지게 하려는 것 같습니다. 이런 API 변경은 앞으로도 조금 더 발생할 수 있을 것으로 예상됩니다. 아직 1.0 버전이 언제 나올지 알 수는 없지만 1.0 이후에는 하위 버전 호환성에 대해 더 엄격하게 관리할 것이라 합니다. 관련된 내용은 구글 그룹스에 올린 구글 브레인팀의 애드류 셀(Andrew Selle)의 포스팅과 텐서플로우 깃허브의 릴리즈 노트의 ‘Breaking Changes to the API’ 섹션을 참고하세요.

  • tf.pack / tf.unpack –> tf.stack / tf.unstack
    • v0.12: stack/unstack 추가, pack/unpack 은 stack/unstack 을 단순 wrapping
    • master: pack/unpack 에 deprecated 메세지 추가
  • tf.concat(concat_dim, values) –> tf.concat_v2(values, axis)
    • v0.12: concat_v2 추가
    • master: concat 에 deprecated 메세지 추가
  • tf.split(split_dim, num_splits, value) –> tf.split(value, num_or_size_splits, axis)
    • v0.12: split_v(value, size_splits, split_dim) 추가
    • master: split(value, num_or_size_splits, axis) 로 변경
  • tf.sparse_split(split_dim, num_split, sp_input) –> tf.sparse_split(sp_input, num_split, axis)
    • master: sparse_split(sp_input, num_split, axis) 로 변경
  • tf.reverse(tensor, dims) –> tf.reverse(tensor, axis)
    • v0.12: reverse_v2(tensor, axis) 추가
    • master: reverse 가 바뀌고, v1.0 이후 reverse_v2 가 deprecated 될 예정
  • tf.round –> banker’s rounding
    • v0.12: 파이썬의 banker’s rounding 으로 변경, 짝수로 반올림/내림
  • dimension, dim, ~indices, ~dim, ~axes 키워드 파라미터 –> axis 로 통일
    • v0.12: 기존 파라미터와 axis 모두 유지, 향후 기존 파라미터 삭제 예정
    • tf.argmax: dimension –> axis
      tf.argmin: dimension –> axis
      tf.count_nonzero: reduction_indices –> axis
      tf.expand_dims: dim –> axis
      tf.reduce_all: reduction_indices –> axis
      tf.reduce_any: reduction_indices –> axis
      tf.reduce_join: reduction_indices –> axis
      tf.reduce_logsumexp: reduction_indices –> axis
      tf.reduce_max: reduction_indices –> axis
      tf.reduce_mean: reduction_indices –> axis
      tf.reduce_min: reduction_indices –> axis
      tf.reduce_prod: reduction_indices –> axis
      tf.reduce_sum: reduction_indices –> axis
      tf.reverse_sequence: batch_dim –> batch_axis, seq_dim –> seq_axis
      tf.sparse_concat: concat_dim –> axis
      tf.sparse_reduce_sum: reduction_axes –> axis
      tf.sparse_reduce_sum_sparse: reduction_axes –> axis
      tf.sparse_split: split_dim –> axis
  • tf.listdiff –> tf.setdiff1d
    • v0.12: setdiff1d 추가
    • master: listdiff 에 deprecated 메세지 추가
  • tf.select –> tf.where
    • v0.12: where 추가
    • master: select 삭제
  • tf.inv –> tf.reciprocal
    • v0.12: inv –> reciprocal 이름 변경
  • tf.SparseTensor.shape –> tf.SparseTensor.dense_shape
    • master: shape –> dense_shape 이름변경
  • tf.SparseTensorValue.shape –> tf.SparseTensorValue.dense_shape
    • master: shape –> dense_shape 이름 변경
  • all_variables –> global_variables , initialize_all_variables -> global_variables_initializer , initialize_local_variables -> local_variables_initializer
    • v0.12: 이름 변경 및 deprecated 메세지 추가
  • zeros_initializer –> 함수 리턴으로 변경
    • master: ones_initializer 와 동일한 리턴 형식으로 변경

이 외에도 tf.nn.sparse_softmax_cross_entropy_with_logits, tf.nn.softmax_cross_entropy_with_logits, tf.nn.sigmoid_cross_entropy_with_logits 의 파라미터 순서가 바뀔 예정이라고 합니다.(아마도 널리 통용되는 크로스 엔트로피 공식의 기호와 순서가 반대여서 그런 것 같습니다)

(업데이트)

  • v0.12: TensorFlowEstimator() 가 삭제되었습니다. 대신 Estimator() 가 권장됩니다.

TensorFlow v0.12 Release

(업데이트) 지난 주에 0.12.1 버전이 릴리즈 되었습니다. 이 버전의 수정 내용은 프로토콜버퍼(protobuf)의 요구 버전이 3.1 에서 3.1 이상으로 변경된 것 이외에는 대부분 문서의 내용을 수정한 것입니다.

텐서플로우 0.12 버전이 정식 릴리즈 되었습니다. 0.12 버전부터는 윈도우즈에 대한 지원(Windows 10, Windows 7, and Windows Server 2016 에서 테스트)과 Go 언어 지원, 텐서보드에서 임베딩 시각화 등이 추가되었습니다. 그리고 tf.train.Saver의 체크포인트 파일 포맷이 V2 로 업그레이드 되었습니다. 자세한 내용은 릴리즈 노트를 참고하세요.

텐서플로우 0.12RC1 버전 부터 리눅스, 맥, 윈도우에서 모두 pip 설치를 지원하고 있습니다.

맥, 리눅스, 윈도우즈(아나콘다 권장) CPU 버전

$ pip install tensorflow

맥, 리눅스, 윈도우즈(아나콘다 권장) GPU 버전

$ pip install tensorflow-gpu

다만 현재 0.12 버전은 아직 PyPI 에 등록되지 않았습니다(현재는 PyPI에 등록되어 있어 pip 로 설치할 수 있습니다). 아마 몇일 내로 등록될 것 같지만 당장 0.12 버전으로 업그레이드하시려면 wheel 패키지를 지정해서 설치해야 합니다.

# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0-cp27-none-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0-cp27-none-linux_x86_64.whl

# Mac OS X, CPU only, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py2-none-any.whl

# Mac OS X, GPU enabled, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0-py2-none-any.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.4
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.5
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0-cp35-cp35m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0-cp35-cp35m-linux_x86_64.whl

# Mac OS X, CPU only, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py3-none-any.whl

# Mac OS X, GPU enabled, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0-py3-none-any.whl

pip 명령은 아래와 같습니다.

$ sudo pip install --upgrade $TF_BINARY_URL

윈도우즈는 아래 명령을 참고하세요.

# CPU Only
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.0-cp35-cp35m-win_amd64.whl

# GPU enabled
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.0-cp35-cp35m-win_amd64.whl

TensorFlow v0.12.0 RC1

텐서플로우 v0.12 RC1 버전이 등록되었습니다. 버그 수정이 포함되어 있으므로 RC0 버전을 쓰고 계셨다면 업데이트 하시면 좋을 것 같습니다.

텐서플로우 RC1 버전 부터는 리눅스, 맥, 윈도우의 텐서플로우 CPU, GPU 버전을 모두 pip 로 손쉽게 설치할 수 있습니다.

맥, 리눅스, 윈도우즈(아나콘다 권장) CPU 버전

$ pip install tensorflow

맥, 리눅스, 윈도우즈(아나콘다 권장) GPU 버전

$ pip install tensorflow-gpu

TensorFlow Dev Summit 개최

구글이 첫 텐서플로우 Dev Summit 을 2017년 2월 15일 캘리포니아 마운틴뷰에서 개최한다고 발표하였습니다. 직접 참여는 하지 못하더라도 전 세계 각 지역의 라이브 스트림(live stream) 이벤트에 참여하거나 집에서 라이브 스트림을 시청할 수도 있습니다. 물론 직접 갈 수 있다면 더할 나위 없겠죠! Dev Summit 은 여기서 신청할 수 있습니다. 서울에서도 라이브 스트림 이벤트가 열릴 수 있도록 많이 요청해 주세요! 🙂

TensorBoard support Embedding Visualization

 

텐서플로우 0.12 버전의 텐서보드에서 임베딩 벡터를 시각화하는 기능이 추가되었습니다. 와우! 좀 더 자세한 내용은 텐서플로우 임베딩 비주얼라이제이션 하우투를 참고하세요.