环境

Python: 3.6
Tensorflow-gpu: 2.1.0

错误信息

something error in training. ValueError(“Unable to save the object ListWrapper([‘Algorithm’, ‘ACC’, ‘MAE’, ‘MAPE’, ‘MSE’, ‘RMSE’, ‘R2’, ‘ME’, ‘Spearman’]) (a list wrapper constructed to track trackable TensorFlow objects). The wrapped list was modified outside the wrapper (its final value was [‘Algorithm’, ‘ACC’, ‘MAE’, ‘MAPE’, ‘MSE’, ‘RMSE’, ‘R2’, ‘ME’, ‘Spearman’], its value when a checkpoint dependency was added was None), which breaks restoration on object creation.\n\nIf you don’t need this list checkpointed, wrap it in a tf.contrib.checkpoint.NoDependency object; it will be automatically un-wrapped and subsequently ignored.”,)
Traceback (most recent call last):

tf.contrib.checkpoint.NoDependency object
NoDependency also works with tf.keras.Model, but only for checkpoint dependencies: wrapping a Layer in NoDependency will assign the (unwrapped) Layer to the attribute without a checkpoint dependency, but the Model will still track the Layer (so it will appear in Model.layers, and its variables will appear in Model.variables).

分析

简单来说,就是在变量(记为param)的值在model training 过程中发生了变化,从而导致在执行保存模型(即,checkpoint.save)时出现无法保存的情况。

代码的逻辑是这样的:

argparser: argparseclass build_model():''' model builder class'''def __init__(parser,....):if build:super().__init__(*self.init_model())def init_model():passdef  train_model(parser, data)params = parse_argument(parser)eval_metric_name = hparams['eval_metric_name']pp = [x for x in eval_metric_name]**pp.insert(0, 'Algorithm')**for i in np.arange(num_iterations):train_batch(data)checkpoint.save(model)  # the place error reported...parser = argparse.ArgumentParser()
parser.add_argument('--eval_metric_name', type=list, default=['ACC', 'MAE', 'MAPE', 'MSE', 'RMSE', 'R2', 'ME', 'Spearman'], help='please set eval_metric_name')// define model
model = build_model(parser)// load data
data = dataloader.load_data()// model train
model.train_model(parser, data)

如上, tractable variable 在training过程中发生变化:pp.insert(0, ‘Algorithm’), 从而导致save model时出现问题,

解决问题

insert操作会修改变量内存本身的值
pp = [‘Algorithm’] + pp

总结

这个问题也是偶然碰到的, 之前一直没有问题, 起因在更换了model的定义方式。
之前model 的定义基于Functional 的方式: 模型类的call方法中最终返回的是tf.keras.Model 对象,
因为一些其他原因, 将模型的定义方式改为了基于Model subclass 的方式,然后就出现了这个问题, 莫名其妙。

Bug: tf.contrib.checkpoint.NoDependency object相关推荐

  1. 重磅 | TensorFlow 2.0即将发布,所有tf.contrib将被弃用

    作者 | 阿司匹林 出品 | AI科技大本营(公众号ID:rgznai100) 上周,谷歌刚刚发布了 TensorFlow 1.10.0 版本(详见<TensorFlow 版本 1.10.0 发 ...

  2. TF学习——TF之API:TensorFlow的高级机器学习API—tf.contrib.learn的简介、使用方法、案例应用之详细攻略

    TF学习--TF之API:TensorFlow的高级机器学习API-tf.contrib.learn的简介.使用方法.案例应用之详细攻略 目录 tf.contrib.learn的简介 tf.contr ...

  3. TensorFlow 2.0要来了,tf.contrib要砍了 | 有什么意见你说啊

    圆栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI TensorFlow 2.0要来了.  昨天,谷歌大脑的Martin Wicke在一封公开邮件里,给这座即将造好的里程碑,做了个预告 ...

  4. tf.nn,tf.layers, tf.contrib模块介绍

    一.tf.nn,tf.layers, tf.contrib概述 我们在使用tensorflow时,会发现tf.nn,tf.layers, tf.contrib模块有很多功能是重复的,尤其是卷积操作,在 ...

  5. TensorFlow-4: tf.contrib.learn 快速入门

    学习资料: https://www.tensorflow.org/get_started/tflearn 相应的中文翻译: http://studyai.site/2017/03/05/%E3%80% ...

  6. tensorflow兼容处理 tensorflow.compat.v1 tf.contrib

    20201130 问题提出: v1版本中tensorflow中contrib模块十分丰富,但是发展不可控,因此在v2版本中将这个模块集成到其他模块中去了.在学习tensorflow经常碰到tf.con ...

  7. 第十六节,使用函数封装库tf.contrib.layers

    目录 一 tf.contrib.layers中的具体函数介绍 1.tf.contrib.layers.conv2d()函数的定义如下: 2.tf.contrib.layers.max_pool2d() ...

  8. tf.contrib.layers.fully_connected详解

    博主 https://www.jianshu.com/p/673fd07954e9 tf.contrib.layers.fully_connected(F, num_outputs,activatio ...

  9. TensorFlow高层次机器学习API (tf.contrib.learn)

    TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载csv格 ...

  10. tf.nn.softmax_cross_entropy_with_logits 和 tf.contrib.legacy_seq2seq.sequence_loss_by_example 的联系与区别

    文章目录 0.函数介绍 1.区别联系 1.1 tf.nn.softmax_cross_entropy_with_logits 1.2 tf.nn.sparse_softmax_cross_entrop ...

最新文章

  1. Cos和Qos有什么区别
  2. python统计字符串个数_python字符串中字符出现次数(python获取字符串个数)
  3. Vector的使用方法和自我理解
  4. 破解无线路由免费上网
  5. .NET常用工具类(Utils.cs)
  6. Android恶意软件偷取Uber凭证
  7. C#新版本风格项目文件(SDK风格项目 SDK-style project)
  8. 我TM快疯了,在博客园开博短短2个月,经历博客园数次故障。。。
  9. vue 判断页面加载完成_vue之骨架屏踩坑之路
  10. 论文笔记_S2D.55_2019_SLAM综述_Huang B. A Survey of Simultaneous Localization and Mapping
  11. kt条件例题运筹学_运筹学讲解习题
  12. arm体系结构编程-入门介绍
  13. sdut oj 2738 小鑫の日常系列故事(七)——小纸条
  14. php微信商家分账API
  15. Delphi Thread 线程2
  16. 如何将dxf或dwg等CAD文件与卫星影像地图叠加进行绘图设计?
  17. 安徽省二级计算机考试大纲,安徽省计算机省二级考试大纲
  18. 2019ICPC亚洲区域赛南京网络赛
  19. 武汉理工大学计算机应用基础作业,2017年武汉理工大学网络教育计算机应用基础作业2...
  20. unix时间戳和普通时间戳 转换

热门文章

  1. #动态规划 LeetCode 120 三角形最小路径和
  2. django基础窗口类的使用
  3. S20_DAY20--课堂笔记
  4. 常见的几种数组排序方法
  5. 面向对象编程——类和实例(二)
  6. 洛谷P1880 石子合并(区间DP)(环形DP)
  7. 简单解析三种JAVA调用方式-同步,异步,回调
  8. Codeforces Testing Round #1_C. Circular RMQ
  9. eclipse console 输出数据量大时不完整问题
  10. uni-app 条形码(一维码)/二维码生成实现