python4-mxnet笔记

文章链接:http://www.liuschen.com

ndarray(矩阵计算)

from mxnet import ndarray as nd
nd.zeros((3, 4))   #初始化为0的3行4列2D数组
nd.ones((3, 4))    #初始化为1的3行4列2D数组
nd.array([[1,2],[2,3]])  #直接构造
nd.random_normal(0, 1, shape=(3, 4))
#元素值服从0到1的正态分布
数组.shape获取形状
数组.size数组大小

nd.dot(x, y.T)  #转置,矩阵相乘
nd.exp(y)       #指数运算
nd.arange(3).reshape((3,1))  #3行1列二维数组从0到2

ndarray可以很方便地同numpy进行转换

import numpy as np
x = np.ones((2,3))
y = nd.array(x)  # numpy -> mxnet
z = y.asnumpy()  # mxnet -> numpy
print([z, y])

功能函数:

id(y):y的ID,可能是关于内存空间的ID
z[:] = x + y  #将x+y之和赋给已开好的二维数组z中
z = x + y     #将x+y之和赋给新开的二维数组z中(旧的被回收)
nd.elemwise_add(x, y, out=z) #能够同时避免x+y临时空间的开销
x[1:2,1:3]  #截取二维数组部分,这种写法也支持批量写入

autograd

with关键字,用来代替try:except:finally
流程控制语句中要注意行的缩进

求导过程:

x = nd.array([[1, 2], [3, 4]])
x.attach_grad()  #申请对应空间
with ag.record():
    y = x * 2
    z = y * x
z.backward()   
x.grad 				#求导
Loading Disqus comments...
Table of Contents