李沐深度学习笔记-05线性代数

本文介绍了深度学习中的线性代数基础知识,包括标量、向量、矩阵的表示和操作,如哈达玛积、求和及矩阵向量积。此外,还详细探讨了PyTorch中拷贝的概念,区分了浅拷贝和深拷贝的差异,浅拷贝共享内存,深拷贝创建独立副本,并讨论了它们在梯度计算和计算图中的影响。

1.线性代数

标量由只有一个元素的张量表示

import torch
x=torch.tensor([3.0])
y=torch.tensor([2.0])
x+y,x*y,x/y,x**y
#输出(tensor([5.]), tensor([6.]), tensor([1.5000]), tensor([9.]))

可以将向量视为标量值组成的列表

x=torch.arange(4)
x
#输出tensor([0, 1, 2, 3])

通过张量的索引来访问任一元素

x[3]
#输出tensor(3)

访问张量的长度

len(x)
#4

只有一个轴的张量,形状只有一个元素

x.shape
#torch.Size([4])

通过指定两个分量m和n来创建一个形状为m*n的矩阵

A=torch.arange(20).reshape(5,4)
A
'''输出tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15],
        [16, 17, 18, 19]])
'''
B=torch.tensor([[1,2,3],[2,0,4
### 关于深度学习课程中循环卷积网络部分的学习笔记的《动手学深度学习》教材及其配套资源中,虽然主要关注的是基础概念、数据操作以及经典的卷积神经网络(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、付费专栏及课程。

余额充值