【发布时间】:2018-05-11 01:54:48
【问题描述】:
我基于这个paper实现了文本分类的CNN模型。由于 CNN 只能处理固定大小的句子,所以我将输入的大小设置为数据集中句子的最大长度,并对短句进行零填充。但据我了解,无论输入句子有多长,max pooling 策略总是会为每个过滤器图只提取一个值。所以输入句子的大小无关紧要,因为经过过滤器卷积/池化后,输出将是相同的大小。在这种情况下,为什么要将所有短句补零成固定大小?
例如,我将数据输入CNN模型的代码是self.input_data = tf.placeholder(tf.int32,[None,max_len],name="input_data"),我可以不指定max_len,而使用基于当前训练句子长度的None value吗?
此外,我想知道是否有其他新方法可以解决 CNN 模型的可变输入。我还找到了另一个可以解决这个问题的paper,但据我了解,它只使用k值进行max-pooling而不是1值max-pooling,可以处理变量句吗?怎么样?
【问题讨论】:
-
据我所知,我们使用
max_len来限制句子长度(或填充),因为批次中的训练数据必须具有相同的长度。也就是说,训练数据的形状是[batch_size, max_len]。我认为您不能为输入数据指定[none, none]。
标签: tensorflow nlp convolution text-classification