如何修复:AttributeError:模块“ tensorflow”没有属性“ contrib”

时间:2019-11-21 13:35:49

标签: python-3.x tensorflow tensorflow2.0

我正在训练LSTM,并且正在定义参数和回归层。出现以下代码,标题出现错误:

 lstm_cells = [
    tf.contrib.rnn.LSTMCell(num_units=num_nodes[li],
                            state_is_tuple=True,
                            initializer= tf.contrib.layers.xavier_initializer()
                           )
 for li in range(n_layers)]

drop_lstm_cells = [tf.contrib.rnn.DropoutWrapper(
    lstm, input_keep_prob=1.0,output_keep_prob=1.0-dropout, state_keep_prob=1.0-dropout
) for lstm in lstm_cells]
drop_multi_cell = tf.contrib.rnn.MultiRNNCell(drop_lstm_cells)
multi_cell = tf.contrib.rnn.MultiRNNCell(lstm_cells)

w = tf.get_variable('w',shape=[num_nodes[-1], 1], initializer=tf.contrib.layers.xavier_initializer())
b = tf.get_variable('b',initializer=tf.random_uniform([1],-0.1,0.1))

我正在使用tensorflow2,并且已经阅读了https://www.tensorflow.org/guide/migrate指南,我认为网络上几乎所有内容。 但我无法解决。 我该怎么办?

3 个答案:

答案 0 :(得分:0)

tf.contrib.rnn.LSTMCell-> tf.compat.v1.nn.rnn_cell.LSTMCell或tf.keras.layers.LSTMCell

tf.contrib.rnn.DropoutWrapper-> tf.compat.v1.nn.rnn_cell.DropoutWrapper或tf.keras.layers.DropOut

tf.contrib.rnn.MultiRNNCell-> tf.compat.v1.nn.rnn_cell.MultiRNNCell或tf.keras.layers.RNN

答案 1 :(得分:0)

发生此错误是因为{2}版本的contrib模块已被删除。有两种方法可以解决此问题:

  1. 您可以删除当前软件包并安装Series 1版本之一。

  2. 您可以使用此命令,该命令也与版本2软件包兼容:在命令行中使用tf.compat.v1.nn.rnn_cell.LSTMCell代替tf.contrib.rnn.LSTMCell,并使用tf.initializers.GlorotUniform ()代替tf.contrib.layers.xavier_initializer ()其他包含rnn的命令,您可以使用tf.compat.v1.nn.rnn_cell

答案 2 :(得分:0)

tf_upgrade_v2已从TF 2.0 alpha开始移出TF。
看看这些tf 2.0发行说明https://github.com/tensorflow/tensorflow/releases/tag/v2.0.0-alpha0
您可以使用tidyr脚本将TF 1.x代码升级到TF2.x。 https://www.tensorflow.org/alpha/guide/upgrade