我一直在尝试使用池化层tf.nn.fractional_max_pool
在Keras中构建顺序模型。我知道我可以尝试在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。我用Input
而不是InputLayer
以及Keras Functional API尝试过其他一些事情,但到目前为止还没有运气。
答案 0 :(得分:16)
让它发挥作用。为了将来参考,您需要实现它。由于tf.nn.fractional_max_pool返回3个张量,你只需得到第一张:
(cl-remove-if-not 'buffer-file-name (buffer-list))
或使用Lambda图层:
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]