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

AttributeError:无法在__main__模块获取ImageRecord属性求助

问题排查:AttributeError: Can't get attribute 'ImageRecord' on <module 'main' from 'train.py'>

运行代码与报错位置

错误出现在代码第二行,完整代码片段:

for _ in tqdm(list(range(num_train_iterations))):
    batch = sess.run(train_dataloader.get_batch)
    _, train_loss_val, color_constancy_loss_val, contrastive_loss_val = \
        sess.run([train_op, train_loss, color_constancy_loss, contrastive_loss], feed_dict={
            x["images"]: batch[0],
            x["illums"]: batch[1],
            x["cc24s"]: batch[2]

核心报错信息

AttributeError: Can't get attribute 'ImageRecord' on <module '__main__' from 'train.py'>

完整回溯信息

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1365, in _do_call
    return fn(*args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1349, in _run_fn
    return self._call_tf_sessionrun(options, feed_dict, fetch_list,
  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1441, in _call_tf_sessionrun
    return tf_session.TF_SessionRun_wrapper(self._session, options, feed_dict,
tensorflow.python.framework.errors_impl.UnknownError: AttributeError: Can't get attribute 'ImageRecord' on <module '__main__' from 'train.py'>
Traceback (most recent call last):

  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py", line 244, in __call__
    ret = func(*args)

  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py", line 302, in wrapper
    return func(*args, **kwargs)

  File "C:\Users\AppData\Local\Temp\tmpg9kpovk5.py", line 17, in _func
    data = ag__.converted_call(ag__.ld(pickle).load, (ag__.ld(f),), None, fscope_1)

  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py", line 461, in converted_call
    return _call_unconverted(f, args, kwargs, options, False)

  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py", line 340, in _call_unconverted
    return f(*args)

AttributeError: Can't get attribute 'ImageRecord' on <module '__main__' from 'train.py'>


         [[{{node PyFuncStateless}}]]
         [[IteratorGetNext]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "train.py", line 179, in <module>
    main(sess)
  File "train.py", line 138, in main
    batch = sess.run(train_dataloader.get_batch)
  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 957, in run
    result = self._run(None, fetches, feed_dict, options_ptr,
  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1180, in _run
    results = self._do_run(handle, final_targets, final_fetches,
  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1358, in _do_run
    return self._do_call(_run_fn, feeds, fetches, targets, options,
  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1384, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.UnknownError: AttributeError: Can't get attribute 'ImageRecord' on <module '__main__' from 'train.py'>
Traceback (most recent call last):

  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py", line 244, in __call__
    ret = func(*args)

  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py", line 302, in wrapper
    return func(*args, **kwargs)

  File "C:\Users\AppData\Local\Temp\tmpg9kpovk5.py", line 17, in _func
    data = ag__.converted_call(ag__.ld(pickle).load, (ag__.ld(f),), None, fscope_1)

  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py", line 461, in converted_call
    return _call_unconverted(f, args, kwargs, options, False)

  File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py", line 340, in _call_unconverted
    return f(*args)

AttributeError: Can't get attribute 'ImageRecord' on <module '__main__' from 'train.py'>


         [[{{node PyFuncStateless}}]]
         [[IteratorGetNext]]

排查提示

  • 检查ImageRecord类的导入:找到仓库中定义ImageRecord的文件(通常在data目录下),确保train.py开头正确导入该类,且导入语句在数据加载相关代码之前执行。
  • 修复pickle的命名空间问题:如果生成训练用pickle文件时,ImageRecord类是在__main__模块中定义的,需要在train.py中添加以下代码,让pickle能识别该类:
    from 定义ImageRecord的模块名 import ImageRecord
    import __main__
    __main__.ImageRecord = ImageRecord
    
  • 验证TensorFlow版本:该仓库基于TensorFlow 1.x开发,若当前使用TF 2.x,大概率存在兼容性问题,建议切换到TensorFlow 1.15.x版本测试。
  • 检查数据加载逻辑:查看train_dataloader.get_batch方法,确认其中的pickle加载逻辑是否正确关联了ImageRecord类的定义。
  • 查看仓库内置解决方案:检查项目的issue列表,其他用户可能遇到过相同问题并给出了解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:15:55