栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Mrdflow 1.1.0使用文档

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mrdflow 1.1.0使用文档

Mrdflow 1.1.0 beta 下载方式
pip install mrdflow
Github

mrdflow

Pypi

mrdflow

使用说明: 1 autograd

autograd与numpy十分相似,实际上autograd是基于numpy构建的,但与numpy不同的一点。autograd内置了自动微分功能,此项功能是mrdflow的核心计算模块。

1.1 Tensor数组

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()进行转换。

1.2 Op算子

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*导数值
2 神经网络 2.1 mnist

下面是用mrdflow训练模型识别手写数字的例子。请确保下载好mnist.npz文件(mnist数据集),下载链接

import mrdflow as mf
from mrdflow import autograd as ag
import numpy as np
#通过numpy导入数据集
data = np.load('mnist.npz')
x_train = data['x_train']
y_train = data['y_train']
#数据预处理
def x_train_data(x):
    return ag.Tensor(x)/255
def one_hot(y):
    v = ag.zeros(10)
    v[y] = 1
    return v
x_train = list(map(x_train_data,x_train))
y_train = list(map(one_hot,y_train))
#注意,数据集必须为list类型,每个样本必须为autograd.Tensor类型,否则会报错
#mf.Conv2d:卷积
#[28,28]:输入大小,1:通道数,[5,5]:卷积核大小
#mf.MaxPooling:最大池化
#[24,24]:输入大小,[4,4]:池化核大小
#mf.Dense:全连接层
#36:输入大小,10:输出大小,分别代表十种图片的概率
model = mf.Sequential([mf.Conv2d([28,28],1,[5,5]),
                       mf.MaxPooling2d([24,24],[4,4]),
                       mf.Dense(36,10,activation=mf.softmax)])
model.compile(optimizer=mf.Adam)
model.fit(x=x_train,y=y_train,epoch=1000,batch_size=100)
model.save('mnist.model')
#保存模型
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/846385.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号