You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tf.compat.v1.summary.merge_all()合并摘要时出现NoneType错误

问题:tf.compat.v1.summary.merge_all()返回None引发TypeError错误

在调用tf.compat.v1.summary.merge_all()合并摘要时,self._summaries被赋值为None,最终触发以下错误:

File "main.py", line 216, in <module>
    tf.compat.v1.app.run()
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 40, in run
    _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/absl/app.py", line 312, in run
    _run_main(main, args)
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/absl/app.py", line 258, in _run_main
    sys.exit(main(argv))
  File "main.py", line 203, in main
    setup_training(hps.mode, generator, discriminator, generator_batcher, discriminator_batcher, generator_val_batcher, discriminator_val_batcher)
  File "main.py", line 160, in setup_training
    trainer.adversarial_train(generator, discriminator, generator_batcher, discriminator_batcher, generator_val_batcher, discriminator_val_batcher, summary_writer, sess_context_manager)
  File "/home/20bce120/tf2/trainer.py", line 106, in adversarial_train
    result_train = generator.run_train_step(sess, batch)
  File "/home/20bce120/tf2/generator.py", line 636, in run_train_step
    return sess.run(to_return, feed_dict)
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 968, in run
    run_metadata_ptr)
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1176, in _run
    self._graph, fetches, feed_dict_tensor, feed_handles=feed_handles)
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 487, in __init__
    self._fetch_mapper = _FetchMapper.for_fetch(fetches)
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 270, in for_fetch
    return _DictFetchMapper(fetch)
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 419, in __init__
    _FetchMapper.for_fetch(fetch) for fetch in fetches.values()
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 419, in <listcomp>
    _FetchMapper.for_fetch(fetch) for fetch in fetches.values()
  File "/apps/codes/anaconda3/envs/myenv2/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 265, in for_fetch
    (fetch, type(fetch)))
TypeError: Fetch argument None has invalid type <class 'NoneType'>

相关代码片段

def build_graph(self):
    
    tf.logging.info('Building graph...')
    t0 = time.time()
    self._add_placeholders()
    self._add_seq2seq()
    self.global_step = tf.Variable(0, name='global_step', trainable=False)
    if self._hps.mode == 'train'or self._hps.mode == 'pretrain':
        self._add_train_op()
        self._rollout()
        
    self._summaries = tf.compat.v1.summary.merge_all()
    tf.logging.info('Time to build graph: %i seconds', time.time() - t0)

解决方法

  • 确保摘要节点已被正确创建
    tf.compat.v1.summary.merge_all()仅能合并当前默认图中已存在的摘要节点(如tf.compat.v1.summary.scalar、tf.compat.v1.summary.histogram)。检查_add_train_op()或其他方法中是否已显式添加所需的摘要节点,比如在损失计算后添加标量摘要:

    # 在_add_train_op()函数内添加
    tf.compat.v1.summary.scalar('training_loss', self.loss)
    
  • 添加None值兜底逻辑
    即使确保了摘要节点存在,也可以通过兜底逻辑避免self._summaries为None:

    # 替换原merge_all调用代码
    self._summaries = tf.compat.v1.summary.merge_all()
    if self._summaries is None:
        # 创建空摘要节点,避免后续sess.run()报错
        self._summaries = tf.compat.v1.summary.merge([])
    
  • 确认模式分支的代码执行
    若摘要节点仅在train/pretrain模式下创建,需确认当前运行的self._hps.mode确实属于这两种模式,否则不会生成任何摘要节点,导致merge_all()返回None。

内容的提问来源于stack exchange,提问作者Monil Modi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:57:39