私はtensorflowでモデルを設計して、lstmを使って次の単語を予測しようとしています。
Tensorflow RNNのチュートリアルでは、PTBデータセットにLSTMを使用する方法を擬似コードで示しています。
バッチとラベルを生成する段階に達しました。あらかじめ定義されたLSTMへの入力の次元を理解する
def generate_batches(raw_data, batch_size):
global data_index
data_len = len(raw_data)
num_batches = data_len // batch_size
#batch = dict.fromkeys([i for i in range(num_batches)])
#labels = dict.fromkeys([i for i in range(num_batches)])
batch = np.ndarray(shape=(batch_size), dtype=np.float)
labels = np.ndarray(shape=(batch_size, 1), dtype=np.float)
for i in xrange(batch_size) :
batch[i] = raw_data[i + data_index]
labels[i, 0] = raw_data[i + data_index + 1]
data_index = (data_index + 1) % len(raw_data)
return batch, labels
このコードは、バッチとラベルサイズ(BATCH_SIZE X 1)が得られます。
これらのバッチおよびラベルは、tf.nn.embedding_lookup()
を使用して(batch_size x vocabulary_size)のサイズにすることもできます。
ここで問題は、次の機能を使用してrnn_cell.BasicLSTMCell
を使用する方法、またはユーザー定義のlstmモデルを使用する方法です。 input dimension to LSTM cell
はどのようになりますか?num_steps
でどのように使用されますか?
バッチとラベルのどのサイズがどのシナリオで便利ですか?