1. 程式人生 > >tensorflow學習筆記(北京大學) tf5_1minst_forward.py 完全解析 mnist資料集

tensorflow學習筆記(北京大學) tf5_1minst_forward.py 完全解析 mnist資料集

#coding:utf-8
#tensorflow學習筆記(北京大學) tf5_1minst_forward.py 完全解析 mnist資料集
#QQ群:476842922(歡迎加群討論學習
import tensorflow as tf

#網路輸入節點為784個(代表每張輸入圖片的畫素個數)
INPUT_NODE = 784
#輸出節點為10個(表示輸出為數字0-9的十分類)
OUTPUT_NODE = 10
#隱藏層節點500個
LAYER1_NODE = 500


def get_weight(shape, regularizer):
	#引數滿足截斷正態分佈,並使用正則化,
    w =
tf.Variable(tf.truncated_normal(shape,stddev=0.1)) #w = tf.Variable(tf.random_normal(shape,stddev=0.1)) #將每個引數的正則化損失加到總損失中 if regularizer != None: tf.add_to_collection('losses', tf.contrib.layers.l2_regularizer(regularizer)(w)) return w def get_bias(shape): #初始化的一維陣列,初始化值為全 0 b =
tf.Variable(tf.zeros(shape)) return b def forward(x, regularizer): #由輸入層到隱藏層的引數w1形狀為[784,500] w1 = get_weight([INPUT_NODE, LAYER1_NODE], regularizer) #由輸入層到隱藏的偏置b1形狀為長度500的一維陣列, b1 = get_bias([LAYER1_NODE]) #前向傳播結構第一層為輸入 x與引數 w1矩陣相乘加上偏置 b1 ,再經過relu函式 ,得到隱藏層輸出 y1。 y1 = tf.nn.relu(
tf.matmul(x, w1) + b1) #由隱藏層到輸出層的引數w2形狀為[500,10] w2 = get_weight([LAYER1_NODE, OUTPUT_NODE], regularizer) #由隱藏層到輸出的偏置b2形狀為長度10的一維陣列 b2 = get_bias([OUTPUT_NODE]) #前向傳播結構第二層為隱藏輸出 y1與參 數 w2 矩陣相乘加上偏置 矩陣相乘加上偏置 b2,得到輸出 y。 #由於輸出 。由於輸出 y要經過softmax oftmax 函式,使其符合概率分佈,故輸出y不經過 relu函式 y = tf.matmul(y1, w2) + b2 return y