Tensorflow == 2.0.0a0 - AttributeError: у модуля tenensflow нет атрибута global_variables_initializer - PullRequest
1 голос
/ 17 мая 2019

Я использую Tensorflow==2.0.0a0 и хочу запустить следующий скрипт:

import tensorflow as tf
import tensorboard
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import tensorflow_probability as tfp
from tensorflow_model_optimization.sparsity import keras as sparsity
from tensorflow import keras

tfd = tfp.distributions

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)

    model = tf.keras.Sequential([
      tf.keras.layers.Dense(1,kernel_initializer='glorot_uniform'),
      tfp.layers.DistributionLambda(lambda t: tfd.Normal(loc=t, scale=1))
    ])

Все мои старые ноутбуки работают с TF 1.13. Тем не менее, я хочу разработать ноутбук, в котором я использую Оптимизацию модели (сокращение нейронной сети) + TF Вероятность, для которой требуется Tensorflow > 1.13.

Все библиотеки импортированы, но init = tf.global_variables_initializer() выдает ошибку:

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

Также, tf.Session() генерирует ошибку:

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

Так что, я думаю, это может быть связано с Tensorflow , но у меня нет конфликтующих версий в моей среде Anaconda.

Выходы для версий библиотек:

tf.__version__
Out[16]: '2.0.0-alpha0'

tfp.__version__
Out[17]: '0.7.0-dev20190517'

keras.__version__
Out[18]: '2.2.4-tf'

Есть идеи по этому вопросу?

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Tensorflow 2.0 уходит из сеанса и переключается на активное выполнение. Вы по-прежнему можете запускать свой код, используя сессию, если вы обращаетесь к библиотеке tf.compat и отключаете активное выполнение:

import tensorflow as tf
import tensorboard
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import tensorflow_probability as tfp
from tensorflow_model_optimization.sparsity import keras as sparsity
from tensorflow import keras


tf.compat.v1.disable_eager_execution()


tfd = tfp.distributions

init = tf.compat.v1.global_variables_initializer()

with tf.compat.v1.Session() as sess:
    sess.run(init)

    model = tf.keras.Sequential([
      tf.keras.layers.Dense(1,kernel_initializer='glorot_uniform'),
      tfp.layers.DistributionLambda(lambda t: tfd.Normal(loc=t, scale=1))
    ])

Вы можете преобразовать любой скрипт Python таким образом, используя:

tf_upgrade_v2 --infile in.py --outfile out.py
0 голосов
/ 17 мая 2019

Я считаю, что "Session ()" был удален с TF 2.0.

Вместо этого используйте функции для построения графика (согласно документации TensorFlow): https://www.tensorflow.org/alpha/tutorials/eager/tf_function

Журнал аналогичного вопроса: https://github.com/tensorflow/community/pull/20/commits/9645a1249d3bdbe8e930af62d1958120a940c31d

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...