《动手学深度学习》mxnet版/一二章学习笔记
第一章
- 环境配置
- 获取代码
环境
Ubuntu18.04 + Anaconda4.4.10
Windows10 + Anaconda4.4.10
运行工具
win10: jupyter notebook
ubuntu: xshell
代码地址
https://zh.d2l.ai/d2l-zh-1.0.zip
第二章
学习如何使用NDArray对数据进行处理
- 创建NDArray
- NDArray运算
- 索引
- NDArray和NumPy相互变换
创建NDArray
# 从MXNet导入ndarray模块
from mxnet import nd
# 创建一个全为0的3x2矩阵x
x = nd.zeros((3,2))
# 创建一个全为1的3x2矩阵x
x = nd.ones((3,2))
# 获取矩阵元素的总数
num = x.size
#行向量x的形状改为(1, 6),也就是一个1行6列的矩阵,并记作y。除了 形状改变之外,X中的元素保持不变
y = x.reshape(1,6)
#也可写成x.reshape((-1, 6))或x.reshape((6, -1))。由于x的元素个数是已知的,这里的-1是能够通过元素个数和 其他维度的大小推断出来的
#随机生成NDArray中每个元素的值。下面我们创建一个形状为(3,4)的NDArray。它的每个元素都随机采样于均值为0、标准差为1的正态分布
nd.random.normal(0, 1, shape=(3, 4))
# Python的列表(list)指定需要创建的NDArray中每个元素的值
Y = nd.array([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
NDArray运算
# 使用dot函数做矩阵乘法。下面将X与Y的转置做矩阵乘法。由 于X是3行4列的矩阵,Y转置为4行3列的矩阵,因此两个矩阵相乘得到3行3列的矩阵
z = nd.dot(X, Y.T)
#将多个NDArray连结(concatenate) 。下面分别在行上(维度0,即形状中的最左边元素)和列上(维度1, 即形状中左起第二个元素) 连结两个矩阵。可以看到,输出的第一个NDArray在维度0的⻓度(6)为两个输入矩阵在维度0的⻓度之和(3 + 3) ,而输出的第二个NDArray在维 度1的⻓度(8)为两个输入矩阵在维度1的⻓度之和(4 + 4)
nd.concat(X, Y, dim=0), nd.concat(X, Y, dim=1)
# 矩阵内所有元素求和
X.sum()
索引
NDArray的索引从0开始逐一递增, 依据左闭右开指定范围
X[1:3]取第1和第2行
#为行索引为1的每一列元素重新赋值为1
X[1:2, :] = 1
#为第1行第2列元素赋值为9
X[1, 2] = 9
NDArray和NumPy相互变换
# np->nd
import numpy as np
P = np.ones((2, 3))
D = nd.array(P)
# nd->np
D.asnumpy()