keras層內新增其它函式出錯

2021-10-10 02:42:46 字數 800 閱讀 3787

在使用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...