《动手学深度学习》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() 
原文地址:https://www.cnblogs.com/peacepeacepeace/p/13140411.html