神經網絡之全連接層(線性層)


對於神經網絡的全連接層,前面已經使用矩陣的運算方式實現過,本篇將引入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)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM