テンソルフローでRNNとLSTMをコーディングする方法を学びました。私はこのブログの記事で、オンラインでの例を見つけテンソルフローにおけるRNNとLSTMの実装
以下http://r2rt.com/recurrent-neural-networks-in-tensorflow-ii.html
はスニペットIがchar-RNN世代のために、最終的に使用するトラブルLSTMネットワークの理解を持っています
x = tf.placeholder(tf.int32, [batch_size, num_steps], name='input_placeholder')
y = tf.placeholder(tf.int32, [batch_size, num_steps], name='labels_placeholder')
embeddings = tf.get_variable('embedding_matrix', [num_classes, state_size])
rnn_inputs = [tf.squeeze(i) for i in tf.split(1,
num_steps, tf.nn.embedding_lookup(embeddings, x))]
は別のセクションですここで、重みが定義されている場所
with tf.variable_scope('softmax'):
W = tf.get_variable('W', [state_size, num_classes])
b = tf.get_variable('b', [num_classes], initializer=tf.constant_initializer(0.0))
logits = [tf.matmul(rnn_output, W) + b for rnn_output in rnn_outputs]
y_as_list = [tf.squeeze(i, squeeze_dims=[1]) for i in tf.split(1, num_steps, y)]
xは、供給されるデータであり、yはラベルのセットです。 lstm方程式では、一連のゲートがあり、x(t)は系列で乗算され、prev_hidden_stateには重みのセットが乗算され、バイアスが加えられ、非リニア性が適用されます。
は、ここで私は一つだけ重み行列は、それは両方のXに対する 作品(t)とが同様prev_hidden_stateことを意味して定義されているこの場合
- を有する疑問です。私はそれが 重み行列で乗算する必要があります知っているが、なぜ最初の次元のnum_classesは、我々は1 の寸法を削除スクイズを使用しますが、なぜされているrnn_inputsについて
- ですが、私はあることをしたいと思う埋め込み行列の場合
- ワンホットエンコーディングで。私たちは、離散(BATCH_SIZE X 1) ベクターに 寸法(BATCH_SIZE X num_steps)のXをアンロールし、ネットワークを介してこれらの値を渡すと、この 右