在使用keras封裝好的層構建網路模型時,可能在層與層之間需要使用一些非keras官方定義的層,比如在兩層之間對上一層輸出的張量進行切割重排列,便需要引入tf.reshape函式,這時候程式就會報錯nonetype』 object has no attribute '_inbound_nodes
參考:attributeerror: 『nonetype』 object has no attribute '_inbound_nodes』解決方法
keras編寫自定義層
發現要解決這個問題就需要用到lambda對使用的函式進行封裝,使其作為乙個「層」對張量進行操作,舉例如下:
x=lambda(
lambda x: tf.reshape(x,[-
1,16384,64
]))(x)
x=lambda(
lambda x: tf.reshape(tf.transpose(x),[
-1,256,64
,64])
)(x)
x=lambda(
lambda x: tf.transpose(x,(0
,1,3
,2))
)(x)
這樣就完成了對上層輸出的張量x的切割重新排列
但是在我使用過程中遇到了乙個問題,執行時會始終顯示lambda沒有被定義,最後發現需要新增如下引用,問題才得到解決
from keras.layers import lambda
Keras新增網路層的N種方法
使用keras搭神經網路久了,想整理一下keras新增網路層的n種方法,以防日後忘記。本文以mnist手寫資料為例,神經網路結構使用lenet講解。以下是模組的匯入,資料的載入,資料的預處理。import keras from keras.datasets import mnist from ker...
深度學習 Keras 層及損失函式
python深度學習 第三章神經網路入門部分內容,有關神經網路的層和損失函式選取。一 層的選取 1.2d張量,選取全連線層,也叫密集連線層,keras中對應dense,例如像神經網路中加入乙個512輸入,32輸出的dense層 network.add layers.dense 32,input sh...
深度學習 Keras 層及損失函式
python深度學習 第三章神經網路入門部分內容,有關神經網路的層和損失函式選取。一 層的選取 1.2d張量,選取全連線層,也叫密集連線層,keras中對應dense,例如像神經網路中加入乙個512輸入,32輸出的dense層 network.add layers.dense 32,input sh...