《动手学深度学习》学习笔记(二)

在此本人要强调一点,原书使用ApacheMXNet框架,但是有个北大的学生却完成了Pytorch版,接下来主要是对与Pytorch版的学习整理,如果有需要求自行学习ApachMXnet。B站上甚至都有ApacheMXNet的斑竹。还可以自行下载官方文档pdf。真的开源free,pdf免费下载。对应PyTorch版本的github

第二章 预备知识

1、环境配置

1.1 Anaconda

用conda主要解决不同Python版本环境下的兼容问题。

1.2 Jupyter

便于后期回顾和记录输出结果。笔记形式的运行界面。

1.3 PyTorch

不采用ApacheMxnet,而采用了PyTorch


2、数据操作

在PyTo

### 动手学深度学习 第5.1节 学习笔记 在《动手学深度学习》第5.1节中,主要讨论的是卷积层及其基本概念。这一部分介绍了如何通过维互相关运算理解卷积核的作用以及其在图像处理中的应用[^1]。 #### 卷积层的核心概念 卷积层是卷积神经网络(CNN)的重要组成部分之一。它利用局部感知野的概念来提取输入数据的空间特征。具体来说,在维空间上滑动一个小窗口(即卷积核),并通过计算该窗口内的加权得到输出矩阵的一个元素。这种机制使得卷积层能够有效地捕捉到输入数据的局部模式。 以下是实现一个简单的维互相关运算的例子: ```python import torch from torch import nn def corr2d(X, K): h, w = K.shape Y = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1)) for i in range(Y.shape[0]): for j in range(Y.shape[1]): Y[i, j] = (X[i:i+h, j:j+w]*K).sum() return Y ``` 上述代码展示了如何手动编写一个用于执行维互相关运算的功能函数 `corr2d` 。此函数接受两个参数:一个是输入矩阵 \(X\) ,另一个是卷积核 \(K\) 。 #### PyTorch 中的卷积操作 除了自己构建外,还可以直接使用 PyTorch 提供的高度优化好的 API 来完成更复杂的任务。例如,可以通过调用 `nn.Conv2d()` 创建一个具有指定超参设置的标准卷积层实例: ```python conv_layer = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=(h,w), bias=False) with torch.no_grad(): conv_layer.weight[:] = K.reshape(conv_layer.weight.shape) output_tensor = conv_layer(input_tensor.unsqueeze(0).unsqueeze(0)).squeeze(0).squeeze(0) print(output_tensor) ``` 这里需要注意的一点是权重初始化的过程——我们通常会禁用梯度追踪以便于显式赋值给卷积层的权重向量[^2]。 #### 性能考量 尽管 CNN 的参数数量相对较少,但由于每个参数都会参与到大量的乘法运算当中去,因此整体计算开销依然较大。为了缓解这个问题,实际部署过程中往往依赖 GPU 加速技术提升效率[^3]。 #### 小批量随机梯度下降 最后值得一提的是,在训练阶段不可避免地涉及到对整个数据集多次迭代访问的需;而考虑到内存占用等因素的影响,一般采用分批次加载的方式来进行高效的数据管理[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值