P1-P5_动手学深度学习-pytorch(李沐版,粗浅的笔记)

news2024/12/28 22:14:23

目录

  • 预告
    •   1.学习深度学习的关键是动手
    •   2.什么是《动手学深度学习》
    •   3.曾经推出的版本(含github链接)
  • 一、课程安排
    •   1.目标
    •   2.内容
    •   3.上课形式
    •   4.你将学到什么
    •   5.资源
  • 二、深度学习的介绍
    •   1.AI地图
    •   2.深度学习在一些应用上的突破
    •   3.案例研究一广告点击
  • 三、安装
    •   1.Windows下的安装CUDA
    •   2.验证CUDA是否安装成功
    •   3.下载并安装一个Python环境(安装Miniconda)
    •   4.到Pytorch官网下载对应的GPU版本
    •   5.运行一个深度学习的应用(安装jupyter和d2l;下载d2I记事本,运行测试)
    •   6.本次总结
  • 四、数据操作+数据预处理
    •   1.数据操作
      •   (1)N维数组样例
      •   (2)创建数组
      •   (3)访问元素
    •   2.数据操作实现
      •   (1)补充:Jupyter的入门
      •   (2)补充:Markdown的入门
      •   (3)数据操作
    •   3.数据预处理
    •   4.数据操作QA
  • 五、线性代数
    •   1.线性代数
      •   (1)标量
      •   (2)向量
      •   (3)矩阵
      •   (4)特殊矩阵
    •   2.线性代数的实现
    •   3.按特定轴求和
    •   4.线性代数QA

  说明:该文章是学习 李沐老师在B站上分享的视频 动手学深度学习 PyTorch版而记录的笔记, 版权归李沐老师以及老师背后的团队所有,为了节省时间,笔记仅仅是粗浅的截图以及贴上代码,作用仅仅是复习以及忘了方便到b站上进行回看,以及方便更多的人学习。 若有侵权,请联系本人删除。笔记难免可能出现错误或笔误,若读者发现笔记有错误,欢迎在评论里批评指正。另外 部分内容直接由镜像GPT生成,请自行注意甄别
  笔记可能更新缓慢,建议去b站观看完整视频。
  其他参考链接: Windows 下安装 CUDA 和 Pytorch 跑深度学习 - 动手学深度学习v2python数据分析神器Jupyter notebook快速入门也许是B站最好的 Markdown 科普教程Markdown的官方文档

课程主页:https://courses.d2l.ai/zh-v2
教材:https://zh-v2.d2l.ai
课程论坛讨论:https://discuss.d2l.ai/c/16
Pytorch论坛:https://discuss.pytorch.org/

预告

在这里插入图片描述

  1.学习深度学习的关键是动手

在这里插入图片描述

  2.什么是《动手学深度学习》

在这里插入图片描述

  3.曾经推出的版本(含github链接)

在这里插入图片描述

含github链接:https://github.com/d2l-ai/d2l-zh

在这里插入图片描述
在这里插入图片描述

一、课程安排

  1.目标

在这里插入图片描述

  2.内容

在这里插入图片描述

  3.上课形式

在这里插入图片描述

  4.你将学到什么

在这里插入图片描述

  5.资源

在这里插入图片描述

课程主页:https://courses.d2l.ai/zh-v2
教材:https://zh-v2.d2l.ai
课程论坛讨论:https://discuss.d2l.ai/c/16
Pytorch论坛:https://discuss.pytorch.org/

二、深度学习的介绍

在这里插入图片描述

  1.AI地图

在这里插入图片描述

  2.深度学习在一些应用上的突破

  图片分类、物体检测和分割、样式迁移、人脸合成、文字生成图片、文字生成、无人驾驶、广告点击等。
在这里插入图片描述

http://www.image-net.org/

在这里插入图片描述
在这里插入图片描述

https://github.com/matterport/Mask_RCNN

在这里插入图片描述

https://github.com/StacyYang/MXNet-Gluon-Style-Transfer

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

https://openai.com/blog/dall-e/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  3.案例研究一广告点击

在这里插入图片描述
在这里插入图片描述
  简单的机器学习包括特征提取、模型的预测。
在这里插入图片描述

三、安装

在这里插入图片描述
在这里插入图片描述

# 1.[可选]使用conda/miniconda环境
conda env remove d2l-zh
conda create -n -y d2l-zh python=3.8 pip
conda activate d2l-zh
# 2.安装需要的包
pip install -y jupyter d2l torch torchvision
# 3.下载代码并执行
wget https://zh-v2.d2l.ai/d2l-zh.zip
unzip d2l-zh.zip
jupyter notebook

  关于安装这块,初学者可能大家跟我一样看不懂云端的配置方法,故请切换到李沐老师的非云端的环境配置方法的视频:Windows 下安装 CUDA 和 Pytorch 跑深度学习 - 动手学深度学习v2

  1.Windows下的安装CUDA

  首先,如下图所示,使用快捷键"Win+R"打开运行窗口,然后输入“dxdiag”并回车。然后点击“显示”,查看电脑是否有NVIDIA的GPU,如果没有,本安装方法不适用。

dxdiag

在这里插入图片描述
在这里插入图片描述
  接下来我们去Nvidial的官网下载CUDA。可直接搜素“CUDA”,点击“CUDA Toolkit 11.6 Downlo…”。然后根据自己的电脑选择合适的参数,选择本地安装,点击“Download”即可进行下载。(注意:此处版本最好安装11.8或12.1的,2023.10.5注明,此时PyTorch最新支持这两个版本。建议大家在选择版本前,先到Pytorch官网(“https://pytorch.org/”)看看。)
在这里插入图片描述
在这里插入图片描述
  双击安装。
在这里插入图片描述
  选择安装目录,点击“OK”。
在这里插入图片描述
  点击“继续”。(未安装过CUDA的可能不会出现这个页面。)
在这里插入图片描述
  接着按下面一堆图所示操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  2.验证CUDA是否安装成功

  如下图,打开命令行窗口。
在这里插入图片描述
  然后输入命令“nvidia-smi”,能查到CUDA的版本号,说明CUDA安装成功。

nvidia-smi

在这里插入图片描述

  3.下载并安装一个Python环境(安装Miniconda)

  首先进入“Conda”(链接“https://docs.conda.io/en/latest/”),然后点击“Miniconda”,点击“Miniconda3 Windows 64-bit”。
在这里插入图片描述
在这里插入图片描述
  如下一堆图所示进行安装。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  然后如下图所示查看安装的Python环境。

python --version   # 查看安装的Python环境

在这里插入图片描述

  4.到Pytorch官网下载对应的GPU版本

  接着到到Pytorch官网(“https://pytorch.org/”)下载对应的GPU版本。发现刚刚装的CUDA(版本11.6)不是最新的,于是选择版本11.8的,版本差异最小,有点小问题。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

在这里插入图片描述
  然后到”Anaconda Prompt“去执行刚刚复制的pip命令。
在这里插入图片描述
  安装完后,我们尝试在GPU上运行一个简单的Python程序,验证是否有问题。结果发现程序能够正常运行,说明没有问题。(本人代码输错了好几次,请忽略)

python   # 进入python
import torch
a=torch.ones((3,1))
a=a.cuda(0)
b=torch.ones((3,1)).cuda(0)
a+b

在这里插入图片描述

  5.运行一个深度学习的应用(安装jupyter和d2l;下载d2I记事本,运行测试)

  打开教材官网:https://zh-v2.d2l.ai。然后下载记事本并解压。
在这里插入图片描述
  接着退出python,再安装两个包:jupyter和d2l。

quit()  # 退出python
pip install jupyter d2l  # 安装两个包:jupyter和d2l

在这里插入图片描述
  如下图所示启动”jupyter notebook“,会自动打开一个浏览器窗口。

jupyter notebook  # 启动”jupyter notebook“

在这里插入图片描述
在这里插入图片描述
  然后类似下面的路径,找到”resnet.ipynb“并点击。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  接着,选择”Kernel“,点击运行所有的选项”Restart Kernel and Run All Cells…“。点击”Restart“。
在这里插入图片描述
在这里插入图片描述
  然后将页面拖到最后,发现模型已经跑了起来。打开”Anaconda Powershell Promp…“,输入”nvidia-smi“查看GPU的使用率。

nvidia-smi   # 查看GPU的使用率

在这里插入图片描述
在这里插入图片描述
  等模型跑完后,打开教材对应的地方,对比两次的结果。
在这里插入图片描述

  6.本次总结

在这里插入图片描述

四、数据操作+数据预处理

  1.数据操作

在这里插入图片描述

  (1)N维数组样例

在这里插入图片描述
在这里插入图片描述

  (2)创建数组

在这里插入图片描述

  (3)访问元素

在这里插入图片描述

  2.数据操作实现

  (1)补充:Jupyter的入门

  关于Jupyter notebook的使用,大家可以随便找个视频学习一下,比如本人观看了下面的视频:python数据分析神器Jupyter notebook快速入门
在这里插入图片描述
  需要知道(由于Jupyter的改版,部分操作有所变化):

注:这些内容均来源于刚刚的链接,只是少部分由于Jupyter的改版,操作有所变化
1.特点:把代码和文本变成单元格,可逐步运行单元格或运行部分单元格。
2.优点:
-1.学习简单,掌握十几个快捷键即可飞速入门。
-2.Jupyter是以代码块和单元格为单位进行运行的。优点:容易查看中间变量,易调试,方便找出bug。
-3.可插入markdown的说明性文字。
3.安装
pip install jupyter # 安装jupyter包
4.新建文件
- New-选择需要创建的文件类型或者文件夹等
5.打开方式以及创建“jupyter”文件
- 打开命令行窗口,输入命令”jupyter notebook“即可打开。(注意:如果是跟着本笔记走的,得去“Anaconda Prompt”中打开,因为是在那里面安装的jupyter包,否则不能启动jupyter)
jupyter notebook  # 启动”jupyter notebook“,让浏览器使用jupyter打开当前目录
- 浏览器使用jupyter打开当前目录后,然后寻找jupyter文件。第一次使用可能没有jupyter文件,此时选择一个合适的目录,然后右击“New Notebook”创建“.ipynb”的jupyter notebook文件
- 选择语言类型,点击“Select”,即可成功创建文件。
6.文档编辑
- 自行学习markdown的编写方式以及听刚刚给出的链接的视频
- 分为命令模式和编辑模式
- 公式可使用LaTeX代码
7.快捷键
- 查看快捷键:Help-Show Keyboard Shortcuts。下面是将快捷键复制出来经翻译后的结果,个别是补充的:
** 命令模式 ESC
** 重新做 Ctrl + Shift + Z
** 撤销 Ctrl + Z
中断内核 I + I
重新启动内核… 0 + 0
** 切换到代码单元格类型 Y
切换到标题1 1
切换到标题2 2
切换到标题3 3
切换到标题4 4
切换到标题5 5
切换到标题6 6
** 切换到Markdown单元格类型 M
切换到原始单元格类型 R
折叠所有标题 Ctrl + Shift + ArrowLeft
** 复制单元格 C
** 剪切单元格 X
** 删除单元格 D + D
** 进入编辑模式 Enter
展开所有标题 Ctrl + Shift + ArrowRight
向上扩展选择 Shift + ArrowUp
向上扩展选择 Shift + K
向下扩展选择 Shift + ArrowDown
向下扩展选择 Shift + J
扩展选择至底部 Shift + End
扩展选择至顶部 Shift + Home
** 在上方插入单元格 A
** 在下方插入单元格 B
在当前标题上方插入标题 Shift + A
在当前标题下方插入标题 Shift + B
合并上方单元格 Ctrl + Backspace
合并下方单元格 Ctrl + Shift + M
合并选定单元格 Shift + M
下移单元格 Ctrl + Shift + ArrowDown
上移单元格 Ctrl + Shift + ArrowUp
选择下方单元格 ArrowDown
选择下方单元格 J
选择上方标题或折叠标题 ArrowLeft
选择下方标题或展开标题 ArrowRight
选择上方单元格 ArrowUp
选择上方单元格 K
粘贴至下方单元格 V
重做单元格操作 Shift + Z
** 运行选定单元格并不前进 Ctrl + Enter
运行选定单元格并在下方插入 Alt + Enter
选择所有单元格 Ctrl + A
** 显示行号 Shift + L
并排渲染 Shift + R
撤销单元格操作 Z
** 运行选定单元格并跳到下一单元格 Shift + Enter
结束搜索 Escape
查找下一个 Ctrl + G
查找上一个 Ctrl + Shift + G
查找… Ctrl + F
激活下一个标签 Ctrl + Shift + ]
激活下一个标签栏 Ctrl + Shift + .
激活上一个标签 Ctrl + Shift + [
激活上一个标签栏 Ctrl + Shift + ,
切换左侧区域 Ctrl + B
切换模式 Ctrl + Shift + D
激活命令面板 Ctrl + Shift + C
显示键盘快捷键 Ctrl + Shift + H
** 暂停 F9
** 下一步 F10
调试器面板 Ctrl + Shift + E
步入 F11
步出 Shift + F11
** 终止 Shift + F9
** 保存笔记本 Ctrl + S
另存为笔记本… Ctrl + Shift + S
激活以前使用的标签 Ctrl + Shift + '
目录 Ctrl + Shift + K
8.文件重命名
- 听刚刚给出的链接的视频或者自己摸索或者上网查
9.运行
-1)全部运行:Run-Run All Cells。代码块前显示数字,表示未执行;显示“[*],表示已执行。
-2)运行代码块:快捷键Shift+Enter

其他操作请自己摸索,慢慢就熟悉了

  (2)补充:Markdown的入门

  参考的视频链接:也许是B站最好的 Markdown 科普教程

1.定义:一种轻量级的标记语言。
2.Markdown编辑器:将Markdown文档渲染为HTML的格式,以供在Web浏览器中浏览阅读。
3.优点:沉浸、统一、可迁移
4.语法:
-1)标题
- 一级标题:“# 一、**”
- 二级标题:“## 1.1**”
- 依次类推,一般支持6级标题
-2)无序列表
- 格式:“- 无序列表”。效果:“▪ 无序列表”
-3)有序列表
- 格式:“1. 有序列表”,回车可以让数字有序增加,Tab键可以可以缩进列表,Shitf+Tab键取消列表缩进。
-4)斜体
- 格式:“*斜体*-5)加粗
- 格式:“**加粗**-6)删除
- 格式:“~~删除~~-7)高亮
- 格式:“==高亮==- 部分不支持的地方可使用html格式:“<mark>torch</mark>-8)分割线
- 用法:“---”,再回车
-9)超链接
- 格式:“[百度](https://www.baidu.com/)”,方框内是标题,括号内是链接。

其他语法请参考Markdown的官方文档,链接:https://markdown.com.cn/

  Markdown的官方文档的超链接:Markdown的官方文档

  (3)数据操作

  请观看b站视频的同时,直接阅读教材的对应章节,链接:2.1. 数据操作
  对应的jupyter文件的相对路径:“\d2l-zh\pytorch\chapter_preliminaries\index.ipynb”。

# 注:为了理解其中的代码,加了点注释
import torch  # 导入torch包
# 这行代码导入了PyTorch库,它是一个用于深度学习和机器学习的开源深度学习库。
# PyTorch提供了各种工具和功能,使得构建、训练和部署神经网络变得更加容易。
# 通过导入torch,你可以在Python代码中使用PyTorch的各种模块和函数,包括张量操作、神经网络层、优化器、损失函数等。
# 这使得你能够进行深度学习任务,如图像分类、自然语言处理、回归分析等。

x=torch.arange(12) # torch.arange()是PyTorch中用于创建一个等差数列的函数,默认步长为1。
x

x.shape  # 通过张量的shape属性来访问张量的形状和张量中元素的总数
x.numel()  # 用于获取张量中元素的总数

X=x.reshape(3,4)  # 要求12=3*4,三行四列
X

torch.zeros((2,3,4))   # 全0张量
torch.ones((2,3,4))   # 全1张量
torch.tensor([[2,1,4,3],[1,2,3,4],[4,3,2,1]])  # tensor:张量

x=torch.tensor([1.0,2,4,8])
y=torch.tensor([2,2,2,2])
x+y,x-y,x*y,x/y,x**y   # **运算符是求幂运算

torch.exp(x)

# 多个张量连结
# -创建了两个张量 X 和 Y,然后使用 torch.cat() 函数进行了张量的拼接操作
# -dim=0:行   dim=1:列
X = torch.arange(12, dtype=torch.float32).reshape((3,4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)

X == Y   # 通过逻辑运算符构建二元张量

X.sum()  # 元素求和

# 广播机制:形状不一样时,按行复制或按列复制整个向量,使两个形状一样,再求和
a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2))
a, b
a + b

# 元素的访问
# [-1]选择最后一个元素,可以用[1:3]选择第二个和第三个元素
X[-1], X[1:3]  # 此处结合语境为:[-1]选择最后一行元素,可以用[1:3]选择第二行和第三行元素

# 通过索引改变矩阵的元素
X[1, 2] = 9
X

# 为多个元素赋值
X[0:2, :] = 12
X

# 为新结果分配内存,注意与C语言区别
before = id(Y)  # id:标识号
Y = Y + X
id(Y) == before

# 执行原地操作   Z的id不变
Z = torch.zeros_like(Y)
print('id(Z):', id(Z))
Z[:] = X + Y # Z[:] 表示将 Z 的所有元素替换为运算结果
print('id(Z):', id(Z))

# 如果在后续计算中没有重复使用X, 我们也可以使用X[:] = X + Y或X += Y来减少操作的内存开销。
before = id(X)
X += Y
id(X) == before

# 转换为NumPy张量
A = X.numpy()
B = torch.tensor(A)
type(A), type(B)

# 将大小为1的张量转换为Python标量
a = torch.tensor([3.5])
a, a.item(), float(a), int(a)  

  3.数据预处理

  请观看b站视频的同时,直接阅读教材的对应章节,链接:2.2. 数据操作
在这里插入图片描述
  注:CSV是"Comma-Separated Values"(逗号分隔值)的缩写,是一种常见的文本文件格式,用于存储和交换表格数据。CSV文件由纯文本组成,数据以行为单位,每行中的数据字段之间用逗号(,)或其他分隔符(如分号、制表符等)进行分隔。

# os模块提供了一种与操作系统功能进行交互的方式,包括与文件系统的交互、管理目录和运行系统命令等。
import os

os.makedirs(os.path.join('..', 'data'), exist_ok=True)
# os.makedirs: 这是os模块中的一个函数,用于递归地创建目录。如果目录已经存在,它不会引发错误。
# os.path.join('..', 'data'): 这一部分使用os.path.join函数来创建一个路径字符串。在这里,它将两个字符串连接起来,形成一个相对路径,其中'..'表示上一级目录,'data'表示一个名为"data"的子目录
# exist_ok=True: 这是一个参数,如果设置为True,则表示如果目录已经存在,不会引发错误。如果目录不存在,它将创建目录。
data_file = os.path.join('..', 'data', 'house_tiny.csv')
with open(data_file, 'w') as f:
    f.write('NumRooms,Alley,Price\n')  # 列名
    f.write('NA,Pave,127500\n')  # 每行表示一个数据样本
    # NA:表示未知数
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

在这里插入图片描述

# 如果没有安装pandas,只需取消对以下行的注释来安装pandas
# !pip install pandas
import pandas as pd
# pandas是一个强大的数据处理和分析库,特别适用于处理结构化数据,如表格数据。它提供了各种数据结构和函数,使数据的读取、转换、筛选、统计分析等操作变得非常简便。
# 常见的pandas数据结构包括DataFrame和Series,它们允许你以表格形式组织和操作数据。

data = pd.read_csv(data_file)
# 使用pd.read_csv(data_file)读取了一个CSV文件的内容,并将其存储在一个pandas的数据结构中,通常是一个DataFrame。这里的data_file是CSV文件的文件路径,你需要将其替换为实际的文件路径。
print(data)

在这里插入图片描述

# 通过位置索引iloc,我们将data分成inputs和outputs, 其中前者为data的前两列,而后者为data的最后一列。 对于inputs中缺少的数值,我们用同一列的均值替换“NaN”项。
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())
# mean()函数计算了该列中非空数值的平均值
# inputs.fillna(inputs.mean()): 这部分使用fillna()方法,将inputs中的缺失值(NaN,Not-a-Number)用对应列的平均值填充
print(inputs)

在这里插入图片描述

inputs = pd.get_dummies(inputs, dummy_na=True)
"""
这行代码使用了pandas库中的get_dummies()函数来进行独热编码(One-Hot Encoding)处理。让我解释一下这段代码的作用:
- pd.get_dummies(inputs, dummy_na=True): 这部分代码对inputs进行了独热编码的处理。独热编码是一种用于处理分类变量的方法,它将原始的分类变量转换为二进制的形式,以便在机器学习模型中使用。
- inputs: 这是要进行独热编码的数据,通常是一个pandas的数据框(DataFrame)。
- dummy_na=True: 这个参数是可选的,如果设置为True,则会为原始数据中的缺失值(NaN)创建一个额外的列进行编码。
- 独热编码将原始的分类变量拆分成多个二进制变量,每个变量代表一个可能的分类值。这有助于避免模型将分类变量解释为连续变量,并确保模型能够正确理解和使用这些分类信息。
- 举例来说,如果原始数据包含一个"颜色"列,其中包括"红色"、"绿色"和"蓝色"这三个分类值,独热编码后会创建三个新的列,分别代表这三种颜色,每列的取值只有0和1,1表示对应的颜色。同时,如果设置了dummy_na=True,还会创建一个额外的列表示缺失值。
"""
print(inputs)

在这里插入图片描述

# 转换为张量格式
import torch

X = torch.tensor(inputs.to_numpy(dtype=float))
y = torch.tensor(outputs.to_numpy(dtype=float))
X, y

  4.数据操作QA

在这里插入图片描述
在这里插入图片描述

五、线性代数

  1.线性代数

  请观看b站视频的同时,直接阅读教材的对应章节,链接:2.3.线性代数
在这里插入图片描述

  (1)标量

在这里插入图片描述

  (2)向量

在这里插入图片描述
  其中 α \alpha α为标量。上面的公式中 ∣ ∣ a ⋅ b ∣ ∣ = ∣ a ∣ ⋅ ∣ ∣ b ∣ ∣ ||a \cdot b||=|a| \cdot ||b|| ∣∣ab∣∣=a∣∣b∣∣ a a a为标量,其他地方的 a a a为向量。
在这里插入图片描述
在这里插入图片描述

  (3)矩阵

在这里插入图片描述
在这里插入图片描述
  行和列相乘。
在这里插入图片描述
在这里插入图片描述
   i i i行和 j j j列相乘作为结果矩阵的 i i i j j j列的一个元素。
在这里插入图片描述

  (4)特殊矩阵

在这里插入图片描述
在这里插入图片描述
  其中“ j = π ( i ) j = \pi ( i ) j=π(i)”表示 j j j i i i的置换。
在这里插入图片描述
  对于特征向量,矩阵并不会改变它的方向,如上图的绿色的向量就是一个特征向量。

  2.线性代数的实现

在这里插入图片描述

import torch

x = torch.tensor(3.0)
y = torch.tensor(2.0)

x + y, x * y, x / y, x**y

在这里插入图片描述

x = torch.arange(4)
x
x[3]

在这里插入图片描述

len(x)
x.shape

在这里插入图片描述

A = torch.arange(20).reshape(5, 4)
A
A.T

在这里插入图片描述

B = torch.tensor([[1, 2, 3], [2, 0, 4], [3, 4, 5]])
B
B == B.T

在这里插入图片描述

X = torch.arange(24).reshape(2, 3, 4)
X

在这里插入图片描述

A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone()  # 通过分配新内存,将A的一个副本分配给B
A, A + B

在这里插入图片描述

A * B
a = 2
X = torch.arange(24).reshape(2, 3, 4)
a + X, (a * X).shape

在这里插入图片描述

x = torch.arange(4, dtype=torch.float32)
x, x.sum()
A.shape, A.sum()

在这里插入图片描述

A_sum_axis0 = A.sum(axis=0)
A_sum_axis0, A_sum_axis0.shape
A_sum_axis1 = A.sum(axis=1)
A_sum_axis1, A_sum_axis1.shape
A.sum(axis=[0, 1])  # 结果和A.sum()相同

在这里插入图片描述

A.mean(), A.sum() / A.numel()
A.mean(axis=0), A.sum(axis=0) / A.shape[0]

在这里插入图片描述
  注:广播机制要求维度个数一样。

sum_A = A.sum(axis=1, keepdims=True)
sum_A
A / sum_A

在这里插入图片描述

A.cumsum(axis=0)

在这里插入图片描述

y = torch.ones(4, dtype = torch.float32)
x, y, torch.dot(x, y)   # torch.dot:点积
torch.sum(x * y)

在这里插入图片描述

A.shape, x.shape, torch.mv(A, x)

在这里插入图片描述

B = torch.ones(4, 3)
torch.mm(A, B)

在这里插入图片描述

u = torch.tensor([3.0, -4.0])
torch.norm(u)

在这里插入图片描述

torch.abs(u).sum()

在这里插入图片描述

torch.norm(torch.ones((4, 9)))

  3.按特定轴求和

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  4.线性代数QA

  详细内容请观看视频:05 线性代数-P4 线性代数QA
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构与算法】之“堆”介绍

目录 堆的基本存储 一、概念及其介绍 二、适用说明 三、结构图示 堆的 shift up 堆的 shift down 基础堆排序 一、概念及其介绍 二、适用说明 三、过程图示 优化堆排序 索引堆及其优化 一、概念及其介绍 二、适用说明 三、结构图示 堆的基本存储 一、概念及其介…

SiegedSec 黑客组织袭击北约网络系统

Security Affairs 网站披露&#xff0c;一个名为 SiegedSec 的网络攻击组织近期成功入侵了北约网络系统&#xff0c;并在网上散布盗取的大量非机密文件。 目前&#xff0c;北约正在就此事展开积极调查&#xff0c;其所属官员发表声明表示&#xff0c;北约内部已经组织了大量的网…

智能导览与实时监测:数字孪生助力景区管理

在当今旅游业快速发展的背景下&#xff0c;景区“人流管理”成为了一个越来越重要的问题。数字孪生技术由于其自身优势&#xff0c;可以为景区管理者提供更智能、更高效的管理方案。本文结合山海鲸可视化几个数字孪生案例带大家一起了解数字孪生在景区人流管理方面的应用&#…

计算机竞赛 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基…

架构师选择题--计算机网络

架构师选择题--计算机网络 真题 真题 d http:80 https:httpssl &#xff1a;443 b b pop3是邮件接收协议&#xff1a;110 SMTP是邮件发送协议&#xff1a;25 http:80 A 网络隔离&#xff1a;防火墙&#xff08;逻辑&#xff09;&#xff0c;网闸&#xff08;物理&#xff09; …

OpenCV4(C++) —— 图像数据类型转换和颜色模型转换

文章目录 一、图像数据类型转换二、颜色模型转换三、通道的分离和融合 一、图像数据类型转换 OpenCV中使用imread读取一张彩色图像时&#xff0c;默认采用的是BGR通道和整数类型(0-255&#xff0c;CV_8U)。 在某些情况下&#xff0c;会将整数类型(0-255)转换为浮点类型(0-1)&a…

助力电力行业数字化转型:智慧风电项目介绍

智慧电力作为电力领域的突破性进展&#xff0c;旨在实现能源领域的数字化转型。智慧电力借助数字孪生、IOT、云计算等技术&#xff0c;将传统的电力系统升级为高智能、高效能的系统&#xff0c;助力传统能源企业实现数字化转型。下面让我们来看一看山海鲸可视化提供的智慧电力相…

c#利用Chart 画图

c#利用Chart 画图 添加画图组件 编写代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; …

【网络安全-sql注入(5)】sqlmap以及几款自动化sql注入工具的详细使用过程(提供工具)

一&#xff0c;sqlmap 工具的详细使用 kali系统自带这个工具&#xff0c;无需安装直接sqlmap 后面接参数使用 Windows上参照以下方法安装即可 1-1 工具下载 1-1-1 sqlmap下载 sqlmap 工具下载地址&#xff1a; GitHub - sqlmapproject/sqlmap: Automatic SQL injection a…

6-6 两个有序链表序列的合并 分数 10

List Merge(List L1, List L2) {if (L1 NULL)return L2;if (L2 NULL)return L1;// 定义指针p和q分别指向链表L1和L2的头结点List p L1->Next;List q L2->Next;// 定义新链表的头结点和指针rList head (List)malloc(sizeof(struct Node));head->Next NULL;List r…

WinScope跟踪window/layer pb文件

WinScope web用来跟踪分析WindowManager或SurfaceFlinger在window转换期间和转换后的状态&#xff0c;跟踪记录会被写入 /data/misc/wmtrace/wm_trace.pb 和 /data/misc/wmtrace/layers_trace.pb&#xff0c;同时还会包含在错误报告中。 一、下载winscope.html curl https://a…

Cocos Creator3.8 项目实战(四)巧用九宫格图像拉伸

一、为什么要使用九宫格图像拉伸 相信做过前端的同学都知道&#xff0c;ui &#xff08;图片&#xff09;资源对包体大小和内存都有非常直接的影响。 通常ui 资源都是图片&#xff0c;也是最占资源量的资源类型&#xff0c;游戏中的ui 资源还是人机交互的最重要的部分&#xff…

阿里影业+大麦,开启大文娱新纪元?

被“精心呵护”长达十年后&#xff0c;阿里大文娱在今年终于踏上了关键节点。 3月份&#xff0c;阿里“16N”组织大变革后&#xff0c;大文娱集团独自上路。8月&#xff0c;“分家”后的第一份财报显示&#xff0c;阿里大文娱集团成功大幅扭亏&#xff0c;实现了首次季度经调整…

ToBeWritten之狩猎恶意攻击者

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

如何下载修复xinput1_3.dll并避免常见错误 ,详解多种实用解决方法

在运行某些应用程序或游戏时&#xff0c;您可能会遇到xinput1_3.dll丢失或损坏的错误提示。这是由于操作系统缺少xinput1_3.dll文件所引起的。针对以上问题&#xff0c;我们提供了几种解决方法来修复这个问题。本文将详细介绍如何下载修复xinput1_3.dll&#xff0c;并提供一些建…

【LeetCode75】第六十六题 编辑距离

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们三种操作方式&#xff0c;插入一个字符&#xff0c;删除一个字符&#xff0c;替换一个字符。 问我们最少操作几次可以把字符串…

图形学中一些基本知识的总结与复习

前言 在过完games101课程后仍然觉得自己还有许多地方不懂与遗漏&#xff0c;以此来补充与复习一些其中的知识。 参考&#xff1a;Games101、《Unity Shader 入门精要》 GPU渲染流水线(GPU Rendering Pipeline) ----注&#xff1a;Games101课程中所展示渲染流程与书中有所不同&…

前端作业(17)

之后的20个作业&#xff0c;学自【20个JavaScript经典案例-哔哩哔哩】 https://b23.tv/kVj1P5f 支付倒计时 1. 支付10s倒计时 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compat…

【UE】在游戏运行时,通过选择uasset来生成静态网格体

目录 主要流程 步骤 一、创建用于包含静态网格体的Actor蓝图 二、按钮点击事件 效果 主要流程 用户点击按钮后产生一个文件对话框&#xff0c;用户通过文件对话框选择指定的文件夹&#xff0c;我们获取到这个文件夹路径后处理成“按路径获取资产”节点所需的输入&#x…

AdaBoost(下):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…