第五步是`打开Jupyter记事本`。
jupyter notebook
这时在浏览器打开 http://localhost:8888 (通常会⾃动打开)就可以查看和运⾏本书中每⼀节的代码了。
本书中若⼲章节的代码会⾃动下载数据集和预训练模型,并默认使⽤美国站点下载。我们可以在运⾏Jupyter前指定MXNet使⽤国内站点下载书中的数据和模型(国外⽤⼾⽆须此操作)。
set MXNET_GLUON_REPO=https://apache-mxnet.s3.cn-north-1.amazonaws.com.cn/ jupyter notebook
#### 2.1.2 更新代码和运行环境
为了适应深度学习和MXNet的快速发展,本书的开源内容将定期发布新版本。我们推荐⼤家定期更新本书的开源内容(如代码)和相应的运⾏环境(如新版MXNet)。以下是更新的具体步骤。
**第⼀步是重新下载最新的包含本书全部代码的压缩包**。下载地址为 https://zh.d2l.ai/d2l-zh.zip 。
解压后进⼊⽂件夹“d2l-zh”。
**第⼆步是使⽤下⾯的命令更新运⾏环境**:
conda env update -f environment.yml
之后的激活环境和运⾏Jupyter步骤跟本节前⾯介绍的⼀致。
#### 2.1.3 使⽤GPU版的MXNe
。。。
#### 小结
`提示:这里对文章进行总结:`
• 为了能够动⼿学深度学习,`需要获取本书的代码并安装运⾏环境`。
• 建议⼤家`定期更新代码和运⾏环境`
#### 练习
`提示:这里进行练习:`
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b77850d9f6d74972895b060896d66733.png)
### 2.2 数据操作
在深度学习中,我们通常会频繁地对数据进⾏操作。作为动⼿学深度学习的基础,本节将介绍`如何对内存中的数据进⾏操作`。
在MXNet中,`NDArray`是⼀个类,也是存储和变换数据的主要⼯具。为了简洁,本书常将NDArray实例直接称作NDArray。如果你之前⽤过NumPy,你会发现**NDArray和NumPy的多维数组非常类似**。然而,**NDArray提供GPU计算和⾃动求梯度等**`更多功能`,这些使NDArray`更加适合深度学习`。
#### 2.2.1 创建NDArray
from mxnet import nd
x = nd.arange(12) #⽤arange函数创建⼀个⾏向量。
x
Out[2]:
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.]
<NDArray 12 @cpu(0)
#它是⻓度为12的⼀维数组,且被创建在CPU使⽤的内存上。其中“@cpu(0)”⾥的0没有特别的意义,并不代表特定的核。
x.shape # 获取NDArray实例的形状
x.size # 得到NDArray实例中元素(element)的总数
X = x.reshape((3, 4)) # 把⾏向量x的形状改为(3, 4),也就是⼀个3⾏4列的矩阵
nd.zeros((2, 3, 4)) # 创建⼀个各元素为0,形状为(2, 3, 4)的张量
nd.ones((3, 4)) # 创建各元素为1的张量。
通过Python的列表(list)指定需要创建的NDArray中每个元素的值。
Y = nd.array([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
随机⽣成NDArray中每个元素的值。
下⾯我们创建⼀个形状为(3,4)的NDArray。它的每个元素都随机采样于均值为0、标准差为1的正态分布。
nd.random.normal(0, 1, shape=(3, 4))
#### 2.2.2 运算
#### 2.2.3 ⼴播机制
#### 2.2.4 索引
#### 2.2.5 运算的内存开销
#### 2.2.6 NDArray和NumPy相互变换
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ae88abe6606942b5831f9efbd149c477.png)
### 2.3 ⾃动求梯度
使⽤MXNet提供的`autograd模块`来⾃动求梯度。如果对本节中的数学概念(如梯度)不是很熟悉,可以参阅附录中“数学基础”⼀节。
from mxnet import autograd, nd
例⼦:对函数 y = 2x⊤x 求关于列向量 x 的梯度。
1、调⽤attach\_grad函数来申请存储梯度所需要的内存
x.attach_grad()
2、调⽤record函数来要求MXNet记录与求梯度有关的计算。
with autograd.record():
y = 2 * nd.dot(x.T, x)
3、调⽤backward函数⾃动求梯度。
——需要注意的是,如果y不是⼀个标量,MXNet将默认先对y中元素求和得到新的变量,再求该变量有关x的梯度。
y.backward()
4、函数 y = 2x⊤x关于x 的梯度应为4x。现在我们来**验证⼀下求出来的梯度**是正确的。
In [2]: x
Out[2]:
[[0.]
[1.]
[2.]
[3.]]<NDArray 4x1 @cpu(0)>
In [6]: assert (x.grad - 4 * x).norm().asscalar() == 0
x.grad
Out[6]:
[[ 0.]
[ 4.]
[ 8.]
[12.]]<NDArray 4x1 @cpu(0)>
#### 2.3.2 训练模式和预测模式
从上⾯可以看出,在`调⽤record函数后,MXNet会记录并计算梯度`。
此外,默认情况下`autograd还会将运⾏模式从预测模式转为训练模式`。这可以通过调⽤is\_training函数来查看。
…
#### 小结
`提示:这里对文章进行总结:`
• 为了能够动⼿学深度学习,`需要获取本书的代码并安装运⾏环境`。
• 建议⼤家`定期更新代码和运⾏环境`
#### 练习
`提示:这里进行练习:`
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b77850d9f6d74972895b060896d66733.png)
### 2.4 xx
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/a20e016cf4bce74941afbc90a3578e3f.png)
![img](https://img-blog.csdnimg.cn/img_convert/846eaf3490d8885c42bc035dd814a362.png)
![img](https://img-blog.csdnimg.cn/img_convert/53c0242a49542f5e30ee6be580ba4da9.png)
![img](https://img-blog.csdnimg.cn/img_convert/cbfa69afb7ede118f8c1496831611275.png)
![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)
![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**
sdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**
![](https://img-blog.csdnimg.cn/img_convert/9d9e9a3fb32477b0a7464068d32792c9.jpeg)