Я пытаюсь вычислить общие параметры модели LSTM, и у меня есть некоторая путаница.
Я искал некоторые ответы, такие как эта почта и эта почта. Я не знаю, какова роль скрытых единиц в вычислении параметров (h1=64, h2=128 в моем случае).
import tensorflow as tf
b, t, d_in, d_out = 32, 256, 161, 257
data = tf.placeholder("float", [b, t, d_in]) # [batch, timestep, dim_in]
labels = tf.placeholder("float", [b, t, d_out]) # [batch, timestep, dim_out]
myinput = data
batch_size, seq_len, dim_in = myinput.shape
rnn_layers = []
h1 = 64
c1 = tf.nn.rnn_cell.LSTMCell(h1)
rnn_layers.append(c1)
h2 = 128
c2 = tf.nn.rnn_cell.LSTMCell(h1)
rnn_layers.append(c2)
multi_rnn_cell = tf.nn.rnn_cell.MultiRNNCell(rnn_layers)
rnnoutput, state = tf.nn.dynamic_rnn(cell=multi_rnn_cell,
inputs=myinput, dtype=tf.float32)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
all_trainable_vars = tf.reduce_sum([tf.reduce_prod(v.shape) for v in tf.trainable_variables()])
print(sess.run(all_trainable_vars))
Я напечатал общее количество параметров, используя Tensorflow, он показал, что общее количество параметров составляет 90880. Как я могу получить этот результат шаг за шагом, спасибо.

В вашем случае вы определили ячейку LSTM через эту строку c1 = tf.nn.rnn_cell.LSTMCell(h1). Чтобы ответить на ваш вопрос, здесь я представлю математическое определение LSTM. Как на изображении (источник изображения википедия-lstm) ниже,
t: значит во время t.
f_t назван воротами забвения.i_t называется входными воротами.o_t зовут зовут.c_t, h_t называются состоянием ячейки и скрытым состоянием ячейки LSTM соответственно.Для tf.nn.rnn_cell.LSTMCell(h1)h1=64 является размерностью h_t, то есть dim(h_t) = 64.
Жаль, что я сделал ошибку. c2 = tf.nn.rnn_cell.LSTMCell(h1). Должно быть c2 = tf.nn.rnn_cell.LSTMCell(h2). В моем случае для первого слоя суммарный параметр: 4 * (64 * (64 + 161) + 64) = 57856, а для второго слоя суммарный параметр: 4 * (128 * (128 + 64) + 128) = 98816. Всего 57856 + 98816 = 156672, что совпадает с тем, что напечатал Tensorflow.
Большое спасибо за ваше объяснение. Еще одна вещь, вы знаете, как я могу получить окончательный результат 90880? Я имею в виду, каковы размеры W, U, b для двух слоев (h1=64, h2=128)?