El objeto 'XXX' no tiene atributos. La función 'xxx' cambia entre las versiones de tensorflow al pisar el registro de pozos.

1.AttributeError: el módulo 'tensorflow' no tiene el atributo 'py_func'

Documentación oficial: https://www.tensorflow.org/api_docs/python/tf/compat/v1/py_func
Reemplacé py_func con tf.compat.v1.py_func para pasar.

tf.compat.v1.py_func(
    func, inp, Tout, stateful=True, name=None
)

Precaución: esta API se diseñó para TensorFlow v1.

Este nombre quedó en desuso y se eliminó en TF2, pero tf.numpy_function es un reemplazo casi exacto, simplemente elimine el argumento con estado (todas las llamadas a tf.numpy_function se consideran con estado). Es compatible con la ejecución ansiosa y la función tf.

tf.py_function es un reemplazo cercano, pero no exacto, que pasa los tensores de TensorFlow a la función envuelta en lugar de las matrices NumPy, que proporciona gradientes y puede aprovechar los aceleradores.

Antes:

def fn_using_numpy(x):
  x[0] = 0.
  return x
tf.compat.v1.py_func(fn_using_numpy, inp=[tf.constant([1., 2.])],
    Tout=tf.float32, stateful=False)

Después:

tf.numpy_function(fn_using_numpy, inp=[tf.constant([1., 2.])],
    Tout=tf.float32)

2.AttributeError: el objeto 'PrefetchDataset' no tiene el atributo 'make_one_shot_iterator'

Cambiar a tf.compat.v1.data.make_one_shot_iterator

Esta es una API antigua para trabajar con elementos de conjuntos de datos y solo debe usarse durante la transición de TF 1 a TF 2. Tenga en cuenta que el uso de esta API debe ser un estado temporal del código base, ya que, por lo general, no se garantiza la interoperabilidad de TF 1 con el código TF 2.

Último código:

    if params['is_conditional']:
        train_x, train_y = dataset.make_one_shot_iterator().get_next()
    else:
        train_x, train_y = dataset.make_one_shot_iterator().get_next(), None

Nuevo código :

    if params['is_conditional']:
        train_x, train_y = tf.compat.v1.data.make_one_shot_iterator(dataset).get_next()
    else:
        train_x, train_y = tf.compat.v1.data.make_one_shot_iterator(dataset).get_next(), None

3. Soluciones a tales problemas

(1) Use conda para crear otro entorno para instalar TF1;

(2) Consulte la documentación oficial para automatizar la transformación de su propio código.

Enlace: https://www.tensorflow.org/guide/migrate

Supongo que te gusta

Origin blog.csdn.net/qq_44324007/article/details/127720781
Recomendado
Clasificación