keras调试的正确打开方式: 一句话让你把tensorflow当pytorch用
现在大家应该用的都是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用相关推荐
- Xcode 调试的正确打开方式——Debugging
此文章转自CocoaChina,先谢过原作者.源地址:http://www.cocoachina.com/ios/20150225/11190.html. 程序员日常开发中有大量时间都会花费在 deb ...
- 巨省显存的重计算技巧在TF、Keras中的正确打开方式
一只小狐狸带你解锁 炼丹术&NLP 秘籍 作者:苏剑林(来自追一科技,人称"苏神") 前言 在前不久的文章<BERT重计算:用22.5%的训练时间节省5倍的显存开销( ...
- Console控制台的正确打开方式
Console控制台的正确打开方式 console对象提供了访问浏览器调试模式的信息到控制台 -- Console对象|-- assert() 如果第一个参数断言为false,则在控制台输出错误信息| ...
- [分布式训练] 单机多卡的正确打开方式:Horovod
[分布式训练] 单机多卡的正确打开方式:Horovod 转自:https://fyubang.com/2019/07/26/distributed-training4/ 讲完了单机多卡的分布式训练的理 ...
- 这才是目前百度统计接口的正确打开方式20180322
这才是目前百度统计接口的正确打开方式20180322 关于百度统计接口的说明 1.登陆接口网站找到的有2种方式 第一种调用(不能用) https://api.baidu.com/sem/common/ ...
- c++ 开方_采暖期将至,温尔泰教你壁挂炉采暖前的正确打开方式
原标题:采暖期将至,温尔泰教你壁挂炉采暖前的正确打开方式 WENETAI 温泰燃气设备/温尔泰壁挂炉 秋天到了,冬天还会远吗 最近一轮接一轮频繁的降温 让很多地方的小伙伴都在准备提前"过冬& ...
- opengl 贴图坐标控制_材质贴图正确打开方式
哈喽,各位观众朋友们好鸭~欢迎来到讲道理画图的地方,我是黄玮宁. 最近呀经常有小伙伴来问我那些不同通道的材质贴图该怎么用,而且频率不是一般的高,所以我觉得有必要来说说这些通道贴图的用法了. 视频版(B ...
- 任务队列和异步接口的正确打开方式(.NET Core版本)
layout: post title: 任务队列和异步接口的正确打开方式(.NET Core版本) category: dotnet core date: 2019-01-12 tags: dotne ...
- log python_基于Python log 的正确打开方式
保存代码到文件:logger.py import os import logbook from logbook.more import ColorizedStderrHandler import sm ...
最新文章
- macbook pro 识别不到外接显示器
- nodejs安装到d盘怎么使用npm_NodeJS、NPM安装配置步骤
- fitbit手表中文说明书_我如何分析FitBit中的数据以改善整体健康状况
- 荣耀系列到底算不算华为手机
- 组织健康的路径:良性互动
- sqoop从mysql导入hive字符集的问题乱码问题
- python条件语句练习题_[python](1)---条件语句练习题
- 190720每日一句
- 字节跳动面试题后台_字节跳动面试题
- 一款完全仿照E盾的源码(服务端+代理端+客户端)
- C++算法——字幕校对问题
- android手机如何截屏,安卓手机怎么截屏(教你华为手机5种截图技巧)
- android手势_您可能不知道的七个Android手势
- 认识kubernetes(k8s),k8s单节点etcd部署
- 【高等数学】第 6 讲 积分
- SE5实现MiDas模型的运行
- lintcode 简单篇(二)
- JAVA第四次作业——使用枚举类对扑克牌建模
- 2021年中国汽车租赁行业发展现状:2025年中国汽车租赁市场规模将达到1585亿元[图]
- Android V1及V2签名原理简析
热门文章
- 用MATLAB实现高斯投影正反算且画出高斯投影图形
- 社工心理学:如何让LOL找你约架的社会人给你道歉
- 排序算法(三)—— 插入法排序算法
- springBoot 报警告 Could not find acceptable represent
- postgresql 数据库 等保审计 遇到的问题与办法 (整理)
- Hadoop生态系统各组件功能
- 怎样获取Atlantic免费一年的VPS主机
- 电脑感叹号,电脑网络出现感叹号怎么解决?Win7系统网络出现感叹号的解决方法...
- 基于数字证书的UKEY安全登录 与身份认证技术研究
- 云计算学习路线教程大纲课件:部署论坛系统Discuz