4

我在理解 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)
4

1 回答 1

-1

基本上, lstm 为一次单元格获取向量的大小:

lstm = rnn_cell.BasicLSTMCell(lstm_size, forget_bias=1.0)

那么,你想喂多少个时间序列?这取决于你的馈送向量。中的数组数量X_split决定了时间步的数量:

X_split = tf.split(0, time_step_size, X)
outputs, states = rnn.rnn(lstm, X_split, initial_state=init_state)

在您的示例中,我猜lstm_size是 256,因为它是一个单词的向量大小。这time_step_size将是您的训练/测试句子中的最大字数。

请看这个例子:https ://github.com/nlintz/TensorFlow-Tutorials/blob/master/07_lstm.py

于 2016-04-11T23:44:01.017 回答