我想从下图中构建CNN
我认为每次句子可以有不同的长度,并且仍然可以构建它。
以下是我在网上发现但有点丢失的东西
ngram_filters = [2, 3, 4]
conv_filters = []
for n_gram in ngram_filters:
conv_filters.append(Sequential())
conv_filters[-1].add(Conv2D(1, 1, n_gram, 5))
conv_filters[-1].add(MaxPooling2D(poolsize=(nb_tokens - n_gram + 1, 1)))
conv_filters[-1].add(Flatten())
model = Sequential()
model.add(Merge(conv_filters, mode='concat'))
图片来自以下博客 - http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/
答案 0 :(得分:1)
您不需要使用可变输入大小,只需要用零填充输入(确保屏蔽这些零)。您可以将输入大小定义为非常大的输入大小,并填充每个句子长度和输入大小之间的差异。
Keras中有一个内置函数,您可以在Sequence Preprocessing找到它,函数是" pad_sequences"。通过使用Masking class屏蔽这些值,确保模型了解填充值。
您可以看到实施的示例here。