예전에 아나콘다에 텐서플로우를 설치하는 방법을 올렸었는데 Tensorflow2를 사용하기 위해 다시 설치를 해보았습니다.  예전에는 텐서플로우가 사용하는 python과 아나콘다에서 사용하는 파이썬 버전을 맞추기 위하여 다운로드 사이트를 찾아 다녔지만 이제는 그냥 각각 최신 버전을 다운받아서 설치해도 되기 때문에 작업이 수월해 졌습니다.

 

anaconda tensorflow2 install


TensorFlow 사이트에 가보면

https://www.tensorflow.org/install


anaconda tensorflow2 install


Python 3.5 부터 3.8을 지원하고 있습니다.

 

아나콘다 사이트에 가면


anaconda tensorflow2 install


최신 버전이 Python 3.8을 지원하고 있습니다설치 방법은 단순해서 설명을 하지 않아도 될 정도이지만 간단하게 진행해 보겠습니다.

 

1. Anaconda 설치

 

아나콘다에서 자신의 컴퓨터에 적합한 파일을 다운로드 받습니다.

https://www.anaconda.com/products/individual

컴퓨터 시스템 종류는 단축키를 이용할 때는 [윈도우 키 + Pause ]를 누르거나 [바탕화면 내PC에서 마우스 우측 버튼 > 속성] 또는 [파일 탐색기 컴퓨터에서 마우스 우측버튼 > 속성]을 선택하면 시스템 정보에서 확인 가능 합니다.

저는 64-Bit Graphical Installer를 다운로드 받았습니다아나콘다는 다운받은 파일을 실행해서 그냥 [Next] 버튼만 눌러주면 설치가 완료 됩니다한번 볼까요?


anaconda tensorflow2 install


[Next] 버튼을 클릭 합니다.


anaconda tensorflow2 install




anaconda tensorflow2 install


이런 틀렸네요. [I Agree] 버튼을 클릭 합니다.


anaconda tensorflow2 install


[Next] 버튼을 클릭 합니다.. 저는 기본설정이 아닌 C:\anaconda3에 설치를 했습니다.


anaconda tensorflow2 install


[Next] 버튼을 클릭 합니다.


anaconda tensorflow2 install


[Next] 버튼을 클릭 합니다.


anaconda tensorflow2 install


[Next] 버튼을 클릭 합니다.


anaconda tensorflow2 install


[Next] 버튼을 클릭 합니다.


anaconda tensorflow2 install


설치 작업이 완료 되었습니다. [Finish] 버튼을 클릭 합니다.


설치가 잘 되었는지 확인해 봅니다.


anaconda tensorflow2 install


Anaconda Prompt를 선택하여 콘솔모드에서 python 버전을 확인합니다.


pthon -V


anaconda tensorflow2 install


설치가 잘 되었습니다.

 


2. TensorFlow 2 설치


 

텐서플로우는 아나콘다에서 파이썬 버전을 확인 했던 Anaconda Prompt에서 진행을 합니다.



1) 먼저 pip을 업그레이드 해줍니다.


pip install –upgrade pip


anaconda tensorflow2 install


2) 가상환경 생성

 

가상환경 또는 프로젝트을 생성 한다고도 하는데 아나콘다에 텐서플로우만 사용하는 공간을 생성해주는 명령어 입니다물론 tensorflow 말고 다른 단어를 사용해도 됩니다. 뒤에 사용하려는 파이썬 버전을 기입해서 선택해도 됩니다.

 

conda create -n tensorflow pip python=3.8


anaconda tensorflow2 install


anaconda tensorflow2 install


중간에 진행 할거냐고 물어보는데 y를 입력하고 엔터 키.

이제부터 실제 텐서플로우 설치 작업이 시작 되는데 모두 동일한 방법이어서 화면 캡처 없이 명령어만 나열해 보았습니다순서대로 입력하고 엔터키를 누르면 됩니다.

 

3) 가상환경으로 이동


새로 만든 tensorflow라는 가상환경을 활성화 해줍니다.

 

conda activate tensorflow

 

4) 텐서플로우 설치


CPU 버전인 경우

pip install --ignore-installed --upgrade tensorflow-cpu

 

GPU 버전인 경우

pip install --ignore-installed --upgrade tensorflow-gpu

 

여기까지 진행 하면 설치가 완료 됩니다.

텐서플로우 사이트에 가면 CPUGPU가 통합된 버전을 설치하라고 되어 있습니다.

 

# Requires the latest pip
pip install --upgrade pip

# Current stable release for CPU and GPU
pip install tensorflow

# Or try the preview build (unstable)
pip install tf-nightly

 

 

3. 설치 테스트


설치가 끝났으니 테스트를 진행합니다먼저 Tensorflow2에서는 Session(), print()에서 오류가 발생 하는데 명령어가 변경이 되었다고 하니 찾아보면 됩니다그 이외에도 AVX2, XLA관련 오류도 발생 하는데 무시 하거나 소스를 가져와 컴파일 하면 됩니다.


anaconda tensorflow2 install

 

(tensorflow) C:\>python

Python 3.8.5 (default, Sep  3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32

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

>>> import tensorflow as tf

>>> with tf.compat.v1.Session() as sess:

...   hello = tf.constant("Hello World!")

...   print(sess.run(hello))

...

2020-10-01 01:15:02.895615: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU instructions in performance-critical operations:  AVX2

To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.

2020-10-01 01:15:02.941595: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x21879054d00 initialized for platform Host (this does not guarantee that XLA will be used). Devices:

2020-10-01 01:15:02.957403: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version

b'Hello World!'

>>> 

 

오류 때문에 뭘 하고 있는지 화가 난다면 편안하게 jupyter를 사용 합니다.

 

import tensorflow as tf

 

hello = tf.constant("Hello World!")

tf.print(hello)

 

보면 알겠지만 가능하면 Session()은 사용하지 말고 print()tf에서 사용해 줍니다.


anaconda tensorflow2 install


소스가 간단해 지고 가독성도 좋아진것 같습니다.


- copy coding -


TensorFlow 1.6부터 바이너리는 이전 CPU에서 실행되지 않을 수 있는 AVX 명령어를 사용합니다.

텐서플로우 사이트 설치 페이지에 가면 나오는 문장 입니다.  CPUAVX 명령어를 지원하지 않는 경우에는 1.5이전 버전을 설치해야 합니다.  CPUAVX지원 확인을 위한 Microsoft에서 제공하는 유틸과 Intel 에서 제공하는 유틸에 대해서 알아 봅니다.

 

Microsoft CoreInfo

 

마이크로소프트사에서 제공하는 CoreInfo를 사용하기 위한 다운로드 주소에 접속 합니다.

Microsoft CoreInfo


tensorflow CPU AVX


Download Coreinfo를 클릭하여 다운로드를 진행 합니다다운로드가 완료되면 압축을 풀어 줍니다.


tensorflow CPU AVX


파일이 콘솔에서만 작동 하므로 콘솔을 하나 띄우고 Coreinfo를 입력해 줍니다.


tensorflow CPU AVX


명령어를 입력하고 엔터키로 실행하면 팝업 창이 나타납니다.


tensorflow CPU AVX


여기서 Agree 버튼을 클릭 하면 콘솔 창에 주르륵 무슨 리스트가 나오고 하단으로 조금 스크롤을 해보면 AVX 관련 지원 여부를 확인할 수 있습니다.


tensorflow CPU AVX



Intel Processor Idetification

 

intel 사에서 제공하는 Util을 다운로드 받기 위해 사이트에 접속 합니다.

https://downloadcenter.intel.com/download/28539?v=t


tensorflow CPU AVX


지원되는 운영체제를 확인하고 Intel(R) Processor Idenification Utiity.exe를 클릭하여 다운로드 받습니다이 툴의 단점은 가상화에서는 작동을 하지 않습니다가상화에서 실행하면 다음과 같은 오류가 발생 합니다.


tensorflow CPU AVX


실제 시스템과 가상화의 시스템 정보를 비교하면 설정한 Ram의 용량을 제외하고는 동일 합니다.


tensorflow CPU AVX


위 그림의 상단은 가상화 시스템 정보이고 아래는 기본 시스템 정보 입니다.  


tensorflow CPU AVX


그냥 본래 시스템에서 다운받은 파일을 더블 클릭 하여 설치를 진행합니다.  


tensorflow CPU AVX


언어를 선택 하고 다음 버튼을 클릭 합니다.


tensorflow CPU AVX


설치 위치와 HDD용량을 확인 하고 설치 버튼을 클릭 합니다.


tensorflow CPU AVX


이런... 시간 좀 걸리겠는데요기존에 설치가 되있다면 볼수 없는 팝업이겠지만 저는 아쉽게도 설치를 진행 해야 겠습니다.


tensorflow CPU AVX


잠시 딴짓하며 시간을 보냅니다.


tensorflow CPU AVX


유틸 설치가 진행 됩니다.


tensorflow CPU AVX


설치가 완료 되었으니 실행 버튼을 클릭 합니다.


tensorflow CPU AVX


~ 또 뭘 합니다.


tensorflow CPU AVX


약관 동의를 하고 실행을 합니다.


tensorflow CPU AVX


정보 좀 수집하겠다고 하는데 저는 여기서는 아니오 버튼을 클릭 합니다.


tensorflow CPU AVX


두번재 메뉴인 CPU 기술을 선택하면 확인이 가능 합니다작아서 잘 안보이는 군요.


tensorflow CPU AVX


. 잘 보이는 군요이렇게 확인 하면 됩니다.


- copy coding -

오류 : cannot reshape array of size 463275 into shape (1,28,28,1)

이미지를 비교할 때 자주 발생하는 오류입니다.  tensorflow는 이미지를 잘게 나누어 array로 보유하고 있고 이미지를 서로 비교할 때 두개의 사이즈가 동일해야 하며 만일 차이가 있다면 크기를 수정 작업 해서 비교 작업을 진행 해야 합니다.

 

58.png의 이미지가 있고 사이즈는 28x28 입니다. 이걸 원본으로 한다고 가정하고.


tensorflow reshape array


tensorflow_model03.png355x435 입니다. 이것과 비교하는 경우


tensorflow reshape array


이렇게 사이즈가 차이가 나는 경우 그대로 비교 한다면 오류가 발생 합니다.


tensorflow reshape array


이 소스를 실행하면 아래처럼 오류가 발생 합니다.


tensorflow reshape array



해결 : 사이즈 조절

결국은 비교하려는 이미지의 사이즈 조절을 해서 비교를 해야 합니다.


tensorflow reshape array


하단부처럼 이미지 사이즈를 수정하고 다시 실행을 하면


tensorflow reshape array

오류가 없이 결과가 3이라고 잘 실행이 됩니다이미지 사이즈 수정 방법은 여기서 사용한 방법 이외에 여러가지 방법이 있습니다.

 

전체 소스

import tensorflow as tf

import matplotlib.pyplot as plt

from PIL import Image

mnist = tf.keras.datasets.mnist

import cv2

 

 

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(),

  tf.keras.layers.Dense(512, activation=tf.nn.relu),

  tf.keras.layers.Dropout(0.2),

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

])

 

model.compile(optimizer='adam',

              loss='sparse_categorical_crossentropy',

              metrics=['accuracy'])

 

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

score = model.evaluate(x_test, y_test)

 

############ 추가 소스 ##################

img = cv2.imread("F:/tensordata/number/tensorflow_model03.png", cv2.IMREAD_GRAYSCALE)

plt.imshow(img)

plt.show()

 

img = cv2.resize(255-img, (28, 28))

test_num = img.flatten() / 255.0

test_num = test_num.reshape((-1, 28, 28, 1))

 

print('The Answer is ', model.predict_classes(test_num))

plt.show() 



전에 설명했던 숫자 이미지 하나 불러와서 숫자 맞추기를 이용하여 이번에는 직접 손으로 쓴 숫자를 이미지를 사용하여 맞추기를 해보겠습니다이미지를 만드는게 귀찮았는데 오늘은 시간이 좀 남아서 시도해 보았습니다.

 

1. 숫자 이미지 만들기

2. 디렉토리 생성

3. 코딩

4. 결과

5. 전체 소스

 


1. 숫자 이미지 만들기

 

숫자 이미지는 이미지 편집 프로그램이 없다면 윈도우즈 보조프로그램에 기본적으로 들어있는 그림판을 이용해서 만들면 됩니다.


tensorflow_mnist


그림판에 마우스를 이용해서 3을 써보았습니다. 좀 덜덜거리며 씌여졌지만 처음 한번 쓴걸 사용하기로 했습니다숫자를 적었으니 저장을 합니다.

 

파일 > 다른 이름으로 저장 > PNG


물론 다른 이미지로 저장을 해도 됩니다그럼 불러올 때 그에 맞추어서 소스를 수정해 사용하시면 되고요.


tensorflow_mnist


tensorflow_model03.png로 저장을 했습니다

tensorflow_mnist


2. 디렉토리 생성

 

손으로 작성한 숫자 이미지를 저장할 위치를 만들었습니다그리고 숫자 이미지는 number 디렉토리로 이동을 했습니다전에 테스트 했던 9도 아직 삭제를 안해서 같이 있네요.


tensorflow_mnist



3. 코딩

 

처음에 나오는 부분은 전에 설명했던 부분이고 이미지를 불러오는 부분부터 변경이 되었습니다기존에는 이미지 사이즈가 테스트 하기에 적당한 크기 였지만 이번에는 사이즈를 조정해야 해서 변경을 하였습니다.

 

이미지를 cv2를 이용해서 불러오고 화면에 출력을 해 봅니다.


gray = cv2.imread("F:/tensordata/number/tensorflow_model03.png", cv2.IMREAD_GRAYSCALE)

plt.imshow(gray)

plt.show() 


불러온 이미지의 사이즈를 테스트에 적합 하게 수정해 줍니다.


gray = cv2.resize(255-gray, (28, 28))

test_num = gray.flatten() / 255.0

test_num = test_num.reshape((-1, 28, 28, 1))


변경된 이미지를 사용하여 숫자 번호가 몇인지 알아맞춰 봅니다.


print('The Answer is ', model.predict_classes(test_num))



4. 결과

 

The Answer is  [3] 이라고 하는군요정답 입니다.


tensorflow_mnist



5. 전체 소스


import tensorflow as tf

import matplotlib.pyplot as plt

from PIL import Image

mnist = tf.keras.datasets.mnist

import cv2

 

(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(),

  tf.keras.layers.Dense(512, activation=tf.nn.relu),

  tf.keras.layers.Dropout(0.2),

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

])

model.compile(optimizer='adam',

              loss='sparse_categorical_crossentropy',

              metrics=['accuracy'])

 

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

score = model.evaluate(x_test, y_test)


# 이미지 불러와 출력

gray = cv2.imread("F:/tensordata/number/tensorflow_model03.png", cv2.IMREAD_GRAYSCALE)

plt.imshow(gray)

plt.show()


# 이미지 사이즈 변경

gray = cv2.resize(255-gray, (28, 28))

test_num = gray.flatten() / 255.0

test_num = test_num.reshape((-1, 28, 28, 1))


# 이미지 숫자 테스트 

print('The Answer is ', model.predict_classes(test_num))



123

+ Recent posts