Таким образом, это оказалось ошибкой. Для тех, кто испытывает ту же проблему, Microsoft заявила, что будет исправлена в VS 15.8 Preview 4.
Вы используете [lstm_layer] * num_layers
для создания нескольких слоев RNN, которые фактически ссылаются на один и тот же объект в python. Это использование является нормальным в некоторых версиях tenorflow, а некоторые версии сообщают об ошибках.
Как говорится в предупреждении, поскольку все уровни RNN являются одним и тем же объектом, их весовые коэффициенты будут оставаться одинаковыми. Все ошибки возвращаются на уровень RNN. Это эквивалентно уменьшению параметров модели и уменьшению сложности модели.
Если вы хотите создать несколько разных слоев RNN и сложных моделей, вы можете использовать следующее использование. Оценка эффективности этих двух различных методов зависит от конкретных сценариев применения и результатов. Если результаты вашей модели достаточно хороши, более сложные модели не имеют особого смысла.
rnn_layers = []
for _ in range(num_layers):
lstm_layer = rnn.LSTMBlockCell(num_units, forget_bias=1)
lstm_layer = rnn.DropoutWrapper(lstm_layer, output_keep_prob=output_keep_prob)
rnn_layers.append(lstm_layer)
stacked_lstm = rnn.MultiRNNCell(rnn_layers)