纯粹的numpy实践与第三方运营商集成。

minp的Python项目详细描述


#明皮

[![构建状态](https://travis-ci.org/dmlc/minpy.svg?branch=master)(https://travis ci.org/dmlc/minpy)
[![PYPI版本](https://badge.fury.io/py/minpy.svg)(https://badge.fury.io/py/minpy)
[![文档](https://readthedocs.org/projects/minpy/badge/?version=latest)(https://minpy.readthedocs.io/en/latest/)


此存储库旨在通过在[mxnet]上(https://github.com/dmlc/mxnet)后端构建纯[numpy]接口,提供高性能和灵活的深度学习平台。一句话,你的numpy代码会自动得到以下结果:
``python
import minpy.numpy as np
````
*GPU支持的运算符将在GPU上运行。
*对于CPU上numpy缺少的操作,可以使用[autograd]自动生成渐变(https:)//github.com/hips/autograd)支持。
*无缝mxnet符号集成。


首先,numpy是python编程语言的一个扩展,它支持大型多维数组、矩阵和一个大型的高级数学函数库来操作这些抽象。如果你刚刚开始学习深度学习,你绝对应该从numpy开始,牢牢地掌握它的概念(例如,见斯坦福大学的[cs231n课程](http://cs231n.stanford.edu/deculus.html))。对于高级深度学习算法的快速原型设计,您通常也可以开始使用numpy进行编写。

其次,作为python的扩展,您的实现遵循直观的命令式风格。这是*only*样式,没有*要学习的新语法结构。为了体验一下这一点,让我们看看下面的一些示例。

[p1](https://raw.githubusercontent.com/dmlc/web data/master/minpy/p1.png)
在符号编程中,需要在print语句之前的控件依赖项,否则print运算符将不会出现在关键依赖项路径上,因此不会执行。相比之下,minpy仅仅是numpy,就像python的hello world一样简单。

[p2](https://raw.githubusercontent.com/dmlc/web data/master/minpy/p2.png)
在符号编程中,每个分支中都需要"lambda"来在运行时惰性地扩展数据流图,这可能会很混乱。同样,minpy是numpy,您可以随意使用if语句。


在minpy中,我们使用numpy语法简化您的编程,同时获得良好的性能。

在minpy中,我们采用[autograd]方法(https://github.com/hips/autograd)计算渐变。由于数据流图是随计算而生成的,因此在梯度计算时支持各种本机控制流。例如:
``python
impimpimpimpminpy
>minpy.core import grad


def foo(x):
if x>;=0:
returnx
else:
return 2*x

foo grad=grad(foo)
prinfoo grad(foo)
prinfoo grad(foo)
prinfoo grad(foo)
prinfoo grad(3)应该打印1.0
prinprinfoo grad(1)应该打印foo grad(1.foo grad(-1)应该打印2.0
应该打印``
这里,请随意使用本机"if"语句。关于auto-gr的完整教程可以在[此处]找到Adient计算(https://minpy.readthedocs.io/en/latest/tutorial/autograd\u tutorial.html)。

努比是一个很大的图书馆。在minpy中,如果mxnet中还没有实现某些运算符,我们会自动退回到numpy。例如,下面的代码运行顺利,您不必担心将数组从gpu来回复制到cpu;minpy可以透明地处理回退及其副作用。
``python
import minpy.numpy as np
x=np.zeros((2,3));使用mxnet gpu实现
y=np.one((2,3))使用mxnet的gpu实现
z=np.logaddexp(x,y)使用numpy的cpu实现
````

因此,minpy允许您将一个符号"包装"到一个可以与其他命令调用一起调用的函数中。从程序员的角度来看,这些函数与其他numpy调用一样,因此我们始终保持命令式风格:
``python
import mx net a s mx
import minpy.numpy as np
from minpy.core import function
=mx.sym.卷积(net,name='conv,kernel=(3,3,3),num滤波器=32,无偏=true)
conv=函数(net,inpu形状{'x',(8,3,10,10)}
conv=函数(net,inpu形状{'x',(8,3,10,10)}
conv=np.one((32,3,3,3,3,3,))
x=np.0((8,3,10,10))
w=np.one((32,3,3,3,3,3,))))
y=np br/>```
敏比跑得快吗?
命令式接口确实带来了许多挑战,特别是它避免了一些仅(当前)体现在符号编程中的深层优化。然而,minpy设法保持性能,特别是在实际计算量很大的情况下。我们的下一个目标是用先进的系统技术恢复性能。
![基准](https://raw.githubusercontent.com/dmlc/web data/master/minpy/benchmark.png)


《安装指南》



1)为python安装mxnet;

<2)安装minpy。


有关详细信息,请阅读[安装指南](https://minpy.readthedocs.io/en/latest/get-started/install.html)。

mxnet版本

xnet和minpy正在经历快速发展。minpy不能保证与所有mxnet版本一起使用。**MXNET所需的最低版本为0.9.2.**为了获得最佳性能,我们建议您从"engine"分支下载MXNET并从源代码构建它。下面的命令将非常有用:
```
git clone--recursive-b引擎https://github.com/dmlc/mxnet.git
```
,然后使用[指令](http://mxnet.io/get-started/ubuntu-setup.html\install mxnet for python)使用python接口构建mxnet。


minpy原型一个纯numpy接口。要使界面一致,请确保在安装minpy之前numpy版本>;=1.10.0。


mxnet和numpy可能会遇到版本冲突,如果您在其他项目中与它们一起工作。我们的[安装指南](https://minpy.readthedocs.io/en/latest/get-started/install.html)提供了如何使用[virtualenv](https://virtualenv.pypa.io/en/stable/)和[virtualenvwrapper](https://virtualenvwrapper.readthedocs.io/en/latest/)来解决问题。

/>```
pip install minpy
```

你可以看看这个[教程](https://github.com/dmlc/minpy/blob/master/examples/demo/minpy_tutorial.ipynb)来理解它的概念。文档位于[此处](https://minpy.readthedocs.io/en/latest/)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将JSP与Hibernate连接?   java无法退出do while循环,即使表达式为false   使用Restlet和GAE过滤根路径   java<rich:popupanel按钮在JSF项目中不起作用   java错误:在安卓包中找不到属性“showAsAction”的资源标识符   性能Java 2D:在屏幕上快速渲染大量瓷砖   java Android MediaPlayer seekTo(0)不寻求启动   java使用jsweet将小程序代码转换为js。类文件依赖关系   java Maven导入问题,在complie时间使用里程碑版本,但在运行时使用最新版本   java JPA:从另一个对象访问对象返回null   java我如何启动一个java应用程序。带有桌面快捷方式的jar文件(针对特定jre)   java将值从JTextField传递到方法的最佳方式?   在java中从字符串中分离子字符串   java如何初始化使用另一个映射作为值的EnumMap   单击<a>元素时java JSF调用bean方法   java Board的方块不会出现。   java如何在spring boot中部分回滚数据,错误将被分散   java从另一个类文件向类添加方法   如何修复错误“TimeBackUp.java使用未经检查或不安全的操作”?