TensorFlow学习笔记之四(MNIST数字识别)
文章目錄
- 1. 關(guān)于MNIST數(shù)據(jù)集
- 2. 前向傳播確定網(wǎng)絡(luò)結(jié)構(gòu)
- 2.1 涉及的方法
1. 關(guān)于MNIST數(shù)據(jù)集
數(shù)據(jù)集和input_data文件
- 有6萬(wàn)張28*28像素點(diǎn)的0~9手寫(xiě)數(shù)字圖片和標(biāo)簽,用于測(cè)試。
- 有1萬(wàn)張28*28像素點(diǎn)的0~9手寫(xiě)數(shù)字圖片和標(biāo)簽,用于測(cè)試。
每張圖片有784個(gè)像素點(diǎn)(28*28=784)組成一個(gè)長(zhǎng)度為784的一維數(shù)組,用做個(gè)輸入特征
[000010011010...011010]728?1\begin{gathered} \begin{bmatrix} 0 & 0 & 0 &0 & 1 & 0 &0 & 1 & 1 &0 & 1 & 0 &...&0 & 1 & 1 &0 & 1 & 0 \end{bmatrix} \end{gathered}_{728*1} [0?0?0?0?1?0?0?1?1?0?1?0?...?0?1?1?0?1?0?]?728?1?
圖片的標(biāo)簽以一維數(shù)組形式給出,每個(gè)元素表示對(duì)應(yīng)分類出現(xiàn)的概率。比如下面的標(biāo)簽表示數(shù)字4
[0000100000]\begin{gathered} \begin{bmatrix} 0 & 0 & 0 &0 & 1 & 0 &0 & 0 & 0 & 0 \end{bmatrix} \end{gathered} [0?0?0?0?1?0?0?0?0?0?]?
2. 前向傳播確定網(wǎng)絡(luò)結(jié)構(gòu)
""" 前向傳播確定網(wǎng)絡(luò)結(jié)構(gòu) """ """ 前向傳播確定網(wǎng)絡(luò)結(jié)構(gòu) """import tensorflow as tfINPUT_NODE = 784 # 輸入節(jié)點(diǎn) 784(一張圖片28*28,共有784個(gè)像素點(diǎn))個(gè) OUTPUT_NODE = 10 # 輸出10數(shù),這個(gè)等于要預(yù)測(cè)類別的數(shù)目。在這里表示的是該圖片為0~9之間的概率LAYER1_NODE = 500 # 隱藏層節(jié)點(diǎn)個(gè)數(shù)def get_weight(shape, regularizer):"""初始化權(quán)重"""# 隨機(jī)生成參數(shù)ww = tf.Variable(tf.truncated_normal(shape, stddev=0.1))if regularizer != None:"""如果使用正則化"""# 將每個(gè)變量的損失加入到總損失lossestf.add_to_collection('losses', tf.contrib.layers.l2_regularizer(regularizer)(w))return wdef get_bias(shape):"""初始化偏置值"""b = tf.Variable(tf.zeros(shape))return bdef forward(x, regularizer):"""該網(wǎng)絡(luò)的結(jié)構(gòu)有兩層,一個(gè)隱藏層和一個(gè)輸出層"""# x為1*784的矩陣,w1是一個(gè)784*500的矩陣,b1是一個(gè)1*500的矩陣w1 = get_weight([INPUT_NODE, LAYER1_NODE], regularizer)b1 = get_bias([LAYER1_NODE])y1 = tf.nn.relu(tf.matmul(x, w1) + b1) # 最終結(jié)果,y1是一個(gè)1*500的矩陣# y1為1*500的矩陣,w2為500*10的矩陣,b2為1*10的矩陣w2 = get_weight([LAYER1_NODE, OUTPUT_NODE], regularizer)b2 = get_bias([OUTPUT_NODE])y = tf.matmul(y1, w2) + b2 # 最終輸出,y為一個(gè)1*10的矩陣return y整個(gè)網(wǎng)絡(luò)大概是這個(gè)樣子的
其中,輸入X為一個(gè)1784的矩陣(為了方便自己記憶,就不說(shuō)向量了)。w1是一個(gè)784500的矩陣,b1是一個(gè)1500的矩陣。第一層的輸入為y1是一個(gè)1500的矩陣。
第二層的輸入即第一層的輸出,為y1(一個(gè)1500的矩陣)。w2為50010的矩陣,b2為110的矩陣。輸出y為一個(gè)110的矩陣
2.1 涉及的方法
tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None):輸出一個(gè)shape的張量,里面的參數(shù)服從正態(tài)分布,均值為mean,標(biāo)準(zhǔn)差為stddev,數(shù)據(jù)類型為dtype,隨機(jī)種子為seed。
未完待續(xù)。。。
總結(jié)
以上是生活随笔為你收集整理的TensorFlow学习笔记之四(MNIST数字识别)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WordPress上传大小限制问题
- 下一篇: log4j2使用笔记