ModuleNotFoundError: На TensorFlow 2.1.0 Python 3.7.7 не был получен модуль с именем tenorflow.initializers. - PullRequest
0 голосов
/ 07 апреля 2020

Я получаю вышеуказанную ошибку в приведенной ниже строке кода:
from tensorflow.initializers import random_uniform
Когда я запускаю тот же файл кода на Python 2.7.17 TensorFlow 1.15.0, я не получаю вышеуказанную ошибку, но я получаю следующую ошибку:
SyntaxError: неверный синтаксис в строке: self.state_memory=np.zeros((self.mem_size,*input_shape))
Каким-то образом он не распознает * перед переменной input_shape.
Ссылка на код Github кода: https://github.com/philtabor/Youtube-Code-Repository/blob/master/ReinforcementLearning/PolicyGradient/DDPG/pendulum/tensorflow/ddpg_orig_tf.py

Я новичок в Tensorflow и python. Есть ли что-то очень базовое c, что мне не хватает?

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

tensorflow.initializers отсутствует в TensorFlow 2.x. Вместо этого вы можете использовать https://www.tensorflow.org/api_docs/python/tf/random/uniform или https://www.tensorflow.org/api_docs/python/tf/random_uniform_initializer

Например:

import tensorflow as tf

print(tf.random.uniform(shape=[2,3]))

вывод:

<tf.Tensor: shape=(2, 3), dtype=float32, numpy=
array([[0.26927817, 0.40026963, 0.28173876],
       [0.3990215 , 0.15438187, 0.8430346 ]], dtype=float32)>
0 голосов
/ 07 апреля 2020

Чтобы ответить на синтаксическую ошибку, оператор распаковки (*) не работает в Python 2.7. Вместо этого вы можете определить входную форму в __init__ и использовать этот атрибут при вызове tf.placeholder. Например:

class DQNetwork:
    def __init__(self, state_size, action_size, learning_rate, name='DQNetwork'):
        #set_trace()
        print (state_size)
        print (action_size)
        self.state_size = state_size
        self.action_size = action_size
        self.learning_rate = learning_rate
        # Define input shape (assumes state_size is a list)
        self.input_shape = [None] + state_size 
        with tf.variable_scope(name):
            # We create the placeholders
            self.inputs_ = tf.placeholder(tf.float32, self.input_shape, name="inputs")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...