невозможно использовать tf.contrib - PullRequest
0 голосов
/ 06 апреля 2020

Я импортировал модуль tenorflow, но не могу использовать tf.contrib. Я не знаю, в чем проблема. Я пытался запустить его в разных версиях, но получаю один и тот же вывод.

ModulesImported:

import tensorflow.compat.v1 as tf1
tf1.disable_v2_behavior() 
import tensorflow as tf2

Код:

tf2.contrib.rnn.LSTMCell(num_units=num_nodes[li],
                            state_is_tuple=True,
                            initializer= tf.contrib.layers.xavier_initializer()
                           )

Вывод:

AttributeError: module 'tensorflow' has no attribute 'contrib'

1 Ответ

3 голосов
/ 08 апреля 2020

Я думаю, что проблема в версии, я пробовал ее в версии 1.15.2, и она работала для меня. После установки указанной версии попробуйте приведенный ниже код, он должен работать.

import tensorflow.compat.v1 as tf1
tf1.disable_v2_behavior() 
import tensorflow as tf2 #Tensorflow 1.15.2
from tensorflow.contrib.rnn import LSTMCell


LSTMCell(num_units=num_nodes[li],
                            state_is_tuple=True,
                            initializer= tf.contrib.layers.xavier_initializer()
                           )

Но если вы используете TensorFlow 2.x, версия contrib не рекомендуется, вы можете использовать приведенный ниже код. Поскольку xavier_initializer также использует contrib, вы можете использовать GlorotUniform инициализатор, который совпадает с xavier_initializer . Следуйте приведенному ниже коду.

import tensorflow.compat.v1 as tf1
tf1.disable_v2_behavior() 
import tensorflow as tf2 #Tensorflow 2.x

tf2.compat.v1.nn.rnn_cell.LSTMCell(num_units=10,
                            state_is_tuple=True,
                            initializer= tf2.initializers.GlorotUniform()
                           ) 
...