對於神經網絡的全連接層,前面已經使用矩陣的運算方式實現過,本篇將引入tensorflow中層的概念, 正式使用deep learning相關的API搭建一個全連接神經網絡。下面是全連接神經網絡的結構圖

其中,x1,x2,x3為輸入,a1,a2,a3為輸出,運算關系如下:
x1,x2,x3所在的層叫神經網絡的輸入層,a1,a2,a3所在的層叫神經網絡的輸出層,如果兩層中間還有若干層,那么中間的這些層叫做隱藏層。
那么,如何使用tensorflow去創建這樣的層呢?其實非常簡單,只需要調用tf.keras.layers API即可,示例如下:
# 模擬生成四張 28*28的圖片數據 x = tf.random.normal([4,784]) # 搭建全連層,參數代表神經元個數 net = tf.keras.layers.Dense(512) # 將x喂入net層,得到輸出層 out = net(x) print(out.shape) print(net.kernel.shape,net.bias.shape)

net = tf.keras.layers.Dense(10) # 只是聲明層結構並不會完成w和b的創建 print(net.get_weights(),net.weights) # 使用build函數創建層 net.build(input_shape=(None,4)) print(net.kernel.shape,net.bias.shape) net.build(input_shape=(None,20)) print(net.kernel.shape,net.bias.shape) net.build(input_shape=(2,4)) print(net.kernel)

如果要實現多層的嵌套,又該怎么做呢?示例如下:
x = tf.random.normal([2,3]) model = keras.Sequential([ keras.layers.Dense(2,activation='relu'), keras.layers.Dense(2,activation='relu'), keras.layers.Dense(2) ]) model.build(input_shape=[None,3]) # summary用來顯示網絡具體信息,相當於print model.summary() # 通過下面的語句可以查看所有的w和b for p in model.trainable_variables: print(p.name,p.shape)

