2016-04-05 123 views
3

我在理解張量流中的LSTM模型時遇到了一些麻煩。 爲了簡單起見,我們考慮Example program瞭解Tensorflow LSTM模型輸入?

我使用tflearn作爲包裝,因爲它自動完成所有初始化和其他更高級別的工作。

直行號42net = tflearn.input_data([None, 200])很清楚發生了什麼。 您將一個數據集加載到變量中,並在此情況下將其標準長度設置爲200.對於這兩個輸入變量以及此時出現的2個類都將轉換爲一個熱向量。

我在這裏想知道的是,LSTM如何處理輸入以及它預測輸出的樣本數量? 這裏n_words=20000 & net = tflearn.embedding(net, input_dim=20000, output_dim=128)這些參數表明什麼?

我的目標是replicatepaper.

活動識別數據集例如我想輸入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需要你的向量的大小一次電池:

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

+1

鏈接已損壞。重命名爲https://github.com/nlintz/TensorFlow-Tutorials/blob/master/07_lstm.py –

+0

謝謝!更新。 –