了解 TensorFlow LSTM 模型?

数据挖掘 机器学习 Python 深度学习 张量流
2021-10-11 07:40:06

我在理解TensorFlow中的 LSTM 模型时遇到了一些麻烦。为简单起见,让我们考虑示例程序

我使用tflearn作为包装器,因为它会自动执行所有初始化和其他更高级别的操作。

直到行号42 net = tflearn.input_data([None, 200])很清楚会发生什么。

您将数据集加载到变量中,并在本例中将其设为标准长度 200。对于输入变量以及本例中存在的 2 个类,都将其转换为一个热向量。

我想在这里知道的是 LSTM 如何获取输入以及它预测输出的样本数量?

这些参数表示什么:n_words=20000& net = tflearn.embedding(net, input_dim=20000, output_dim=128)?

我的目标是复制论文中的活动识别数据集。

例如,我想输入一个 4096 向量作为 lstm 的输入,想法是取 16 个这样的向量,然后生成分类结果。

我认为代码看起来像这样,但我不知道应该如何给出 LSTM 的输入

from __future__ import division, print_function, absolute_import

import tflearn
from tflearn.data_utils import to_categorical, pad_sequences
from tflearn.datasets import imdb

train, val = something.load_data()
trainX, trainY = train #each X sample is a (16,4096) nd float64 
valX, valY = val #each Y is a one hot vector of 101 classes.

net = tflearn.input_data([None, 16,4096])
net = tflearn.embedding(net, input_dim=4096, output_dim=256)
net = tflearn.lstm(net, 256)
net = tflearn.dropout(net, 0.5)
net = tflearn.lstm(net, 256)
net = tflearn.dropout(net, 0.5)
net = tflearn.fully_connected(net, 101, activation='softmax')
net = tflearn.regression(net, optimizer='adam',
                         loss='categorical_crossentropy')

model = tflearn.DNN(net, clip_gradients=0., tensorboard_verbose=3)
model.fit(trainX, trainY, validation_set=(testX, testY), show_metric=True,
          batch_size=128,n_epoch=2,snapshot_epoch=True)
1个回答

兵工厂,

我们必须重塑输入数据以适应 LSTM 的输入层,例如:

   trainX= np.reshape(trainX, (-1, 16, 4096))
   testX = np.reshape(testX, (-1, 16, 4096))

当一层的输出进入下一层的输入时,前一层必须产生如下序列:

    net = tflearn.lstm(net,128, dropout=0.2, return_seq=True)
    net = tflearn.lstm(net,128)
    net = tflearn.fully_connected(net, num_classes, activation='softmax')

希望这可以帮助。