Tensorflow實現神經網絡的前向傳播

咱們構想有一個神經網絡,輸入爲兩個input,中間有一個hidden layer,這個hiddenlayer當中有三個神經元,最後有一個output。網絡

圖例以下:session

 

 

 

 在實現這個神經網絡的前向傳播以前,咱們先補充一下重要的知識。dom

一.權重w以及input的初始化

咱們初始化權重w的方法爲隨機生成這些權重,通常能夠使用這些隨機生成的數據正好在正態分佈的曲線上,這也是最符合生成符合天然規律的隨機數生成方法:spa

import tensorflow as tf
#通常狀況下神經網絡上的參數是w的數列,固然咱們通常使用隨機數來生成這些參數
w=tf.Variable(tf.random_normal([2,3],stddev=2,mean=0,seed=1))
#其中stddev表示標準差,mean表示均值,【】表示隨機生成正態分佈的數值的shape

這樣咱們的權重就生成了,咱們初始化input的方法有有如下幾種,僞代碼以下:code

除了這種方式,咱們還能夠使用
tf.constant([1,2,3]),來生成指定數值
tf.zeros([2,3],int32),用來生成全零
tf.ones([2,3],int32),同來生成全1
tf.fill([3,2],6),生成指定數值

下面咱們編寫一個僅有一個初始值input的神經網絡,並利用tensorflow實現對其進行前向傳播。由於初始值僅有一個,實現的方法一共有兩種,咱們來看看第一種:orm

二.神經網絡的前向傳播(僅具一個初始值,方法一)

import tensorflow as tf

x=tf.constant([[0.7,0.5]])#注意這裏,寫了兩個中括號啊!
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

#而後定義向前傳播的過程
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)

#利用session計算前向傳播的結果
with tf.Session() as sess:
    init_op=tf.global_variables_initializer()
    sess.run(init_op)
    print(sess.run(y))#這裏使用run(y)打印出結果,由於最後一個輸出咱們定義的是y

輸出:blog

[[3.0904665]]

三.神經網絡的前向傳播(僅具一個初始值,方法二)

咱們利用placeholder進行數據的初始化,賦值給input,使用placeholder既能夠賦一個值,也能夠賦多個值,這也是它很常見的緣由,代碼以下:input

import tensorflow as tf

x=tf.placeholder(tf.float32,shape=(1,2))
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

#一樣地定義前向傳播的過程
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)

#利用session計算前向傳播的結果
with tf.Session() as sess:
    init_op=tf.global_variables_initializer()
    sess.run(init_op)
    print(sess.run(y,feed_dict={x:[[0.7,0.5]]}))#這裏使用run(y)打印出結果,由於最後一個輸出咱們定義的是y

輸出:it

[[3.0904665]]

結果和方法一相同。接下來就能夠對多個數據進行前向傳播了,也是利用placeholder方法io

四.神經網絡的前向傳播(多個初始值)

代碼以下:

import tensorflow as tf

x=tf.placeholder(tf.float32,shape=(None,2))
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1)

#一樣地定義前向傳播的過程
a=tf.matmul(x,w1)
y=tf.matmul(a,w2

#利用session計算前向傳播的結果
with tf.Session() as sess:
    init_op=tf.global_variables_initializer()
    sess.run(init_op)
    print(sess.run(y,feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.5,0.5]]}))

輸出:

[[3.0904665]
 [1.2236414]
 [2.5171587]]

完畢!看起來仍是挺簡單的吧!tensorflow在工業界的應用仍是十分普遍的,想要創業和在業界工做的朋友就能夠好好了解一下了!

相關文章
相關標籤/搜索