1. 程式人生 > >Tensorflow實戰-前向傳播演算法

Tensorflow實戰-前向傳播演算法

本文介紹最簡單的全連線網路結構的前向傳播演算法

之所以稱之為全連線神經網路,是因為相鄰兩層之間任意兩個節點之間都有連線

以一個簡單的判斷零件是否合格的三層全連線神經網路作為例子

記x=[x1,x2],w1=\begin{bmatrix} W{11}^{1} &W{12}^{1} &W{13}^{1} \\ W{21}^{1}&W{22}^{1} &{W{23}}^{1} \end{bmatrix}\begin{matrix} \end{matrix},w2=\begin{bmatrix} W{11}^{2}\\ W{21}^{2}\\ W{31}^{2} \end{bmatrix}

通過矩陣乘法表示如下:

a = tf.matmul(x,w1)
y = tf.matmul(a,w2)

詳細Python程式碼如下:

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

#宣告w1、w2兩個變數,這裡還通過seed引數設定了隨機種子,
#這樣可以保證每次執行得到的結果是一樣的。
w1 = tf.Variable(tf.random_normal((2,3),stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal((3,1),stddev=1,seed=1))

#暫時將輸入的特徵向量定義為一個常量,注意這裡x是一個1*2的矩陣。
x = tf.constant([[0.7,0.9]])

#通過前向傳播演算法獲得神經網路輸出。
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)

sess = tf.Session()
#這裡不能直接通過sess.run(y)來獲取y的取值,
#因為w1和w2都還沒有執行初始化過程,以下兩行分別初始化了w1和w2兩個變數。
sess.run(w1.initializer)
sess.run(w2.initializer)
#輸出[[3.95757794]]
print(sess.run(y))
sess.close()

 神經網路整個訓練流程圖如下: