2017-07-08 38 views
5

Keras'ta havuzlama katmanı tf.nn.fractional_max_pool'u kullanarak bir sıralı model oluşturmaya çalışıyorum. Keras'ta kendi özel katmanımı yapmaya çalışabileceğimi biliyorum, ama Tensorflow'da zaten katmanı kullanıp kullanamayacağımı görmeye çalışıyorum. Aşağıdaki kod parçacığı için:Keras'ta Tensorflow Katmanlarını Kullanma

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))) 

Bunu error olsun. InputLayer yerine Input ve Keras Functional API yerine başka şeyler denedim ama şimdiye kadar hayır şansı.

+0

tf.nn.fractional_max_pool 3 tensörleri verir, bu nedenle yalnızca ilkini almak gerekir Aferin. EDIT bölümünün bir cevabın içinde hareket etmesini öneririm (SO'da kendi sorularınızı yanıtlarken yanlış bir şey yoktur) ve kabul edin. – desertnaut

+0

@desertnaut yapacak! –

cevap

5

Çalıştırdım. Gelecekte başvurmak için, bunu nasıl uygulamanız gerektiği budur.

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

Ya kullanarak Lambda katmanını: modeli uygulama varlık ile

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

:

model.add(Lambda(frac_max_pool))