2

我在互联网上搜索了一个不错的文档或带有一些描述的示例,但一无所获。我正在尝试做的是对一个单词或小短语(最多 3 个单词)进行分类,并给它们一个优先级“标签”。(例如:Stephen Hawking => 1,Mr. Red => 0)我试图用多层感知器来做这个,但是我不能用单词作为测试数据。所以我试图用RNN来做,使用TensorFlow的tflearn库。问题是我找不到任何关于我应该如何预处理数据,或者我应该如何将数据提供给 LSTM 层的文档。

我写了一点代码:

data, labels = load_csv(r'C:\Users\xxxx\Desktop\Machine Learning\Getting Started\Data\train_dataset_rnn.csv', categorical_labels=True, n_classes=2, delim=';')

net = tflearn.input_data(shape=[None, 1])
net = tflearn.lstm(net, 128, 1)
net = tflearn.fully_connected(net, 2, activation='softmax')
net = tflearn.regression(net)
model = tflearn.DNN(net)
model.fit(data, labels, n_epoch=10, batch_size=32, show_metric=True)

数据的形状 => "name";0/1

当我执行此代码时,我收到此错误:

ValueError: Invalid Activation.

有人可以帮我更好地理解那些层/算法吗?

提前谢谢了

4

1 回答 1

0

据我了解,LSTM 采用 3D 输入 -> [batch_size, sequence_length, vector_representation] 在您的情况下,您可以将序列长度设置为 3(序列的最大长度)。我通常会从单词映射到 300d GloVe 表示。所以输入数据将如下所示:

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

我不确定错误,但我认为您还需要像这样指定回归:

net = tflearn.layers.core.fully_connected(net, 2, activation='softmax')
net = tflearn.layers.estimator.regression(net, optimizer='adam', learning_rate=LEARNING_RATE,
                     loss='categorical_crossentropy', name='target')
于 2017-03-09T15:34:01.777 回答