tfdbg

前段时间debug de到呼天抢地,借此机会认识了一下神秘的tfdbg。

作为一个1/32吊子的程序员,没有比print更适合我的debugging工具,所以tensorflow用到今天我都没试过tfdbg,让它一直安稳待在我那广袤无垠的技术盲区里。

直到我前段时间遭遇那个神秘bug,需要check两个局部变量的值,而print对此无能为力,所以我只能把主意打到神秘的tfdbg头上。既然是人家量身打造的debugging工具,那还不指哪打哪,什么变量值都给你掘地三尺刨出来。

即便那个官网GUI显示一副机器语言的蛋疼样子,我还是怀着巨大的期待开始了学习。But, where is breakpoint setting? where is step run?满头雾水地找了半天,naive!Once again!我又忘记了tf先构图再计算的机制,这个机制决定了tfdbg就不是general的debugging工具。

到sess.run()这一步之前,前面的程序都是在构图,你在构图阶段设断点?step run?要看什么?tensorboard一键就把图给你画得明明白白了。debugging无非要看中间值,但是tf程序在sess.run()之前,那是没有中间值出来的。所以tfdbg的运行命令,只有一个>run,run一次跑一个迭代。

可这一下一个迭代run完了,我还怎么看早已经注销的局部变量呢?这和我在sess.run()后面跟一句print有什么区别呢?区别嘛还是有的,tfdbg能一次给你列出运算路径上所有tensor的值来,用print要实现这点,还得搞清楚运算路径上的所有tensor且手动把它们列出来。所以,有区别,但是没用。

 

posted @ 2019-07-31 10:57  糯米_甜酒  阅读(142)  评论(0编辑  收藏  举报