【问题标题】:Variable size Convolutional Neural Network Input and Fixed output可变大小卷积神经网络输入和固定输出
【发布时间】:2016-12-02 08:27:59
【问题描述】:

我正在尝试制作一个 CNN 模型,该模型采用可变大小的输入(句子矩阵)并为后续的全连接层 (similar to this paper) 生成固定大小的输出。

我正在尝试为最大池化层实现动态内核大小,因此我需要在运行时输入的形状来实现这一点。

input = tf.placeholder(tf.float32)
# convolution layer here .... 

tf.nn.max_pool(convolution_output, ksize=[1, s, 1, 1],
                      strides=[1, 1, 1, 1], padding='VALID')

ksize=[1, s, 1, 1] 中的s 应该从输入形状中推断出来。

但是,我找不到使用 Tensorflow 的方法。

有人知道怎么做吗?

【问题讨论】:

  • 这听起来与他们在这里所做的相似:(arxiv.org/abs/1412.6071)。但不幸的是,tensorflow 尚不直接支持这一点 (github.com/tensorflow/tensorflow/issues/2953)。添加后,您想要做的可能只是一个扩展。
  • 也许tf.reduce_max 可以在这种情况下工作?不确定这是否适用于您正在实施的论文,但至少它适用于具有可变输入大小的简单 CNN。
  • tf.reduce_max 完成了我想做的工作。我想根据批量大小进行池化。 (虽然不是每个句子)谢谢!

标签: tensorflow


【解决方案1】:

我知道这是一个旧线程,但对于正在寻找解决方案的人来说。已经在tensorflow 1.4.0实现了

tf.nn.max_pool() 现在将 1d 张量作为输入,而不是旧版本中的整数列表。所以你可以使用占位符作为 ksize 的参数。

【讨论】:

    【解决方案2】:

    我没有在 Tensorflow 中找到方法,不得不在 theano 中重新实现我的模型并使用不同的解决方案:Dynamic KMax Pooling

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-16
      • 2016-10-03
      • 1970-01-01
      • 2017-07-30
      • 2017-08-31
      • 2016-10-20
      • 2020-05-26
      • 2023-03-16
      相关资源
      最近更新 更多