怎么编写同时在PyTorch和Tensorflow上工作的代码


怎么编写同时在PyTorch和Tensorflow上工作的代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Foolbox是一个构建在EagerPy之上的Python库。该库是用EagerPy而不是NumPy重写的,以实现在PyTorch和TensorFlow中开发,并且只有一个代码库,没有代码重复。Foolbox是一个对机器学习模型进行对抗性攻击的库。
为了解决框架之间的差异,作者探索了句法偏差。在PyTorch的情况下,使用In-place的梯度需要使用**_grad_(),而反向传播是使用backward**()调用的。然而,TensorFlow提供了一个高级管理器和像tape.gradient这样的函数来查询梯度。即使在句法层面,这两个框架也有很大的不同。例如,对于参数,dim vs axis;对于函数,sum vs reduce_sum。这就是“EagerPy ”发挥作用的地方。它通过提供一个统一的API来解决PyTorch和TensorFlow之间的差异,该API透明地映射到各种底层框架,而无需计算开销。“EagerPy允许你编写自动使用PyTorch、TensorFlow、JAX和NumPy的代码。”研究人员写道,EagerPy专注于Eager执行,此外,它的方法是透明的,用户可以将与框架无关的EagerPy代 香港云主机码与特定于框架的代码结合起来。TensorFlow引入的eager执行模块和PyTorch的相似特性使eager执行成为主流,框架更加相似。然而,尽管PyTorch和TensorFlow2之间有这些相似之处,但编写框架无关的代码并不简单。在语法层面,这些框架中用于自动微分的api是不同的。自动微分是指用算法求解微分方程。它的工作原理是链式规则,也就是说,求解函数的导数可以归结为基本的数学运算(加、减、乘、除)。这些算术运算可以用图形格式表示。EagerPy特别使用了一种函数式的方法来自动区分。下面是一段来自文档的代码片段:首先定义第一个函数,然后根据其输入进行微分。然后传递给ep.value_and_grad 来得到函数的值及其梯度。此外,norm函数现在可以与PyTorch、TensorFlow、JAX和NumPy中的原生张量和数组一起使用,与本机代码相比几乎没有任何开销。它也适用于GPU张量。总之,EagerPy 旨在提供以下功能:为快速执行提供统一的API维护框架的本机性能完全可链接的API全面的类型检查支持研究人员声称,这些属性使得使用这些属性比底层框架特定的api更容易、更安全。尽管有这些变化和改进,但EagerPy 背后的团队还是确保了eagerpy API遵循了NumPy、PyTorch和JAX设置的标准。使用pip从PyPI安装最新版本:关于怎么编写同时在PyTorch和Tensorflow上工作的代码问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注开发云行业资讯频道了解更多相关知识。

相关推荐: group_concat使用场景是怎么样的

这期内容当中小编将会给大家带来有关group_concat使用场景是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。当两张表 inner join ,两张表记录是一对多的关系时,需要把多的表的记录合并成一行,例如:考试…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/03 13:00
下一篇 09/03 14:41

相关推荐