Oglądam ten samouczek, w którym pisze kod Tensorlow dla klasyfikacji MNist.
Oto model RNN:

batch_size = 128
chunk_size = 28
n_chunks = 28
rnn_size = 128

def recurrent_neural_network(x):
   layer = {'weights':tf.Variable(tf.random_normal([rnn_size,n_classes])),
         'biases':tf.Variable(tf.random_normal([n_classes]))}

   x = tf.transpose(x, [1,0,2])
   x = tf.reshape(x, [-1, chunk_size])
   x = tf.split(x, n_chunks, 0)

   lstm_cell = rnn.BasicLSTMCell(rnn_size,state_is_tuple=True)
   outputs, states = rnn.static_rnn(lstm_cell, x, dtype=tf.float32)

   output = tf.matmul(outputs[-1],layer['weights']) + layer['biases']

   return output,outputs,states

Po tym wydrukuję wymiarach wyjść i stanów odpowiednio
lubię to:

print("\n", len(outputs),"\n",len(outputs[0]),"\n",len(outputs[0][0]))
print("\n", len(states),"\n",len(states[0]),"\n",len(states[0][0]))

Dostaję wyjście stwierdzeń drukowania jako:
28
. 128
. 128.

2
. 128
. 128.

Rozumiem, że kształt wyjściowy jest 28x128x128 (Time_Steps x rnn_size x batch_size)
Ale nie rozumiem kształtu "państw"?

0
Sandeep Ipk 27 czerwiec 2017, 08:40

3 odpowiedzi

Najlepsza odpowiedź

Sprawdź to bardzo dobry wpis na blogu o tym, jak działa LSTMS: http: // Colah. Github.io/posts/2015-08-nstanding-lstms/.

LSTM mają jeden ukryty stan, ale także jeden stan komórek pamięci; Stąd rozmiar pierwszego wymiaru zmiennej {X0}} (2). Rozmiar następujących wymiarów to batch_size następnie rnn_size.

1
Florentin Hennecker 27 czerwiec 2017, 05:48

Każdy LSTM ma dwa stany, 0. dla stanu długoterminowego, natomiast pierwsze w stanie krótkoterminowym. Basicrnncell, zawsze mieć jeden stan, tj. Stan krótkoterminowy.

Odpocznij już wyjaśniony:

128 : liczba neuronów lub może powiedzieć rnn_size w twoim przypadku.

128 : rozmiar partii I.e. Jedna wyjście dla każdego wejścia.

0
vipin bansal 2 wrzesień 2018, 10:27

states zawiera 2 matrycę, cell i hidden, która jest c i h w następującej wzorze.

enter image description here

1
danche 27 czerwiec 2017, 05:48