现在大家应该用的都是tensorflow 2.0 以上版本, 这个笔记针对的就是tf2的调试。
之前全网搜了很多keras的调试方法, 根本不得要领, 把简单的事情弄复杂, 很是误人子弟。

其实, 只需要一句话, 就可以把keras当成pytorch了,极易调试。
tf.config.experimental_run_functions_eagerly(True)
什么是调试? 比如我想自定义一个损失函数, 比如:

def my_loss(y_true, y_pred):return 10000 * (y_true - y_pred) ** 2

显然,很多时候我并不能一次就写对, 因此我希望能进入到函数中去, 用一例实际的y_true 和 y_pred, 进行调试,通过数值帮助我验证我代码逻辑的准确性。

理想很丰满, 现实很骨感。
如果你直接使用以下的代码

model.compile(optimizer=opt, loss=my_loss)
model.fit(data, data)

然后你这样的打上断点进行debug:

虽然你可以成功的进入到函数中,但结果是:

所有数据都是None, 这是因为你只建立了一个图, 没有实际的数据, 而面对一堆None数据, 你如何调试? 你都不知道错误在哪, 这断点不如不打。

这就是我想强调的问题所在!tf2.0号称默认动态图, 但其实调试的时候还是以类似静态图的方式进行的
所以, 需要手动在代码开始的时候加入一句:
tf.config.experimental_run_functions_eagerly(True)
就可以了!

可以看到, 同样的断点, 在加了使用动态图的上面这句代码后, 每次调试的时候, 就不再是None, 而是具体的数值了!
同时,你可以随意的在debug console里进行各种交互:


点击console 和 debug按钮, 就可以进入交互模式, 这个的效果是和 matlab的断点后在命令行进行调试是完全一样, 我觉得是做数据研究必备的!

什么? 动态图影响了运行速度? 你调试完代码成功后注释掉不就行了!

不够pytorch? 想看哪一层的输出, 在那一层后面插一个lambda层, 然后断点在lambda层里就可以了!
觉得太轻松?
参考下tensorflow的这个例程吧, 配合这个动态图调试, 和pytorch几乎一模一样了!

https://www.tensorflow.org/tutorials/quickstart/advanced

keras调试的正确打开方式: 一句话让你把tensorflow当pytorch用相关推荐

  1. Xcode 调试的正确打开方式——Debugging

    此文章转自CocoaChina,先谢过原作者.源地址:http://www.cocoachina.com/ios/20150225/11190.html. 程序员日常开发中有大量时间都会花费在 deb ...

  2. 巨省显存的重计算技巧在TF、Keras中的正确打开方式

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 作者:苏剑林(来自追一科技,人称"苏神") 前言 在前不久的文章<BERT重计算:用22.5%的训练时间节省5倍的显存开销( ...

  3. Console控制台的正确打开方式

    Console控制台的正确打开方式 console对象提供了访问浏览器调试模式的信息到控制台 -- Console对象|-- assert() 如果第一个参数断言为false,则在控制台输出错误信息| ...

  4. [分布式训练] 单机多卡的正确打开方式:Horovod

    [分布式训练] 单机多卡的正确打开方式:Horovod 转自:https://fyubang.com/2019/07/26/distributed-training4/ 讲完了单机多卡的分布式训练的理 ...

  5. 这才是目前百度统计接口的正确打开方式20180322

    这才是目前百度统计接口的正确打开方式20180322 关于百度统计接口的说明 1.登陆接口网站找到的有2种方式 第一种调用(不能用) https://api.baidu.com/sem/common/ ...

  6. c++ 开方_采暖期将至,温尔泰教你壁挂炉采暖前的正确打开方式

    原标题:采暖期将至,温尔泰教你壁挂炉采暖前的正确打开方式 WENETAI 温泰燃气设备/温尔泰壁挂炉 秋天到了,冬天还会远吗 最近一轮接一轮频繁的降温 让很多地方的小伙伴都在准备提前"过冬& ...

  7. opengl 贴图坐标控制_材质贴图正确打开方式

    哈喽,各位观众朋友们好鸭~欢迎来到讲道理画图的地方,我是黄玮宁. 最近呀经常有小伙伴来问我那些不同通道的材质贴图该怎么用,而且频率不是一般的高,所以我觉得有必要来说说这些通道贴图的用法了. 视频版(B ...

  8. 任务队列和异步接口的正确打开方式(.NET Core版本)

    layout: post title: 任务队列和异步接口的正确打开方式(.NET Core版本) category: dotnet core date: 2019-01-12 tags: dotne ...

  9. log python_基于Python log 的正确打开方式

    保存代码到文件:logger.py import os import logbook from logbook.more import ColorizedStderrHandler import sm ...

最新文章

  1. macbook pro 识别不到外接显示器
  2. nodejs安装到d盘怎么使用npm_NodeJS、NPM安装配置步骤
  3. fitbit手表中文说明书_我如何分析FitBit中的数据以改善整体健康状况
  4. 荣耀系列到底算不算华为手机
  5. 组织健康的路径:良性互动
  6. sqoop从mysql导入hive字符集的问题乱码问题
  7. python条件语句练习题_[python](1)---条件语句练习题
  8. 190720每日一句
  9. 字节跳动面试题后台_字节跳动面试题
  10. 一款完全仿照E盾的源码(服务端+代理端+客户端)
  11. C++算法——字幕校对问题
  12. android手机如何截屏,安卓手机怎么截屏(教你华为手机5种截图技巧)
  13. android手势_您可能不知道的七个Android手势
  14. 认识kubernetes(k8s),k8s单节点etcd部署
  15. 【高等数学】第 6 讲 积分
  16. SE5实现MiDas模型的运行
  17. lintcode 简单篇(二)
  18. JAVA第四次作业——使用枚举类对扑克牌建模
  19. 2021年中国汽车租赁行业发展现状:2025年中国汽车租赁市场规模将达到1585亿元[图]
  20. Android V1及V2签名原理简析

热门文章

  1. 用MATLAB实现高斯投影正反算且画出高斯投影图形
  2. 社工心理学:如何让LOL找你约架的社会人给你道歉
  3. 排序算法(三)—— 插入法排序算法
  4. springBoot 报警告 Could not find acceptable represent
  5. postgresql 数据库 等保审计 遇到的问题与办法 (整理)
  6. Hadoop生态系统各组件功能
  7. 怎样获取Atlantic免费一年的VPS主机
  8. 电脑感叹号,电脑网络出现感叹号怎么解决?Win7系统网络出现感叹号的解决方法...
  9. 基于数字证书的UKEY安全登录 与身份认证技术研究
  10. 云计算学习路线教程大纲课件:部署论坛系统Discuz