2017-09-15 127 views
1

我有兩個不同輸入的神經網絡。輸入1是圖像數據,輸入2是單個浮動。因此,我的輸入是形狀(32,img_dim)(32,1)用於32.Keras:向密集層添加一批常量輸入

的神經網絡的輸出層的批量大小與10+的緻密層(可以變化)與線性激活函數(迴歸)輸出。我想將輸入2中的浮點數添加到每個10+個輸出中。我如何爲整個圖層添加一個簡單的值(批量中的每個樣本都不相同)(將其廣播到10個以上的輸出)。

例如爲3批量大小我有輸入2:

[12.0,23.0,60.0] 

現在我要添加12.0爲第一樣品在層中的所有單元。然後23.0用於批次中的下一個樣品等。

回答

1

您可以使用功能API模型

from keras.models import Model 

讓兩個輸入模型:

inpImg = Input((rows,columns,channels)) 
inpFloat = Input((1,)) 

創建圖層這樣的:

outputTensor = SomeLayer(....)(inputTensor) 

#example: 
convOut = Conv2D(20,kernel_size=3,activation='relu')(inpImg) 

在你想點乘法,我們爲自定義操作創建一個Lambda圖層(假設您有lastOut來自你最後一層)。注意這個圖層在列表中輸入兩個輸入,這就是爲什麼我們需要功能API模型。

multOut = Lambda(lambda x: x[0] + x[1],output_shape=(10,))([lastOut,inpFloat]) 

然後,創建模型:

model = Model([inpImg,inpFloat],multOut) 

編譯模型正常,嵌合和預測時,通過的numpy的輸入列表:

model.fit([trainImages, trainFloats],labels) 
相關問題