MrdFlow 的定位是基于 NumPy 的深度学习框架,采用自动微分作为求导算法,支持多种运算求导。MrdFlow 内置神经网络模块,可以使用 MrdFlow 提供的 Api,编写神经网络,并进行训练。
软件地址:http://github.com/Zhou-chengy/mrdflow
相关文档地址:http://mrdflow.github.io
pip install mrdflow==1.1.0b2
Tensor是autograd的核心,你可以通过以下方式创建Tensor
import mrdflow.autograd as ag x = ag.arange(12) #创建一个shape为(12,)的Tensor数组x,其功能等同于numpy.arange. y = ag.zeros(12,12,grad=True) #创建一个shape为(12,12)的Tensor数组y,其功能等同于numpy.zeros,你可以将grad设置为True,这样可以自动求导 z = ag.randn(12,12,grad=True) #创建一个shape为(12,12)的Tensor数组z,其功能等同于numpy.random.randn,你可以将grad设置为True,这样可以自动求导
可以使用Tensor.gradient求导
import mrdflow.autograd as ag x = ag.arange(12) y = ag.sin(x/2) y.gradient() print(x.grad) #求导出y对x导数
Tensor内置了许多函数,以下是个例子
import mrdflow.autograd as ag import numpy as np x = ag.arange(12).reshape(3,4) y = ag.arange(12).reshape(4,3) print(ag.dot(x,y)) #ag.dot:矩阵乘法函数 c = x.F c = x.T #Tensor.F:归一化,等同于numpy.ndarray.Flatten() #Tensor.T:矩阵转置,等同于numpy.transpose(x) v = x.numpy() #将x转换成numpy.ndarray
Tensor数组无法直接转换成numpy数组,必须通过Tensor.numpy()进行转换
Tensor数组的运算是基于Op算子的,无论是Exp还是矩阵乘法。Op算子有2个属性,分别是compute和gradient。compute处理计算,gradient进行反向求导。
import mrdflow.autograd as ag class TestOp(ag.Op): def compute(inputs:list): """进行运算操作,将您的计算结果保存为self.re""" return Tensor(self.re,op=self,grad=True) def gradient(self,inputs,grad): inputs[0].backward(grad) #grad*导数值
下面是用mrdflow训练模型识别手写数字的例子。请确保下载好mnist.npz文件,下载链接
import mrdflow as mf
from mrdflow import autograd as ag
import numpy as np
#通过Mrdflow导入数据,返回一个DataLoader对象
data = mf.data.NpzLoader('mnist.npz',x='x_train',y='y_train',batch_size=10)
def x_train_data(x):
return (ag.Tensor(x)/255).reshape(1,28,28)
def one_hot(y):
v = ag.zeros(10)
v[y] = 1
return v
#DataLoader内置的数据处理功能
data.dataprocessing(x_train_data,obj='x')
data.dataprocessing(one_hot,obj='y')
def test(model,x,y):
p = len(x)
o = 0
for i in range(0,p):
tx = np.argmax(model.predict(ag.Tensor(x[i]/255)).array)
ty = y[i]
if tx==ty:
o += 1
return o/p
#构建模型
model = mf.nn.Sequential([mf.nn.layer.Conv2d([28,28],[4,4],activation=mf.relu,pad='VALID'),
mf.nn.layer.MaxPooling2d([5,5]),
mf.nn.layer.Dense(5*5,10,activation=mf.softmax)])
#选择优化器,设定学习率为0.1
model.compile(optimizer=mf.nn.Adam,lr=0.1)
#从Mrdflow 1.1.0 B1开始,不支持直接输入list的训练方法
# data:mf.data.DataLoader
model.fit(data=data,epoch=100)
#训练100轮,每轮对10个数据进行训练
model.save('mnist.h5')
#保存模型
#model.loadz('mnist.h5')
#重构模型导入模型
Mrdflow 1.1.0 beta 下载方式 pip install mrdflow==1.1.0b2 Github mrdflow Pypi mrdflow 使用说明: 1 autograd autograd与numpy十分相似,实际上autograd是基于numpy构建的,但与numpy不同的一点。autograd内置了自动微分功能,此项功能是mrdflow的核心计算模块。 1.1 Ten
主要内容 课程列表 专项课程学习 辅助课程 论文专区 课程列表 课程 机构 参考书 Notes等其他资料 卷积神经网络视觉识别 Stanford 暂无 链接 神经网络 Tweet 暂无 链接 深度学习用于自然语言处理 Stanford 暂无 链接 自然语言处理 Speech and Language Processing 链接 专项课程学习 下述的课程都是公认的最好的在线学习资料,侧重点不同,但推
Google Cloud Platform 推出了一个 Learn TensorFlow and deep learning, without a Ph.D. 的教程,介绍了如何基于 Tensorflow 实现 CNN 和 RNN,链接在 这里。 Youtube Slide1 Slide2 Sample Code
torch是什么 torch就是诸多深度学习框架中的一种 业界有几大深度学习框架:1)tensorflow,谷歌主推,时下最火,小型试验和大型计算都可以,基于python,缺点是上手相对较难,速度一般;2)torch,facebook主推,用于小型试验,开源应用较多,基于lua,上手较快,网上文档较全,缺点是lua语言相对冷门;3)mxnet,大公司主推,主要用于大型计算,基于python和R,缺
我太菜了,C++需要恶补才行,面试完基本上就知道自己寄,面试官特别好给我说了很多,也让我充分认识到自己的不足 如果是项目的话,会问你项目背景以及项目最终的实现结果等等 如果是自己学习的项目的话,会问你对这个项目的学习心得 最后问对C++对掌握程度 实现vector
现在开始学深度学习。在这部分讲义中,我们要简单介绍神经网络,讨论一下向量化以及利用反向传播(backpropagation)来训练神经网络。 1 神经网络(Neural Networks) 我们将慢慢的从一个小问题开始一步一步的构建一个神经网络。回忆一下本课程最开始的时就见到的那个房价预测问题:给定房屋的面积,我们要预测其价格。 在之前的章节中,我们学到的方法是在数据图像中拟合一条直线。现在咱们不
深度学习的总体来讲分三层,输入层,隐藏层和输出层。如下图: 但是中间的隐藏层可以是多层,所以叫深度神经网络,中间的隐藏层可以有多种形式,就构成了各种不同的神经网络模型。这部分主要介绍各种常见的神经网络层。在熟悉这些常见的层后,一个神经网络其实就是各种不同层的组合。后边介绍主要基于keras的文档进行组织介绍。
Python 是一种通用的高级编程语言,广泛用于数据科学和生成深度学习算法。这个简短的教程介绍了 Python 及其库,如 Numpy,Scipy,Pandas,Matplotlib,像 Theano,TensorFlow,Keras 这样的框架。
你拿起这本书的时候,可能已经知道深度学习近年来在人工智能领域所取得的非凡进展。在图像识别和语音转录的任务上,五年前的模型还几乎无法使用,如今的模型的表现已经超越了人类。