2017-09-15 14 views
1

私は2つの異なる入力を持つニューラルネットワークを持っています。入力1は画像データであり、入力2は単一の浮動小数点です。入力の形状は、(32,img_dim)(32,1)で、バッチサイズは32です。ケラス:密な層に定数入力のバッチを追加

NNの出力層は、線形活性化関数(回帰)を持つ10+(変化する可能性あり)出力を持つ密な層です。私は入力2のフロートを10個以上の出力のそれぞれに追加したいと思います。バッチ内のサンプルごとに異なる単純な値をレイヤ全体に追加するには(10以上の出力にブロードキャスト)

[12.0,23.0,60.0] 

は、今私は層内のすべてのユニットへの最初のサンプルのため 12.0を追加したい:3のバッチサイズのために、私は入力2を持っています。次に、バッチ内の次のサンプルについては 23.0、以下同様に続きます。このようなあなたのレイヤーを作成します

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

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

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

をしたい時点で

答えて

1

あなたは

from keras.models import Model 

モデルのための2つの入力を行う機能APIのモデルを使用することができます乗算、我々はカスタム操作のためのラムダレイヤーを作成する(あなたはlastOutあなたの最後の層)。このレイヤーは2つの入力を1つのリストに入れているので、機能的なAPIモデルが必要です。

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

そして、モデル作成:

model.fit([trainImages, trainFloats],labels) 

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

が正常モデルをコンパイルし、フィッティングと予測し、numpyの入力のリストを渡します

関連する問題