torch学习笔记(二) nn类结构-Linear

本文是PyTorch学习笔记的第二部分,主要介绍nn.Linear模块。Linear作为module的子类,用于实现线性变换。内容包括Linear的创建方法,详细解释了inputSize和outputSize的含义,并通过实例展示了前向传播过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linear 是module的子类,是参数化module的一种,与其名称一样,表示着一种线性变换。

创建

这里写图片描述
parent 的init函数
这里写图片描述
Linear的创建需要两个参数,inputSize 和 outputSize
inputSize:输入节点数
outputSize:输出节点数
所以Linear 有7个字段:

  • weight : Tensor , outputSize × inputSize
  • bias: Tensor ,outputSize
  • gradWeight: Tensor , outputSize × inputSize
  • gradBias: Tensor ,outputSize
  • gradInput: Tensor
  • output: Tensor
  • _type: output:type()

例子

module = nn.Linear(10, 5)

Forward Pass

这里写图片描述

### 关于李沐深度学习课程中循环卷积网络部分的学习笔记 在李沐的《动手学深度学习》教材及其配套资源中,虽然主要关注的是基础概念、数据操作以及经典的卷积神经网络(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) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值