【问题标题】:Error in TF 2.3. when mixing eager and non-eager Keras modelsTF 2.3 中的错误。当混合 Eager 和 non-Eager Keras 模型时
【发布时间】:2021-06-06 05:57:09
【问题描述】:

我在尝试在 Tenserlfow 2.3 中拟合模型时遇到了这个问题,是否有任何解决方法或解决方案?当我尝试使用 TensorFlow 神经网络模型预测一些记录时,也会发生此错误。我希望 Tensorflow 专家能找出问题所在!

代码:

import tensorflow as tf
import numpy as np

DO_BUG = True

inputs = tf.keras.Input((1,))
outputs = tf.keras.layers.Dense(10)(inputs)
model0 = tf.keras.Model(inputs=inputs, outputs=outputs)

if DO_BUG:
    with tf.Graph().as_default():
        inputs = tf.keras.Input((1,))
        outputs = tf.keras.layers.Dense(10)(inputs)
        model1 = tf.keras.Model(inputs=inputs, outputs=outputs)

model0.compile(optimizer=tf.optimizers.SGD(0.1), loss=tf.losses.mse)
model0.fit(np.zeros((4, 1)), np.zeros((4, 10)))

日志:

Traceback (most recent call last):
  File ".../tmp.py", line 15, in <module>
    model0.fit(np.zeros((4, 1)), np.zeros((4, 10)))
  File "...\tensorflow\python\keras\engine\training_v1.py", line 807, in fit
    use_multiprocessing=use_multiprocessing)
  File "...\tensorflow\python\keras\engine\training_arrays.py", line 666, in fit
    steps_name='steps_per_epoch')
  File "...\tensorflow\python\keras\engine\training_arrays.py", line 189, in model_iteration
    f = _make_execution_function(model, mode)
  File "...\tensorflow\python\keras\engine\training_arrays.py", line 557, in _make_execution_function
    return model._make_execution_function(mode)
  File "...\tensorflow\python\keras\engine\training_v1.py", line 2072, in _make_execution_function
    self._make_train_function()
  File "...\tensorflow\python\keras\engine\training_v1.py", line 2021, in _make_train_function
    **self._function_kwargs)
  File "...\tensorflow\python\keras\backend.py", line 3933, in function
    'eager execution. You passed: %s' % (updates,))
ValueError: `updates` argument is not supported during eager execution. You passed: [<tf.Operation 'training/SGD/SGD/AssignAddVariableOp' type=AssignAddVariableOp>]

【问题讨论】:

  • 您使用的 tensorflow 版本是什么?我认为 tf-2.x 版本不支持使用tf.Graph().as_default()。您使用它的任何具体原因?

标签: python tensorflow keras deep-learning tensorflow2.0


【解决方案1】:

下面的代码可以正常工作。使用下面评论部分的任何具体原因。

import tensorflow as tf
import numpy as np

DO_BUG = True

inputs = tf.keras.Input((1,))
outputs = tf.keras.layers.Dense(10)(inputs)
model0 = tf.keras.Model(inputs=inputs, outputs=outputs)
"""
if DO_BUG:
    with tf.Graph().as_default():
        inputs = tf.keras.Input((1,))
        outputs = tf.keras.layers.Dense(10)(inputs)
        model1 = tf.keras.Model(inputs=inputs, outputs=outputs)
"""
model0.compile(optimizer=tf.optimizers.SGD(0.1), loss=tf.losses.mse)
model0.fit(np.zeros((4, 1)), np.zeros((4, 10)))

【讨论】:

    猜你喜欢
    • 2020-11-24
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    相关资源
    最近更新 更多