Tensorflow警告:提供给MultiRNNCell的两个单元格是同一个对象

Tensorflow警告:提供给MultiRNNCell的两个单元格是同一个对象,tensorflow,neural-network,recurrent-neural-network,Tensorflow,Neural Network,Recurrent Neural Network,在执行tensorflow脚本时,我一直收到以下警告 警告:tensorflow:提供给MultiRNNCell的至少两个单元格是 同一对象将共享权重 然而,有问题的RNN似乎运行良好,并且正在做出准确的预测 与警告信息相关的含义是什么?可以安全地忽略它吗?如果是潜在的严重问题,如何评估其影响?您可以使用[lstm\u layer]*num\u layers创建多个RNN层,这些层实际上引用python中的同一对象。这种用法在tensorflow的某些版本中是正常的,有些版本会报告错误 正如警告

在执行tensorflow脚本时,我一直收到以下警告

警告:tensorflow:提供给MultiRNNCell的至少两个单元格是 同一对象将共享权重

然而,有问题的RNN似乎运行良好,并且正在做出准确的预测


与警告信息相关的含义是什么?可以安全地忽略它吗?如果是潜在的严重问题,如何评估其影响?

您可以使用
[lstm\u layer]*num\u layers
创建多个RNN层,这些层实际上引用python中的同一对象。这种用法在tensorflow的某些版本中是正常的,有些版本会报告错误

正如警告所说,由于所有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)

RNNCell引用可能是相同的(它们是相同的对象)。你能把相关代码放进去吗?
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)