카테고리 보관물: TensorFlow

TensorFlow nightly 2.0 preview

텐서플로 2.0 RC 버전이 언제 등장할지 아직 모르지만 맛보기는 가능합니다. 텐서플로 2.0 preview 버전이 pip로 제공되고 있습니다. 아쉽지만 리눅스 버전만 있습니다.

$ pip install tf-nightly-2.0-preview
$ pip install tf-nightly-gpu-2.0-preview

이 프리뷰는 현재 마스터 브랜치를 기반으로 빌드된 것 같습니다. 이전에 공지된 대로 tf.Session() 등이 tf.compat.v1 아래로 이동되고 즉시 실행(eager execution)이 기본으로 활성화됩니다.

텐서플로 2.0 방식을 적용한 MNIST 예제 노트북은 여기를 참고하세요. 이 노트북은 즉시 실행 튜토리얼과 많이 비슷한 것 같습니다. 또한 2.0 마이그레이션 스크립트를 참고하면 변경될 모습을 미리 가늠해 볼 수 있습니다. 🙂

(업데이트) 미디엄(Medium)에 텐서플로 2.0에 대한 포스팅이 올라왔습니다. 조만간 RC 버전이 릴리즈될 것 같네요. 이 글을 보면 이전에 언급한 대로 기존의 다양한 연산들이 케라스 API로 통일된다는 것을 알 수 있습니다. 케라스 API를 사용하는 방법은 Sequential 클래스나 Model 클래스입니다. 또한 tf.GradientTape() 함수를 사용하여 직접 그래디언트를 업데이트할 수도 있습니다. 다행히 Estimators는 구현이 바뀌겠지만 API는 유지된다고 하네요.

앞으로는 텐서플로를 배우려면 케라스를 배워야 합니다. 당연하지만 케라스를 배우는 가장 좋은 방법은 제가 번역한 <케라스 창시자에게 배우는 딥러닝> 책이죠! 🙂

TensorFlow 1.12.0 Release

텐서플로 1.12.0 버전이 릴리스되었습니다. 케라스 모델이 SavedModel 포맷(via tf.contrib.saved_model.save_keras_model())과 tf.data.Dataset을 지원합니다.

텐서플로 1.12.0 버전은 pip 명령으로 손쉽게 설치할 수 있습니다. 파이썬 2.7, 3.3, 3.4(이상 윈도우즈 제외), 3.5, 3.6 버전을 지원합니다.

$ pip install --upgrade tensorflow
$ pip install --upgrade tensorflow-gpu

CPU 사용자를 위한 conda 텐서플로 패키지는 아직 1.12.0 버전이 준비되지 않았습니다. 🙂

pip install tensorflow vs conda install tensorflow

tensorflowtraining

아나콘나(Anaconda)의 텐서플로가 1.9.0 버전부터 MKL-DNN 라이브러리를 사용하여 패키징되었습니다. 이 때문에 pip에 등록된 텐서플로 패키지보다 몇 배 빠르다고 합니다(미디엄 포스트, 아나콘다 블로그). 물론 CPU를 사용할 경우에 국한된 이야기입니다. 아나콘다에 포함된 파이썬 과학 패키지들이 MKL 라이브러리의 덕을 보는데요. 이제 텐서플로도 해당되는 것 같습니다. 앞으로는 CPU 텐서플로 설치 안내에 꼭 아나콘다도 포함해야 겠네요. 🙂

TensorFlow 1.12.0 RC0 Release

텐서플로 1.12.0 RC0 버전이 릴리스되었습니다. 1.11.0 버전이 나온지 한달도 되지 않았는데 정말 빠르네요. 심지어 1.11.0 버전에 맞추어 재실행한 <핸즈온 머신러닝> 주피터 노트북을 아직 커밋하기도 전입니다. 🙂

케라스 모델을 SavedModel 포맷으로 저장할 수 있어(via tf.contrib.saved_model.save_keras_model()) 텐서플로 서빙에 사용할 수 있는 점이 눈에 띄입니다. 텐서플로 1.12.0 RC0 버전은 pip 명령으로 손쉽게 설치할 수 있습니다. 파이썬 2.7(윈도우즈제외), 3.5, 3.6 버전을 지원합니다.

$ pip install --upgrade tensorflow
$ pip install --upgrade tensorflow-gpu

사이킷런 0.20 버전은 몇몇 버그를 수정한 0.20.1 버전이 릴리스될 것 같습니다. 🙂

(업데이트) 텐서플로 1.12.0 RC1 버전이 릴리스되었습니다.

(업데이트) 텐서플로 1.12.0 RC2 버전이 릴리스되었습니다.

Tensorflow 1.11.0 & Scikit-Learn 0.20.0 Release

텐서플로 1.11.0사이킷런 0.20.0 버전이 릴리즈되었습니다.

텐서플로 1.11.0부터는 cudnn 7.2 버전으로 패키징이 되어 있습니다. cudnn은 NVIDIA 개발자 사이트에서 다운로드 받을 수 있습니다. CUDA 9.0과 cudnn 7.3 버전에서 정상 작동됩니다. 텐서플로는 pip 명령으로 설치할 수 있습니다. 파이썬 2.7(윈도우즈제외), 3.5, 3.6 버전을 지원합니다.

$ pip install --upgrade tensorflow
$ pip install --upgrade tensorflow-gpu

사이킷런 0.20.0은 pipconda를 사용하여 설치할 수 있습니다.

$ conda update scikit-learn
$ pip install --upgrade scikit-learn

TensorFlow 1.11.0 RC0 Release

텐서플로 1.11.0 RC0 버전이 릴리즈되었습니다. 1.11.0 버전부터는 cudnn 7.2 이상을 설치해야 합니다. 1.11.0에서 바뀐 자세한 내용은 릴리즈 노트를 참고해 주세요.

텐서플로 1.11.0 RC0 버전은 pip를 사용해 설치할 수 있습니다.

$ pip install --upgrade --pre tensorflow
$ pip install --upgrade --pre tensorflow-gpu

(업데이트) 1.11.0 RC1 버전이 릴리즈되었습니다.

(업데이트) 1.11.0 RC2 버전이 릴리즈되었습니다.

핸즈온 머신러닝 주피터 노트북 업데이트 안내

핸즈온 머신러닝의 원서 주피터 노트북이 조금 업데이트되었습니다. 변경된 내용을 번역서의 깃허브에도 반영하였습니다. 다음은 변경된 상세 내용입니다.

  • 14_recurrent_neural_networks.ipynb
    • 레버(Reber) 문법 연습문제에서 my_reber_classifier의 경로를 변경하고 추정 확률을 퍼센트로 나타냅니다.
      with tf.Session() as sess:
      saver.restore(sess, "my_reber_classifier")
      y_proba_val = y_proba.eval(feed_dict={X: X_test, seq_length: l_test})
      
      print()
      print("레버 문자열일 추정 확률:")
      for index, string in enumerate(test_strings):
      print("{}: {:.2f}%".format(string, y_proba_val[index][0]))

      을 다음으로 변경합니다.

      with tf.Session() as sess:
      saver.restore(sess, "./my_reber_classifier")
      y_proba_val = y_proba.eval(feed_dict={X: X_test, seq_length: l_test})
      
      print()
      print("레버 문자열일 추정 확률:")
      for index, string in enumerate(test_strings):
      print("{}: {:.2f}%".format(string, 100 * y_proba_val[index][0]))
  • 02_end_to_end_machine_learning_project.ipynb
    • 사이킷런의 0.20 버전에 포함될 ColumnTransformer를 사용하면 책의 예제에서처럼 DataFrameSelectorFeatureUnion을 사용하지 않고 간단히 전체 파이프라인을 만들 수 있습니다. 아직 사이킷런 0.20 버전이 릴리스되기 전이므로 여기서는 future_encoders.pyColumnTransformer를 넣어 놓고 사용합니다.
      from future_encoders import ColumnTransformer
      
      num_attribs = list(housing_num)
      cat_attribs = ["ocean_proximity"]
      
      full_pipeline = ColumnTransformer([
      ("num", num_pipeline, num_attribs),
      ("cat", OneHotEncoder(), cat_attribs),
      ])
      
      housing_prepared = full_pipeline.fit_transform(housing)
      housing_prepared
  • 11_deep_learning.ipynb
    • 텐서플로 모델 재사용하기에서 노드 이름 수정
      hidden3 = tf.get_default_graph().get_tensor_by_name("dnn/hidden4/Relu:0")

      을 다음으로 변경합니다.

      hidden3 = tf.get_default_graph().get_tensor_by_name("dnn/hidden3/Relu:0")
  • 11_deep_learning_exercises.ipynb
    • 불필요한 변수 초기화 루틴 삭제
      for var in output_layer_vars: 
          var.initializer.run()
  • extra_tensorflow_reproducibility.ipynb 파일 추가

감사합니다! 🙂

TensorFlow 1.10.0 Release

텐서플로 1.10.0 버전이 릴리즈되었습니다. tf.math 하위에 수학 함수들이 정리되었고 라즈베리파이를 위한 설치 문서가 추가되었습니다. 최근 넘파이(Numpy) 1.15.0 버전이 릴리즈되었지만 텐서플로 1.10 버전은 넘파이 1.14.5까지만 지원합니다.

텐서플로 1.10 버전은 pip를 사용해 설치할 수 있습니다. 아직 파이썬 3.7 버전의 빌드는 제공하지 않습니다.

$ pip install --upgrade tensorflow
$ pip install --upgrade tensorflow-gpu

TensorFlow 1.10.0 RC0 Release

텐서플로 1.10 RC 버전이 릴리즈되었습니다. 1.9버전이 나온지 정말 며칠되지 않았는데 말이죠. 1.10버전부터 NVIDIA NCCL 2.2 버전을 사용합니다. 2개 이상의 GPU를 사용하는 경우 NCCL 라이브러리를 업데이트해야 합니다. 텐서플로 1.10 RC 버전은 pip 명령을 사용해 설치할 수 있습니다.

$ pip install --upgrade --pre tensorflow
$ pip install --upgrade --pre tensorflow-gpu

(업데이트) RC1 버전이 릴리즈되었습니다.

사이킷런도 0.20 버전을 준비중입니다. 아마 가을에는 릴리즈되지 않을까 생각됩니다.

최근 사이킷런에서 리팩토링된 코드 중에서 습관적으로 사용하던 np.ones(), np.zeros()np.full()로 바꾼 것이 눈에 띄입니다. 무심코 다음처럼 비효율적인 코드를 쓰게 됩니다.

np.ones((3,2)) * -1

다음과 같이 쓰는게 훨씬 직관적이고 효율적입니다. 🙂

np.full((3,2), -1.)

TensorFlow 1.9 Release

텐서플로 1.9 버전이 릴리즈되었습니다. tf.keras가 케라스 2.1.6 버전 스펙으로 업데이트되었습니다. 텐서플로의 튜토리얼도 케라스 기반으로 바뀌었네요. 텐서플로는 pip 로 손쉽게 설치할 수 있습니다. PyPI에 파이썬 3.6 버전의 리눅스용 휠wheel이 빠져 있습니다. 깃허브에 이슈가 등록되었으니 하루, 이틀 정도면 추가될 것 같습니다. “핸즈온 머신러닝”의 주피터 노트북도 모두 텐서플로 1.9에서 테스트하고 바뀌는 내용을 안내해 드리겠습니다.

$ pip install --upgrade --pre tensorflow
$ pip install --upgrade --pre tensorflow-gpu

(업데이트) 파이썬 3.6 버전의 리눅스 휠이 추가되었습니다.