鱼C论坛

 找回密码
 立即注册
查看: 69|回复: 1

Tensorflow报错

[复制链接]
发表于 2024-4-29 16:52:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
球球帮一下,我快疯了
chatGPT我已经问了一百遍了,每次都有报错,一行一行的报错,真服了
源代码:
import tensorflow as tf

# 定义一个32位浮点变量,初始值为0,这个代码就是不断更新w1参数,优化w1参数,滑动平均做了一个w1的影子
w1 = tf.Variable(0, dtype=tf.float32)

# 定义num_updates (NN的迭代轮数),初始值为0,不可被优化(训练),这个参数不训练
global_step = tf.Variable(0, trainable=False)

# 实例化滑动平均类,给删减率为0.99,当前轮数global_step
MOVING_AVERAGE_DECAY = 0.99
ema = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)

# 获取所有可训练的变量
trainable_vars = tf.compat.v1.trainable_variables()

# ema.apply后面的括号里是更新列表,每次运行ema_op时,对更新列表中的元素求滑动平均值
ema_op = ema.apply(trainable_vars)

# 获取所有可训练变量的滑动平均值
ema_averages = [ema.average(var) for var in trainable_vars]

# 初始化所有变量
init_op = tf.compat.v1.global_variables_initializer()

# 添加操作到默认图中
with tf.compat.v1.Session() as sess:
    # 添加初始化操作到图中
    sess.run(init_op)

    # 打印初始值
    print("初始值:")
    print("w1:", sess.run(w1))
    print("滑动平均值:", sess.run(ema_averages))

    # 更新w1的值并运行ema_op
    sess.run(tf.compat.v1.assign(w1, 1))
    sess.run(ema_op)

    # 打印更新后的值和滑动平均值
    print("更新后:")
    print("w1:", sess.run(w1))
    print("滑动平均值:", sess.run(ema_averages))


报错信息:
WARNING:tensorflow:From D:/桌面/测试.py:14: The name tf.trainable_variables is deprecated. Please use tf.compat.v1.trainable_variables instead.

Traceback (most recent call last):
  File "D:/桌面/测试.py", line 28, in <module>
    sess.run(init_op)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\client\session.py", line 972, in run
    result = self._run(None, fetches, feed_dict, options_ptr,
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\client\session.py", line 1142, in _run
    raise RuntimeError('The Session graph is empty. Add operations to the '
RuntimeError: The Session graph is empty. Add operations to the graph before calling run().

Tensorflow版本:
2.16.1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-29 16:52:39 | 显示全部楼层
这个报错是因为在TensorFlow 2.x版本中,会话(Session)不再需要显式地创建和关闭。而且,全局变量初始化操作也不再需要放在会话中执行。

那么,如何解决这个问题呢?请尝试按照以下方式修改您的代码:

  1. import tensorflow as tf

  2. # 定义一个32位浮点变量,初始值为0,这个代码就是不断更新w1参数,优化w1参数,滑动平均做了一个w1的影子
  3. w1 = tf.Variable(0, dtype=tf.float32)

  4. # 定义num_updates (NN的迭代轮数),初始值为0,不可被优化(训练),这个参数不训练
  5. global_step = tf.Variable(0, trainable=False)

  6. # 实例化滑动平均类,给删减率为0.99,当前轮数global_step
  7. MOVING_AVERAGE_DECAY = 0.99
  8. ema = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)

  9. # 获取所有可训练的变量
  10. trainable_vars = tf.compat.v1.trainable_variables()

  11. # ema.apply后面的括号里是更新列表,每次运行ema_op时,对更新列表中的元素求滑动平均值
  12. ema_op = ema.apply(trainable_vars)

  13. # 获取所有可训练变量的滑动平均值
  14. ema_averages = ema.average(trainable_vars)

  15. # 初始化所有变量(已过时)
  16. # init_op = tf.compat.v1.global_variables_initializer()

  17. # 不再需要显示地初始化全局变量
  18. # 添加操作到默认图中
  19. # with tf.compat.v1.Session() as sess:
  20.     # 添加初始化操作到图中
  21.     # sess.run(init_op)

  22. # 创建一个Eager执行环境
  23. tf.compat.v1.enable_eager_execution()

  24. # 打印初始值
  25. print("初始值:")
  26. print("w1:", w1.numpy())
  27. print("滑动平均值:", ema_averages.numpy())

  28. # 更新w1的值并运行ema_op
  29. w1.assign(1)
  30. ema_op.run()

  31. # 打印更新后的值和滑动平均值
  32. print("更新后:")
  33. print("w1:", w1.numpy())
  34. print("滑动平均值:", ema_averages.numpy())
复制代码


这样修改后,您应该可以顺利运行代码并得到正确的输出。希望能解决您的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 16:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表