我在理解 TensorFlow 中的 LSTM 模型时遇到了一些麻烦。
我使用tflearn作为包装器,因为它会自动执行所有初始化和其他更高级别的操作。为简单起见,让我们考虑这个示例程序。直到第 42 行,net = tflearn.input_data([None, 200])
很清楚会发生什么。您将数据集加载到变量中并使其具有标准长度(在本例中为 200)。在这种情况下,输入变量和 2 个类都转换为 one-hot 向量。
LSTM 如何接受输入?它预测了多少个样本的输出?
代表什么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)