2017-07-08 10 views
5

私は、プールレイヤtf.nn.fractional_max_poolを使用してKerasでシーケンシャルモデルを構築しようとしていました。私はKerasで自分のカスタムレイヤーを作ってみることができますが、すでにTensorflowでレイヤーを使用できるかどうか確認しようとしています。次のコードスニペットの場合:KerasでTensorflowレイヤを使用する

p_ratio=[1.0, 1.44, 1.44, 1.0] 

model = Sequential() 
model.add(ZeroPadding2D((2,2), input_shape=(1, 48, 48))) 
model.add(Conv2D(320, (3, 3), activation=PReLU())) 
model.add(ZeroPadding2D((1,1))) 
model.add(Conv2D(320, (3, 3), activation=PReLU())) 
model.add(InputLayer(input_tensor=tf.nn.fractional_max_pool(model.layers[3].output, p_ratio))) 

これはerrorです。私はInputLayerの代わりにInputといくつかのことを試してきましたが、Keras Functional APIもありましたが、これまでのところ運がありません。

+0

tf.nn.fractional_max_poolは3つのテンソルを返すので、あなただけの最初のものを取得する必要がありますよくやった。私は答えの中でEDITパートを動かすことを提案します(それであなた自身の質問に答えて間違っていることはありません)、それを受け入れます。 – desertnaut

+0

@desertnautがやります! –

答えて

5

これは機能しています。将来の参考として、これを実装する必要があります。

model.add(InputLayer(input_tensor=tf.nn.fractional_max_pool(model.layers[3].output, p_ratio)[0])) 

または使用してラムダ層:モデルの実装された状態で

def frac_max_pool(x): 
    return tf.nn.fractional_max_pool(x,p_ratio)[0] 

model.add(Lambda(frac_max_pool)) 
関連する問題