__________________________________________________________________________________________________________________________Commercial
파이선 코딩을 배우는 초보자도 머신 러닝에 한번 도전해 보자. 머신 러닝을 배우려는 초보자들이 가지게
될 의문점들을 쪽집게로 찾아내어 실제 내용과 결과를 확인해볼 수 있도록 완전히 뒷문으로 들어가
시작하는 머신 러닝! 우선 아래 url 을 방문하여 url 로 구성된 본 서의 목차 파일을 무료로 다운로드 받아
펼쳐서 살펴보시기 바랍니다. 파이선 코딩 초보자를 위한 톈서플로우∙OpenCV 머신러닝 머리말과 url
목차 파일 다운로드
https://steemit.com/kr/@codingart/pryx1-opencv
450페이지 19900원 교모문고 퍼플에서 도서주문판매로만 판매중입니다.
_____________________________________________________________________________________________________
MNIST
딥러닝 예제에서 epoch를 늘리면 윈도우즈 10 PC에서 가슴이 답답할 정도로 대기해야 한다. 구글 Colabo의 GPU를 사용하면 85% 의 시간을 가속하여 불과 15% 시간으로 컴퓨팅이 완료된다. 6배 이상 빨라진다.
GPU 테스트했던 예제코드는 유튜브에서 우리말 머신러닝 강의를 올렸던 최고의 인기강사 Sung Kim의 Github에서 가져왔다. 한번 시험해 보기를 권한다.
첨부된 예제 코드는 복사하여 indentation이 무너졌는지 체크하여 실행해 보기 바란다. 코드 중에 하이퍼 파라메터인 trainning_epoch=30 으로 바꾸었음에 유의하자.
#lab-10-4-mnist-nn-deep.py
#Lab 10 MNIST and Deep learning
import tensorflow as tf
import random
import time
start_time = time.time()
#import matplotlib.pyplot as plt
from tensorflow.examples.tutorials.mnist import input_data
tf.set_random_seed(777) # reproducibility
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
#Check out https://www.tensorflow.org/get_started/mnist/beginners for
#more information about the mnist dataset
#parameters
learning_rate = 0.001
training_epochs = 30
batch_size = 100
#input place holders
X = tf.placeholder(tf.float32, [None, 784])
Y = tf.placeholder(tf.float32, [None, 10])
#weights & bias for nn layers
#http://stackoverflow.com/questions/33640581/how-to-do-xavier-initialization-on-tensorflow
W1 = tf.get_variable("W1", shape=[784, 512],
initializer=tf.contrib.layers.xavier_initializer())
b1 = tf.Variable(tf.random_normal([512]))
L1 = tf.nn.relu(tf.matmul(X, W1) + b1)
W2 = tf.get_variable("W2", shape=[512, 512],
initializer=tf.contrib.layers.xavier_initializer())
b2 = tf.Variable(tf.random_normal([512]))
L2 = tf.nn.relu(tf.matmul(L1, W2) + b2)
W3 = tf.get_variable("W3", shape=[512, 512],
initializer=tf.contrib.layers.xavier_initializer())
b3 = tf.Variable(tf.random_normal([512]))
L3 = tf.nn.relu(tf.matmul(L2, W3) + b3)
W4 = tf.get_variable("W4", shape=[512, 512],
initializer=tf.contrib.layers.xavier_initializer())
b4 = tf.Variable(tf.random_normal([512]))
L4 = tf.nn.relu(tf.matmul(L3, W4) + b4)
W5 = tf.get_variable("W5", shape=[512, 10],
initializer=tf.contrib.layers.xavier_initializer())
b5 = tf.Variable(tf.random_normal([10]))
hypothesis = tf.matmul(L4, W5) + b5
#define cost/loss & optimizer
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(
logits=hypothesis, labels=Y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
#initialize
sess = tf.Session()
sess.run(tf.global_variables_initializer())
#train my model
for epoch in range(training_epochs):
avg_cost = 0
total_batch = int(mnist.train.num_examples / batch_size)
for i in range(total_batch):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
feed_dict = {X: batch_xs, Y: batch_ys}
c, _ = sess.run([cost, optimizer], feed_dict=feed_dict)
avg_cost += c / total_batch
print('Epoch:', '%04d' % (epoch + 1), 'cost =', '{:.9f}'.format(avg_cost))
print('Learning Finished!')
#Test model and check accuracy
correct_prediction = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(Y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print('Accuracy:', sess.run(accuracy, feed_dict={
X: mnist.test.images, Y: mnist.test.labels}))
#Get one and predict
r = random.randint(0, mnist.test.num_examples - 1)
print("Label: ", sess.run(tf.argmax(mnist.test.labels[r:r + 1], 1)))
print("Prediction: ", sess.run(
tf.argmax(hypothesis, 1), feed_dict={X: mnist.test.images[r:r + 1]}))
end_time = time.time()
print( "Completed in ", end_time - start_time , " seconds")
'''
Epoch: 0001 cost = 0.296483150
Epoch: 0002 cost = 0.104406800
Epoch: 0003 cost = 0.070662051
Epoch: 0004 cost = 0.051252026
Epoch: 0005 cost = 0.037983440
Epoch: 0006 cost = 0.034874982
Epoch: 0007 cost = 0.030717032
Epoch: 0008 cost = 0.025697561
Epoch: 0009 cost = 0.021935539
Epoch: 0010 cost = 0.021127864
Epoch: 0011 cost = 0.018186909
Epoch: 0012 cost = 0.016460486
Epoch: 0013 cost = 0.018914573
Epoch: 0014 cost = 0.015017020
Epoch: 0015 cost = 0.014418301
Epoch: 0016 cost = 0.015866343
Epoch: 0017 cost = 0.015229846
Epoch: 0018 cost = 0.010135254
Epoch: 0019 cost = 0.012191325
Epoch: 0020 cost = 0.010203986
Epoch: 0021 cost = 0.010367872
Epoch: 0022 cost = 0.013262964
Epoch: 0023 cost = 0.012672996
Epoch: 0024 cost = 0.010207886
Epoch: 0025 cost = 0.009834724
Epoch: 0026 cost = 0.008915133
Epoch: 0027 cost = 0.010589334
Epoch: 0028 cost = 0.010043771
Epoch: 0029 cost = 0.008661602
Epoch: 0030 cost = 0.008352582
Learning Finished!
Accuracy: 0.9832
Label: [0]
Prediction: [0]
Completed in 263.5923902988434 seconds
Epoch: 0001 cost = 0.296483150
Epoch: 0002 cost = 0.104406800
Epoch: 0003 cost = 0.070662051
Epoch: 0004 cost = 0.051252026
Epoch: 0005 cost = 0.037983440
Epoch: 0006 cost = 0.034874982
Epoch: 0007 cost = 0.030717032
Epoch: 0008 cost = 0.025697561
Epoch: 0009 cost = 0.021935539
Epoch: 0010 cost = 0.021127864
Epoch: 0011 cost = 0.018186909
Epoch: 0012 cost = 0.016460486
Epoch: 0013 cost = 0.018914573
Epoch: 0014 cost = 0.015017020
Epoch: 0015 cost = 0.014418301
Learning Finished!
Accuracy: 0.9811
Label: [0]
Prediction: [0]
Completed in 138.17546963691711 seconds
'''
'머신러닝' 카테고리의 다른 글
Wine 데이터와 PCA(Principal Component Analysis) 처리 (0) | 2019.06.09 |
---|---|
PyTorch Transfer Learning Tutorial 구글 Colabo GPU 처리 (0) | 2019.06.03 |
Anaconda3 PyTorch CIFAR-10 이미지 인식 Jupyter Notebook 예제 (0) | 2019.06.02 |
5G 시대의 개막: 구글 Colaboratory에 의한 GPU 머신 러닝 (0) | 2019.06.01 |
붓꽃 데이터 LDA 처리 후 Classification (0) | 2019.05.31 |