【深度学习】编写同时在PyTorch和Tensorflow上工作的代码
作者 | Ram Sagar
编译 | VK
来源 | Analytics In Diamag
❝
“库开发人员不再需要在框架之间进行选择。”
❞
来自德国图宾根人工智能中心的研究人员介绍了一种新的Python框架EagerPy,EagerPy允许开发人员编写独立于PyTorch和TensorFlow等流行框架的代码。
在最近发表的一篇关于EagerPy的文章中,研究人员写道,库开发人员不再关注框架依赖性。他们的新Python框架,急切地解决了它们的重新实现和代码复制障碍。
例如,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特别使用了一种函数式的方法来自动区分。
下面是一段来自文档的代码片段:
import eagerpy as epx = ep.astensor(x)def loss_fn(x):#这个函数接受并返回一个eager张量return x.square().sum()print(loss_fn(x))# PyTorchTensor(tensor(14.))print(ep.value_and_grad(loss_fn, x))
首先定义第一个函数,然后根据其输入进行微分。然后传递给「ep.value_and_grad」 来得到函数的值及其梯度。
此外,norm函数现在可以与PyTorch、TensorFlow、JAX和NumPy中的原生张量和数组一起使用,与本机代码相比几乎没有任何开销。它也适用于GPU张量。
import torchnorm(torch.tensor([1., 2., 3.]))import tensorflow as tfnorm(tf.constant([1., 2., 3.]))
总之,EagerPy 旨在提供以下功能:
为快速执行提供统一的API
维护框架的本机性能
完全可链接的API
全面的类型检查支持
研究人员声称,这些属性使得使用这些属性比底层框架特定的api更容易、更安全。尽管有这些变化和改进,但EagerPy 背后的团队还是确保了eagerpy API遵循了NumPy、PyTorch和JAX设置的标准。
入门「EagerPy」:
使用pip从PyPI安装最新版本:
python3 -m pip install eagerpy
import eagerpy as epdef norm(x):x = ep.astensor(x)result = x.square().sum().sqrt()return result.raw
了解更多关于“eagerpy”的信息:https://eagerpy.jonasrauber.de/guide/autodiff.html
原文链接:https://analyticsindiamag.com/eagerpy-pytorch-tensorflow-coding/
往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/662nyZF本站qq群704220115。加入微信群请扫码进群(如果是博士或者准备读博士请说明):
【深度学习】编写同时在PyTorch和Tensorflow上工作的代码相关推荐
- 编写同时在PyTorch和Tensorflow上工作的代码
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 ❝ "库开发人员不再需要在框架之间进行选择." ...
- 深度学习主流框架介绍(PyTorch、TensorFlow、Keras、Caffe、Theano、MXNET)
深度学习主流框架介绍(PyTorch.TensorFlow.Keras.Caffe.Theano.MXNET) 1.Theano Theano是最早的深度学习框架之一,由 Yoshua Bengio ...
- 【深度学习】Keras vs PyTorch vs Caffe:CNN实现对比
作者 | PRUDHVI VARMA 编译 | VK 来源 | Analytics Indiamag 在当今世界,人工智能已被大多数商业运作所应用,而且由于先进的深度学习框架,它非常容易部署.这些深度 ...
- 深度学习(五十六)tensorflow项目构建流程
tensorflow项目构建流程 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce qq:1393852684 一.构建路线 个人感觉对于任何一个深度学习库 ...
- win10系统的深度学习环境搭建以win10+rtx2060+tensorflow为例/K210的win10系统的深度学习环境搭建/有无显卡均可安装
win10系统的深度学习环境搭建以win10+rtx2060+tensorflow为例 K210的win10系统的深度学习环境搭建 有无显卡均可安装 一 软件准备 1.Anaconda3 软件介绍:A ...
- 【图像分类】【深度学习】ViT算法Pytorch代码讲解
[图像分类][深度学习]ViT算法Pytorch代码讲解 文章目录 [图像分类][深度学习]ViT算法Pytorch代码讲解 前言 ViT(Vision Transformer)讲解 patch em ...
- 深度学习计算机视觉理论基础(PyTorch)
深度学习计算机视觉理论基础(PyTorch) 1 神经网络与cv 1.1 经典的人工神经元模型:M-P 模型 1.2 感知机(Perceptron)的诞生 1.3 计算机视觉 2 深度神经网络基础 2 ...
- 8_用opencv调用深度学习框架tenorflow、Pytorch、Torch、caffe训练好的模型(20190212)
用opencv调用深度学习框架tenorflow.Pytorch.Torch.caffe训练好模型(20190212) 文章目录: https://blog.csdn.net/hust_bochu_x ...
- 深度学习笔记:卷积神经网络的Tensorflow实现
文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路 在上一讲中,我们学习了如何利用 nump ...
最新文章
- 论分层思想在各行各业的应用
- 女生学计算机有什么要求,女生学计算机专业好吗?
- spring+hibernate中的Result object returned from HibernateCallback isn't a List
- 使用SpringWebFlux的反应式Web应用程序
- Element menu
- STL泛型编程之map映照容器
- 【白皮书分享】2020双十一五大趋势洞察白皮书.pdf(附下载链接)
- Golang并发编程组件
- visio2013激活软件
- EMF图片插入WORD另存为PDF图片不清晰
- linux系统 安卓系统安装教程,在Linux系统上安装Android 4.4图文教程
- 纯java写2D格斗游戏(一)——界面背景设置及人物的简单设置
- java hibernate 详解_hibernate详解一
- H5+CSS+JavaScript入门学习
- 华为服务器cpu型号,服务器cpu型号 数字
- 服务器机柜与网络机柜
- matlab中如何求分段函数的图像
- 笨方法学python6-10
- android edl模式,高通方案生成大包后,如何刷机
- 数据中台体系化建设核心方法论
热门文章
- 27 网络通信协议 udp tcp
- jquery 进行dom操作
- JavaScript中对象的构造方法
- 使用python画图表_利用Python绘制数据的瀑布图的教程
- VSCode 更新后打不开之解决办法
- java array 元素的位置_数据结构与算法:动态图解十大经典排序算法(含JAVA代码实现)...
- Cadence IC CDB-OA工艺库转换方法
- gnuplot绘图学习
- oracle中国授权机构查询,oracle授权查询
- 日志库EasyLogging++学习系列(11)—— 共享日志库