Обработка выходных данных из tf.nn.dynamic_rnn в Tensorflow
Я передаю 3-х слойный LSTM tf.nn.dynamic_rnn
функция. Я хотел бы обработать вывод из dynamic_rnn
функционировать определенным образом: то есть, я хотел бы дать dynamic_rnn
выходной поток на полностью связанный слой. Выход из dynamic_rnn
тензор ранга 3, с формой [batch_size, sequence_length, hidden_dim]
,
Я проходил output[:, -1]
чья форма [batch_size, hidden_dim]
, к слою FC, так как я хотел использовать только последний выход dynamic_rnn
,
Однако на этот раз я хочу использовать вывод всей последовательности, то есть output[:]
, который является 3-м тензором, но веса соединений со слоем ФК представлены в 2-м тензоре W
,
1 ответ
Посмотрите на код для tf.layers.dense
для примера того, как любой тензор ранга (с самым внутренним измерением глубины) может быть обработан в слое. А именно: tf.matmul
знает, как применить матрицу умножения к 3-tensor
при правильной трансляции:
tf.matmul(A,W)
где A
имеет форму [b,t,d]
а также W
имеет форму [d,e]
берет внутренний продукт по внутренним размерам: форма выхода [b,t,e]
, Добавление вектора смещения, в форме [e]
Точно так же будет транслироваться правильно.