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

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: KerasTensorFlowPyTorch都是深度学习框架,用于构建和训练神经网络模型。Keras是一个高级API,可以在TensorFlow、Theano和CNTK等后端上运行。它提供了简单易用的接口,使得构建和训练神经网络变得更加容易。TensorFlow是由Google开发的深度学习框架,它提供了强大的工具和库,可以用于构建和训练各种类型的神经网络模型。PyTorch是由Facebook开发的深度学习框架,它提供了动态计算图的支持,使得构建和训练神经网络变得更加灵活和高效。三个框架都有其独特的优点和适用场景,需要根据具体需求选择合适的框架。 ### 回答2: KerasTensorFlowPyTorch是三个常用的深度学习框架。 Keras是一个高级深度学习框架,它在易用性和灵活性方面表现出色。Keras提供了一种直观的方式来构建和训练神经网络模型,它的简洁接口使得用户可以快速实现自己的想法。Keras的底层引擎可以使用多个后端,包括TensorFlow、CNTK和Theano,这为用户提供了更多选择。此外,Keras拥有丰富的预训练模型和工具库,可以帮助用户更好地应用深度学习技术。 TensorFlow是一个由Google开发的开源深度学习框架,它提供了一个强大的工具集,用于创建、训练和验证神经网络模型。TensorFlow具有高度的灵活性和可扩展性,它的计算图模型使得用户可以对模型进行更细粒度的控制。此外,TensorFlow还提供了许多高级功能,如自动微分、分布式训练和模型优化等,使得用户可以更加便捷地进行大规模的深度学习研究和应用。 PyTorch是一个由Facebook开发的开源深度学习框架,它以动态计算图模型而闻名。PyTorch的计算图是即时构建的,这意味着用户可以在模型训练过程中动态地改变计算图结构。这种灵活性使得PyTorch在研究和原型开发中非常受欢迎。此外,PyTorch还提供了一些高级功能,如自动微分、GPU加速和分布式训练等,使得用户可以更好地利用硬件资源,进行高效的深度学习实验。 综上所述,KerasTensorFlowPyTorch都是功能强大的深度学习工具,它们都有各自的优点和适用场景。Keras适用于快速实现和迭代模型,TensorFlow适用于大规模分布式训练和高级模型优化,而PyTorch适用于探索性研究和动态计算图模型。根据具体的需求和项目要求,选择适合的框架可以提高深度学习任务的效率和准确性。 ### 回答3: KerasTensorFlowPyTorch都是机器学习和神经网络领域非常流行的开源框架。这些框架都提供了一种高级的、方便的方式来构建和训练深度学习模型。 Keras是一个基于Python的高级神经网络API,它可以作为TensorFlow的一个包或者标准Python安装的一部分使用。Keras的优势在于它的简单性和易用性,使得它非常适合初学者和快速原型开发。它提供了大量的预定义层和模型,可以用来构建各种类型的神经网络。 TensorFlow是一个开源的机器学习框架,由Google开发。它提供了一个强大的、灵活的编程接口,可以用来构建和训练各种类型的深度学习模型。TensorFlow具有高扩展性,可以在不同的硬件平台上运行,如CPU、GPU和TPU。它还提供了大量的工具和功能,用于调试和优化模型。 PyTorch是Facebook开发的另一个开源深度学习框架。与TensorFlow不同,PyTorch使用动态图模型,使得它更容易使用和调试PyTorch还提供了一个非常直观的编程接口,可以轻松地进行模型构建和训练。它也具有高扩展性,可以在不同的硬件上运行。 总的来说,Keras适合初学者和快速原型开发,TensorFlow适合大规模的生产环境,而PyTorch则提供了更直观和易用的编程接口。选择哪个框架取决于个人的需求和偏好。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B417科研笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值