아나콘다텐서플로우

아나콘다 쥬피터 노트북 MNIST 학습에 의한 숫자인식 예제 실행 I

coding art 2018. 5. 23. 15:16
728x90

이 한권의 책으로 아두이노 엘렉트로닉스 코딩에서 시작하여 와이파이 코딩을 넘어 흥미로운 앱인벤터 코딩으로 넘어가보자. 특별한 컴퓨터 과학의 지식이 없어도 누구든지 코딩의 세계로 초대 받을 수 있습니다. 교보문고에서 판매 중입니다.

 

 

__________________________________________________________________________________________________________________________________

 

아두이노 코딩을 제일 많이 해보았고 그다음 라즈베리 파이 코딩 및 텐서플로우 코딩 최근에는 아나콘다 스파이더 코딩을 해 보았는데 아두이노나 라즈베리 파이나 머신 러닝이나 그놈이 그놈이라 코딩이란 것이 국경없는 프로그래머 사회라는 느낌이 든다. 쥬피터 노트북 배우면서 하니 더 추가하는 것도 즐거운 코딩 생활이 될 듯하다.

 

 

MNIST  파이선 코드는 머신 러닝 코딩 과정에서 구글의 TensorFlow 라이브러리 모듈을 사용하여 손으로 쓴 5만 여개의 샘플 데이터 학습을 통해 추가로 이미 정확한 숫자 값을 인식하고 있는 1만 여개의 시험 데이터를 대상으로 머신 러닝 코드에 의해 숫자 인식율을 체크해 보는 예제이다.

 

 

 

 


윈도우즈10에서 텐서플로우 1.5 가 설치된 아나콘다를 실행 해보자. 처음에 시작바에서 아나콘다3(64비트)를 실행하곤 했더니 편리하게도 아예 아이콘이 생성되어 있었다.

 

 

 

 


따라서 이 아이콘을 선택 클릭하면 자동으로 크롬의 탭에 쥬피터 노트북 Home 화면이 떠있음을 확인할 수 있다.

 

 

 

 


여기에 저장되어 있는 파이선 코드 mnist_01을 더블 클릭해 불러내 보자. 첨부된 파일을 복사해서 사용하도록 한다.

 

 

 



아래의 MNIST_01 파이선 코드는 미국에서 오프라인 편지를 쓸 경우에 주소란에 반드시 적게 되는 위의 그림 예에서 처럼 지역 코드 숫자를 데이터 베이스화해서 저장해 두고 머신 러닝 컴퓨터 코드를 사용하여 인식율을 연산하는 잘 알려진 코드이다. 구글 검색에서 쉽게 구해올 수 있다.

 

 

 

 


지금 현재 떠있는 상태는 보아하니 텍스트 모드 상태로서 편집도 가능한 듯하다.

이 내용을 복사해서 Home 탭으로 가져가도록 한다. Home 으 우측 상단에서 New 버튼을 눌러 Python 3을 선택 실행한다.

 

 

 

 

 

아래와 같은 파이선 명령 입력 창이 나타나면 빨간 색 동그라미 친 부분에 복사해둔 텍스트 코드를 Paste 하고 성공적으로 되면 바로 위의 실행 버튼 Run을 클릭하자.

 

 

 

 

 

실행 후 결과가 나와야 하는데 당황스럽게 다음과 같이 다소 심각한 에러가 발생했다.

 

 


에러 메시지를 읽어 보기로 하자.
 is deprecated and will be removed in a future version.
is deprecated ∙∙∙ 라는 메시지는 단어가 depreciated 즉 낡아서 썩어버린 이란 단어의 오자인 듯하다. 한마디로 구글의 TensorFlow가 공짜이긴한데 도대체 머신 러닝의 선두 회사인데도 불구  의심스럽다.

이런 에러의 원인은 현재 설치해 놓은 TensorFlow 버전이 상당히 높기 때문에 낮은 버전에서 잘 돌아가던 코드들이 이와 같은 문제를 일으키는 듯하다. 즉 soft_max_∙∙∙ 루틴이 명칭이 아마도 바뀌었을 듯하다.

오늘 부처님 오신 날이라 좀 쉰 연후에 이 에러를 어떻게 처리해서 정답을 얻어낼건지 연재하도록 할 계획이다. 모두에게 편안하고 자비로운 안식 시간이 되길 희망한다.

 

에러 수정 작업은 1-10으로 넘어감.

 

#mnist_01

# Import data
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf

mnist = input_data.read_data_sets('/tmp/tensorflow/mnist/input_data', one_hot=True)

# Create the model

x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
k = tf.matmul(x, W) + b
y = tf.nn.softmax(k)


# Define loss and optimizer
y_ = tf.placeholder(tf.float32, [None, 10])                                                                              
learning_rate = 0.5
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(k, y_))
train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)


print ("Training")
sess = tf.Session()
init = tf.global_variables_initializer() #.run()
sess.run(init)
for _ in range(1000):
    # 1000번씩, 전체 데이타에서 100개씩 뽑아서 트레이닝을 함. 
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

print ('b is ',sess.run(b))
print('W is',sess.run(W))