TFLearn CNN句子分类模型

时间:2018-12-11 10:11:26

标签: tensorflow machine-learning classification conv-neural-network text-classification

我正在尝试使用TFLearn训练CNN进行句子分类。

我的实现

  1. 我没有使用嵌入层
  2. Word2Vec模型用于嵌入矢量大小为 100
  3. 的单词
  4. 填充每个句子,以便所有句子的长度为 30
  5. 我的数据中有10个班级

所以每个句子的大小为30x100

我想使用TFLearn设计CNN来对这些句子进行分类,为了测试这一点,我编写了以下代码

net = tflearn.input_data(shape=[None, 30])
net = tflearn.conv_1d(net, 128, 5, padding="valid", activation='relu')
net = tflearn.max_pool_1d(net, 2)
net = tflearn.dropout(net, 0.5)
net = tflearn.fully_connected(net, 10, activation='softmax')
net = tflearn.regression(net, optimizer='adam', learning_rate=0.001, loss='categorical_crossentropy')

运行此命令时,出现以下错误

Incoming Tensor shape must be 3-D

我通过更改

解决了这个问题

net = tflearn.input_data(shape=[None, 30])

net = tflearn.input_data(shape=[None, 30, 100]) 因为每个单词都由大小为100的向量表示。

以16个批次和1000个时期的批次进行训练时,损失约为1.5,准确度为65%-71%,而且无论如何它似乎都不会随着时间的推移而改善。

其他信息

  • 100 句子用于训练该模型。

所以我的问题是,是由于输入形状存在某种错误而导致模型无法收敛,还是因为我的训练数据不够好而导致模型无法收敛,还是应该训练更长的时间?

0 个答案:

没有答案