我們今天就先從建立模型開始進行手寫數字辨識。
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as plt
import numpy as np
from time import time
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
這個部份是進行一些以後會用到的函式以及資料的匯入。
def layer(out_dim,in_dim,inputs,activation=None):
W = tf.Variable(tf.random_normal([in_dim,out_dim]))
b = tf.Variable(tf.random_normal([1,out_dim]))
XWb =tf.matmul(inputs,W) + b
if activation is None:
outputs = XWb
else:
outputs = activation(XWb)
return outputs
這是上一篇文章介紹過的layer函數,今天我們要用他來建構我們的多層感知器。
x=tf.placeholder("float",[None , 784])
h1=layer(out_dim=1000,in_dim=784,inputs=x, activation=tf.nn.relu)
y=layer(out_dim=10,in_dim=1000,inputs=h1,activation=None)
第1行:建立一個輸入層x,由於輸入的資料筆數不固定,所以我們第1維度設定為None,而因為輸入的數字像素為784,所以第2維度設定為784。
第2行:h1為第一個隱藏層,由於輸入層x的輸出為784而這個隱藏層是要去接x,所以他的輸入定義為784,而輸出部份可以依照自己喜好去更改,會對於訓練有不同的效果。
第3行:建立一個輸出層y,由於上一層的輸出為1000,所以這層的輸入必須為1000,而輸出則是由於數字辨識的答案只會有0~9這10種,所以設定為10。
輸入固定是784而輸出則固定為10,但是中間可以夾雜著若干的隱藏層,來增加多元感知器模型的準確律。
因為筆者也是第一次碰這個部份的東西,所以有許多東西都還在摸索,所以進度較慢,出錯的機率也比較高,敬請見諒。
也因為筆者還沒破完新手任務的緣故,所以沒辦法回應留言的大大們,請多見諒,也預祝大家期末順利ALL PASS。