TFLearn LSTM 时间序列分类

Posted

技术标签:

【中文标题】TFLearn LSTM 时间序列分类【英文标题】:TFLearn LSTM Time Series Classification 【发布时间】:2018-05-25 16:29:51 【问题描述】:

我正在尝试构建一个 LSTM 网络,该网络采用一个序列并对每个序列中的最后一个时间步进行分类。

这是我目前所拥有的:

#build
net = tf.input_data(shape=[None, 64, 17])
net = tf.lstm(net, 128, dropout=[.2,.8], return_seq=True)
net = tf.lstm(net, 128, dropout=[.2,.8], return_seq=True)
net = tf.lstm(net, 128, dropout=[.2,.8])
net = tf.fully_connected(net, 3, activation='softmax')
net = tf.regression(net, optimizer='adam', learning_rate=0.01, loss='categorical_crossentropy')

#train
model = tf.DNN(net, tensorboard_verbose=0)
model.fit(trainX, trainY, validation_set=(testX,testY), show_metric=True, batch_size=None)

我的数据已经形成了大量的序列,每个序列有 64 个时间步长。每个时间步有 17 个特征。第一个序列是时间步 0 到 63,第二个是时间步 1 到 64,依此类推。

网络构建得很好,但是在 fit 方法中我得到了这个错误:

'ValueError: 无法为张量提供形状 (64,17) 的值 'InputData/X:0',形状为 (?,64,17)

有人对我的问题有建议吗?

【问题讨论】:

【参考方案1】:

它不在您的 sn-p 中,但看起来 trainX 的形状为 (64, 17)。如果是这样,您应该将其重塑为一批尺寸 1:

trainX = np.expand_dims(trainX, 0)  # now it's [1, 64, 17]

testX 也一样。

【讨论】:

以上是关于TFLearn LSTM 时间序列分类的主要内容,如果未能解决你的问题,请参考以下文章

tflearn(CNN)的损失增加[关闭]

85使用TFLearn实现iris数据集的分类

LSTM 时间序列分类

使用(?) LSTM 进行多变量时间序列分类

如何为 LSTM 重塑数据 - 时间序列多类分类

了解用于序列分类的 LSTM 架构