【问题标题】:Using Tensorflow Layers in Keras在 Keras 中使用 TensorFlow 层
【发布时间】:2017-12-12 23:21:45
【问题描述】:

我一直在尝试使用池化层 tf.nn.fractional_max_pool 在 Keras 中构建顺序模型。我知道我可以尝试在 Keras 中制作自己的自定义图层,但我正在尝试查看是否可以在 Tensorflow 中使用该图层。对于以下代码sn -p:

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 功能API 尝试了其他一些东西,但到目前为止还没有运气。

【问题讨论】:

  • 干得好。我建议将 EDIT 部分移到答案中(在 SO 中回答您自己的问题并没有错)并接受它。
  • @desertnaut 可以!

标签: tensorflow keras keras-layer


【解决方案1】:

让它工作。为了将来参考,这就是您需要实现它的方式。由于 tf.nn.fractional_max_pool 返回 3 个张量,因此您只需获取第一个:

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

或者使用 Lambda 层:

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

模型实现为:

model.add(Lambda(frac_max_pool))

【讨论】:

  • 你知道用函数式 API 做这件事的方法吗?
猜你喜欢
  • 2018-04-20
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 2020-06-16
  • 1970-01-01
  • 2019-07-31
相关资源
最近更新 更多