iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 19
0

前言:

我們今天就先從建立模型開始進行手寫數字辨識。

程式開始:

(1)準備

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)

說明:

這個部份是進行一些以後會用到的函式以及資料的匯入。

(2)建立layer函數

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函數,今天我們要用他來建構我們的多層感知器。

(3)建立輸入輸出以及隱藏層

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。


上一篇
DAY18 建立layer函數
下一篇
DAY20 手寫數字辨識(2)
系列文
tensorflow python30

2 則留言

0
微中子
iT邦新手 4 級 ‧ 2018-01-07 19:17:18

我也在期末Q

0

我要留言

立即登入留言