李沐深度学习-循环卷积网络笔记
时间: 2025-07-13 19:26:21 浏览: 18
### 关于李沐深度学习课程中循环卷积网络部分的学习笔记
在李沐的《动手学深度学习》教材及其配套资源中,虽然主要关注的是基础概念、数据操作以及经典的卷积神经网络(CNN),但对于更复杂的结构如循环卷积网络(Recurrent Convolutional Networks, RCNs)也有一定的涉及[^1]。然而,在具体章节安排上,RCN的内容并未单独成篇,而是作为高级主题的一部分被提及。
#### 循环卷积网络简介
循环卷积网络是一种结合了卷积神经网络(CNN)的空间特征提取能力和循环神经网络(RNN)的时间序列建模能力的方法。这种模型特别适用于处理具有时空依赖性的任务,比如视频分类或动作识别。通过引入时间维度上的记忆机制,RCN能够更好地捕捉动态变化的信息[^4]。
#### 学习路径建议
对于希望深入理解循环卷积网络的学生来说,可以从以下几个方面入手:
1. **基础知识巩固**:
首先复习卷积神经网络的基础理论,包括但不限于卷积层的工作原理、池化操作的作用等。这部分内容可以通过阅读李沐老师的讲义或者观看其相关视频完成[^3]。
2. **时间序列分析入门**:
接着了解基本的RNN变体,例如LSTM(Long Short-Term Memory) 和 GRU(Gated Recurrent Unit),这些单元如何解决梯度消失等问题是非常重要的知识点。
3. **融合实践探索**:
当具备上述两项技能之后,则可尝试将两者结合起来应用到实际场景当中去。这里推荐查阅一些最新的科研论文或是开源项目案例来进行模仿练习[^2]。
以下是简单的代码片段展示如何构建一个基础版本的RCN模型:
```python
import torch.nn as nn
class SimpleRCN(nn.Module):
def __init__(self, input_channels, num_classes):
super(SimpleRCN, self).__init__()
# Define a CNN part
self.cnn = nn.Sequential(
nn.Conv2d(input_channels, 64, kernel_size=3),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2))
# Flatten the output of CNN to feed into RNN
self.flatten = nn.Flatten()
# Define an LSTM layer after flattening spatial features
self.lstm = nn.LSTM(64 * 7 * 7, hidden_size=128, batch_first=True)
# Final fully connected layer for classification task
self.fc = nn.Linear(128, num_classes)
def forward(self, x):
cnn_outs = []
T = x.size(1) # Time steps
for t in range(T):
out_cnn = self.cnn(x[:,t,:,:])
flattened = self.flatten(out_cnn)
cnn_outs.append(flattened.unsqueeze(dim=1))
lstm_input = torch.cat(cnn_outs,dim=1)
_, (hn,cn)= self.lstm(lstm_input)
final_output = hn[-1]
return self.fc(final_output)
```
阅读全文
相关推荐















