《动手学深度学习》是刚出来没多久的一本新书,个人觉得作为一本入门的深度学习教材还是很好的,并且这本书是开源的。
开源地址:https://zh.d2l.ai
书中使用的是Mxnet作为学习框架
- 在MXNet中,NDArray是一个类,也是存储和变换数据的主要工具。创建存储数据基本上都用到这个类。
from mxnet import nd # 导入首先从MXNet导入ndarray模块
‘’‘常用的用法’‘’
x = nd.arange(12) #创建一个顺序的行向量,[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.]
X = x.reshape((3, 4)) #更改为3行4列的矩阵
‘’‘
Out:
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]’‘’
Y = nd.array([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]) #创建三行四列的矩阵
nd.random.normal(0, 1, shape=(3, 4)) #均值为1, 方差为1的随机矩阵
#常见运算
X + Y
''' Out :
[[ 2. 2. 6. 6.]
[ 5. 7. 9. 11.]
[12. 12. 12. 12.]]
'''
nd.dot(X, Y.T)
Out:
[[ 18. 20. 10.]
[ 58. 60. 50.]
[ 98. 100.90.]]
#广播机制
#当对两个形状不同的NDArray按
#元素运算时,可能会触发广播(broadcasting)机制:先适当复制元素使这两个NDArray形状相
#同后再按元素运算。
A = nd.arange(3).reshape((3, 1))
B = nd.arange(2).reshape((1