1. 程式人生 > >前向傳播程式碼

前向傳播程式碼

使用tensorflow進行簡單的前向傳播演算法。

定義w1和w2的時候並沒有真正執行,僅僅是定義了,需要在後面初始化

雖然直接呼叫每一個變數的初始化過程是一個可行方案,但是當變數數目增多,或者變數之間存在依賴關係時,單個呼叫方案就比較麻煩了。為了解決這個問題,tensorflow提供了一種更加便捷的方式來完成變數初始化過程。以下程式展示了通過tf.global_variables_initalizer函式實現初始化所有變數的過程

所謂假Random,是指所返回的隨機數字其實是一個穩定演算法所得出的穩定結果序列,而不是真正意義上的隨機序列。 Seed就是這個演算法開始計算的第一個值。所以就會出現只要seed是一樣的,那麼後續所有“隨機”結果和順序也都是完全一致的。 所以在宣告變數w1 和w2的時候,使用的seed=1,表示將隨機生成的數都從1開始。

init_op=tf.global_variables_initializer()
sess.run(init_op)
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import tensorflow as tf

#宣告變數w1和w2兩個,stddev設定標準差為1
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)

#使用會話初始化變數w1和w2,是因為這兩個沒有執行初始化過程
sess=tf.Session()
sess.run(w1.initializer)
sess.run(w2.initializer)

#輸出值,並關閉會話
print(sess.run(y))
sess.close()