Обработка выходных данных из 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] Точно так же будет транслироваться правильно.

Другие вопросы по тегам