為什麼我們單獨講解乙個tensorflow的張量(矩陣)運算了?因為神經網路原理其實就是矩陣的運算。如圖所示,我們有三個神經元,兩個輸出。其實背後的計算不過是:
所以,學會矩陣運算,是實現神經網路的第一步。
相乘矩陣的相乘我們使用tf.matmul方法。
x = tf.variable([[1.,1.,1.]])
w = tf.variable([[-0.5,-0.2 ],
[-0.3, 0.4 ],
[-0.5, 0.2 ]])
xw =tf.matmul(x,w )
with tf.session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(xw ))
# [[-1.29999995 0.40000001]]
相加
矩陣的加法很簡單,就是用+即可完成。
b = tf.variable([[ 0.1,0.2]])
xw =tf.variable([[-1.3,0.4]])
sum =xw+b
with tf.session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print('sum:')
print(sess.run(sum ))
# sum:
#[[-1.19999993 0.60000002]]
我們回到上圖的問題,我們用tensorflow即可完成這個過程。
x = tf.variable([[0.4,0.2,0.4]])
w = tf.variable([[-0.5,-0.2 ],
[-0.3, 0.4 ],
[-0.5, 0.2 ]])
b = tf.variable([[0.1,0.2]])
xwb =tf.matmul(x,w)+b
y=tf.nn.relu(tf.matmul(x,w)+b)
with tf.session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print('xwb:')
print(sess.run(xwb ))
print('y:')
print(sess.run(y ))
啟用函式我們使用的是relu。如果值小於0就轉換為0,大於0就是多少。當然如果想用sigmoid函式,用tf.nn.sigmoid即可。
隨機初始值
神經網路中的權重和偏差剛開始都是隨機的,後面我們通過反向傳播來進行訓練,通過優化演算法獲得最優值。
所以,我們首先對權重和偏差賦上隨機值。
w = tf.variable(tf.random_normal([3, 2]))
b = tf.variable(tf.random_normal([1, 2]))
x = tf.variable([[0.4,0.2,0.4]])
y=tf.nn.relu(tf.matmul(x,w)+b)
with tf.session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print('b:')
print(sess.run(b ))
print('w:')
print(sess.run(w ))
print('y:')
print(sess.run(y ))
輸入用placeholder
神經元的輸入我們是不固定的,這裡我們用placeholder來實現。
w = tf.variable(tf.random_normal([3, 2]))
b = tf.variable(tf.random_normal([1, 2]))
x = tf.placeholder("float", [none,3])
y=tf.nn.relu(tf.matmul(x,w)+b)
with tf.session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
x_array = np.array([[0.4,0.2,0.4]])
(_b,_w,_x,_y)=sess.run((b,w,x,y),feed_dict=)
print('b:')
print(_b)
print('w:')
print(_w)
print('x:')
print(_x)
print('y:')
print(_y)
由於神經網路不是一成不變的(神經元個數,隱含層,資料情況都是不同的),所以我們將上面的**,定義為函式,這樣就可以靈活使用啦。
def layer(output_dim,input_dim,inputs, activation=none):
w = tf.variable(tf.random_normal([input_dim, output_dim]))
b = tf.variable(tf.random_normal([1, output_dim]))
xwb = tf.matmul(inputs, w) + b
if activation is none:
outputs = xwb
else:
outputs = activation(xwb)
return outputs
TensorFlow 深度學習筆記
google 深度學習筆記 經常總結是個好習慣,筆記目錄奉上。歡迎star,有問題可以到issue區討論 官方教程位址 最近tensorflow團隊出了乙個model專案,和這個課程無關,但是可以參考 框架 tensorflow 谷歌出品的基於python的深度學習工具集 工具 ipython,py...
TensorFlow深度學習框架
tensorflow支援python和c 兩種程式語言,再複雜的多層神經網路模型都可以用python來實現,如果業務使用其他程式設計也不用擔心,使用跨語言的grpc或者http服務也可以訪問使用tensorflow訓練好的智慧型模型。tensorflow 是乙個採用資料流圖 data flow gr...
深度學習 初識TensorFlow
深度學習使用場景 影象理解 語音識別 自然語言處理 機器自主 無人駕駛 深度學習,如深度神經網路 卷積神經網路和遞迴神經網路已被應用計算機視覺 語音識別 自然語言處理 音訊識別與生物資訊學等領域並取得了很好的效果。深度學習在人工智慧領域的地位 深度學習框架 google brain計畫產物 應用於a...