텐서플로우 2.0 베타를 설치해보고 간단한 예제를 실행시켜 봅니다. 



최초 작성 2019. 7. 14




다음 명령으로 Tensorflow 2.0 Beta  패키지를 설치합니다.

글 작성시점에서는 아직 정식 버전이 아닙니다.

 

pip install tensorflow==2.0.0-beta1



글 작성 시점과 최신 버전이 다를 수 있습니다. 

최신 버전은 아래 링크에서 확인하세요.

https://www.tensorflow.org/beta/




다음처럼 명령 프롬프트 창에서 설치한 Tensorflow 버전을 확인합니다.

 

C:\Users\webnautes>python

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow as tf

>>> tf.__version__

'2.0.0-beta1'




간단한 케라스(keras) 예제를 실행시켜 봅니다.

 

import tensorflow as tf



# MNIST 데이터 세트를 가져옵니다. 

mnist = tf.keras.datasets.mnist

 

(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0



# 뉴럴 네트워크 모델을 생성합니다. 

model = tf.keras.models.Sequential([

  tf.keras.layers.Flatten(input_shape=(28, 28)),

  tf.keras.layers.Dense(128, activation='relu'),

  tf.keras.layers.Dropout(0.2),

  tf.keras.layers.Dense(10, activation='softmax')

])



# 학습을 위한 optimizer와 loss function을 선택합니다. 

model.compile(optimizer='adam',

              loss='sparse_categorical_crossentropy',

              metrics=['accuracy'])



# 학습 데이터 세트를 사용하여 모델을 학습시킵니다. 5번 반복합니다. 

model.fit(x_train, y_train, epochs=5)

 

# 테스트 데이터 세트를 사용하여 모델을 평가합니다. 

model.evaluate(x_test, y_test)

 

import tensorflow as tf




# MNIST 데이터 세트를 가져옵니다. 

mnist = tf.keras.datasets.mnist



(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0




# 뉴럴 네트워크 모델을 생성합니다. 

model = tf.keras.models.Sequential([

  tf.keras.layers.Flatten(input_shape=(28, 28)),

  tf.keras.layers.Dense(128, activation='relu'),

  tf.keras.layers.Dropout(0.2),

  tf.keras.layers.Dense(10, activation='softmax')

])




# 학습을 위한 optimizer와 loss function을 선택합니다. 

model.compile(optimizer='adam',

              loss='sparse_categorical_crossentropy',

              metrics=['accuracy'])




# 학습 데이터 세트를 사용하여 모델을 학습시킵니다. 5번 반복합니다. 

model.fit(x_train, y_train, epochs=5)



# 테스트 데이터 세트를 사용하여 모델을 평가합니다. 

model.evaluate(x_test, y_test)



 

다음과 같은 결과가 출력됩니다.

 

 

# 다운로드된 MNIST 데이터는 다음 경로에 저장됩니다. 

# C:\Users\사용자이름\.keras\datasets

 

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz

 

    8192/11490434 [..............................] - ETA: 1s

   49152/11490434 [..............................] - ETA: 11s

  114688/11490434 [..............................] - ETA: 10s

  286720/11490434 [..............................] - ETA: 5s 

 

1395072/11490434 [============================>.] - ETA: 0s

11419648/11490434 [============================>.] - ETA: 0s

11452416/11490434 [============================>.] - ETA: 0s

11493376/11490434 [==============================] - 18s 2us/step



# pip로 설치한 Tensorflow 패키지는 사용중인 CPU에 최적화 되어 있지 않기에 

# 다음과 같은 메시지가 보입니다.

2019-07-14 16:38:57.771420: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

 

# 도태 예정(deprecated)인 API가 있다는 메시지입니다. 

WARNING: Logging before flag parsing goes to stderr.

W0714 16:38:57.949635  4612 deprecation.py:323] From C:\Users\webnautes\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow\python\ops\math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.

Instructions for updating:

Use tf.where in 2.0, which has the same broadcast rule as np.where



# 60,000개의 학습데이터 세트 샘플에 대해 5번 학습이 반복됩니다. 

# 손실과 정확도를 출력합니다. 

Train on 60000 samples

Epoch 1/5

 

   32/60000 [..............................] - ETA: 3:38 - loss: 2.4668 - accuracy: 0.0625

  768/60000 [..............................] - ETA: 12s - loss: 1.7727 - accuracy: 0.4609 

 1376/60000 [..............................] - ETA: 9s - loss: 1.4391 - accuracy: 0.5719 

    . . . . . .  생략 . . . . . . 

59168/60000 [============================>.] - ETA: 0s - loss: 0.2967 - accuracy: 0.9137

59488/60000 [============================>.] - ETA: 0s - loss: 0.2962 - accuracy: 0.9138

59776/60000 [============================>.] - ETA: 0s - loss: 0.2955 - accuracy: 0.9141

60000/60000 [==============================] - 7s 117us/sample - loss: 0.2951 - accuracy: 0.9142

 

Epoch 2/5

 

   32/60000 [..............................] - ETA: 21s - loss: 0.3017 - accuracy: 0.9375

  416/60000 [..............................] - ETA: 9s - loss: 0.1537 - accuracy: 0.9495 

  832/60000 [..............................] - ETA: 8s - loss: 0.1245 - accuracy: 0.9627

    . . . . . .  생략 . . . . . . 

 59616/60000 [============================>.] - ETA: 0s - loss: 0.1412 - accuracy: 0.9579

59936/60000 [============================>.] - ETA: 0s - loss: 0.1411 - accuracy: 0.9580

60000/60000 [==============================] - 9s 143us/sample - loss: 0.1411 - accuracy: 0.9580

 

    . . . . . .  생략 . . . . . . 

 

Epoch 5/5

 

   32/60000 [..............................] - ETA: 22s - loss: 0.1479 - accuracy: 0.9375

  384/60000 [..............................] - ETA: 10s - loss: 0.1167 - accuracy: 0.9688

  800/60000 [..............................] - ETA: 8s - loss: 0.0890 - accuracy: 0.9775 

    . . . . . .  생략 . . . . . .  

59136/60000 [============================>.] - ETA: 0s - loss: 0.0747 - accuracy: 0.9764

59488/60000 [============================>.] - ETA: 0s - loss: 0.0746 - accuracy: 0.9764

59872/60000 [============================>.] - ETA: 0s - loss: 0.0744 - accuracy: 0.9765

60000/60000 [==============================] - 9s 144us/sample - loss: 0.0744 - accuracy: 0.9765



# 10,000개의 테스트 세트 샘플에 대해 손실과 정확도를 계산합니다. 

 

   32/10000 [..............................] - ETA: 28s - loss: 0.0210 - accuracy: 1.0000

  736/10000 [=>............................] - ETA: 1s - loss: 0.0598 - accuracy: 0.9851 

 1504/10000 [===>..........................] - ETA: 1s - loss: 0.0854 - accuracy: 0.9767

 2048/10000 [=====>........................] - ETA: 0s - loss: 0.0929 - accuracy: 0.9736

 2752/10000 [=======>......................] - ETA: 0s - loss: 0.0957 - accuracy: 0.9738

 3392/10000 [=========>....................] - ETA: 0s - loss: 0.0900 - accuracy: 0.9752

 4064/10000 [===========>..................] - ETA: 0s - loss: 0.0941 - accuracy: 0.9732

 4576/10000 [============>.................] - ETA: 0s - loss: 0.0943 - accuracy: 0.9720

 5120/10000 [==============>...............] - ETA: 0s - loss: 0.0905 - accuracy: 0.9729

 5888/10000 [================>.............] - ETA: 0s - loss: 0.0832 - accuracy: 0.9750

 6624/10000 [==================>...........] - ETA: 0s - loss: 0.0820 - accuracy: 0.9755

 7424/10000 [=====================>........] - ETA: 0s - loss: 0.0758 - accuracy: 0.9771

 8224/10000 [=======================>......] - ETA: 0s - loss: 0.0704 - accuracy: 0.9787

 9024/10000 [==========================>...] - ETA: 0s - loss: 0.0669 - accuracy: 0.9798

 9888/10000 [============================>.] - ETA: 0s - loss: 0.0671 - accuracy: 0.9797

10000/10000 [==============================] - 1s 91us/sample - loss: 0.0670 - accuracy: 0.9797





참고

 

Get started with TensorFlow 2.0 for beginners

https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/r2/tutorials/quickstart/beginner.ipynb










포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

유튜브 구독하기

  1. 김종석 2019.10.04 13:51

    1.0으로 작성된 코드 실행 하면 에러 나는데..
    tf_upgrade_v2로 컨버팅해도 에러 납니다.
    tensorflow 2.0 변경 시 특별히 고려 사항이 있으면 부탁합니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.04 14:17 신고

      2.x에서 Eager execution이 디폴트이지만 아직은 1.x 코드도 사용가능한 듯합니다.

      1.x에서 사용하던 함수 이름이 바뀐게 있어서 에러나는 메시지를 구글에서 검색해보면서 해결하는게 좋을 듯합니다.

      또는 아래 링크도 확인해보세요

      https://www.tensorflow.org/guide/migrate

    • 2019.11.15 23:24



      지금 이거저거 해보는 중인데
      일단 그대로 큰 변경없이 실행하려면

      1. 바로 실행을 disable시키기
      tf.compat.v1.disable_eager_execution()

      2. 어지간한건 compat.v1 추가.
      ex) tf.placeholder -> tf.compat.v1.placeholder

      3. contrib slim 등은 폐기됨.
      그래서 대안으로 쓸 게 있는지 검색해보고 없으면 직접 구현해야함.
      예를들어
      tf.contrib.rnn.BasicLSTMCell -> tf.compat.v1.nn.rnn_cell.BasicLSTMCell
      은 가능한데
      tf.contrib.layers.fully_connected -> ???
      ... 이건 그냥 없음. 그래서 그냥 직접 변수설정하고 처리해버림. ㅠㅠ


      완전히 그냥 케라스 전용임.
      문제는 같은 기능의 코드인데 더 느리고 성능 열악해짐. ㅠㅠ
      속도가 크게 느린데다 학습률 같은데도 정확도가 덜 올라감. 이상함. ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.11.16 18:08 신고

      댓글 감사합니다. 1.x는 이제 지원이 안될듯합니다.

  2. 이종완 2020.01.03 16:39

    anaconda설치후 텐서플로 2.0을 설치하였습니다 이후 Kera를 설치하는중 텐서플로를 강제로 1.15로 다운그레이드하더군요
    우째 이런 일리 생길까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.01.03 20:56 신고

      파이썬 2.0에 케라스가 포함되어 있습니다.

      tensorflow.keras 아래에 위치합니다.

+ Recent posts