深度學習 tensorflow張量運算

2021-09-11 19:04:51 字數 3171 閱讀 3087

為什麼我們單獨講解乙個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...