做宠物商品的网站,网站制作公司网站建设公司,网站 网址 域名,做网站税率同学你好#xff01;本文章于2021年末编写#xff0c;已与实际存在较大的偏差#xff01;
故在2022年末对本系列进行填充与更新#xff0c;欢迎大家订阅最新的专栏#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现#xff0c;
Pytorch深度学习理论篇(2023版)…同学你好本文章于2021年末编写已与实际存在较大的偏差
故在2022年末对本系列进行填充与更新欢迎大家订阅最新的专栏获取基于Pytorch1.10版本的理论代码(2023版)实现
Pytorch深度学习·理论篇(2023版)目录地址为
CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录本专栏将通过系统的深度学习实例从可解释性的角度对深度学习的原理进行讲解与分析通过将深度学习知识与Pytorch的高效结合帮助各位新入门的读者理解深度学习各个模板之间的关系这些均是在Pytorch上实现的可以有效的结合当前各位研究生的研究方向设计人工智能的各个领域是经过一年时间打磨的精品专栏https://v9999.blog.csdn.net/article/details/127587345欢迎大家订阅(2023版)理论篇 以下为2021版原文~~~~ 1.基本概念 2.线性代数的实现
2.1标量
标量由只有一个元素的张量表示。
import torchx 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.])) 2.2 向量
向量视为标量值组成的列表。我们将这些标量值称为向量的元素分量。 x torch.arange(4)
x tensor([0, 1, 2, 3]) 2.3 长度、维度、形状
与普通的Python数组一样我们可以通过调用Python的内置len()函数来访问张量的长度。
len(x) 4 x.shape #在这个意义上张量的某个轴的维数就是这个轴的长度。 torch.Size([4]) 2.5 矩阵 #当调用函数来实例化张量时我们可以通过指定两个分量 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]])A.T tensor([[ 0, 4, 8, 12, 16],[ 1, 5, 9, 13, 17],[ 2, 6, 10, 14, 18],[ 3, 7, 11, 15, 19]]) 作为方矩阵的一种特殊类型对称矩阵symmetric matrixAA等于其转置AA⊤AA⊤。这里我们定义一个对称矩阵BB
B torch.tensor([[1, 2, 3], [2, 0, 4], [3, 4, 5]])
B tensor([[1, 2, 3],[2, 0, 4],[3, 4, 5]]) 现在我们将B与它的转置进行比较。
B B.T tensor([[True, True, True],[True, True, True],[True, True, True]]) 2.6 张量
就像向量是标量的推广矩阵是向量的推广一样。张量本小节中的“张量”指代数对象为我们提供了描述具有任意数量轴的nn维数组的通用方法。例如向量是一阶张量矩阵是二阶张量。
当我们开始处理图像时张量将变得更加重要图像以nn维数组形式出现其中3个轴对应于高度、宽度以及一个通道channel轴用于堆叠颜色通道红色、绿色和蓝色。
X torch.arange(24).reshape(2, 3, 4)
X tensor([[[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]]) 2.7 张量算法的基本性质
标量、向量、矩阵和任意数量轴的张量有一些很好的属性通常会派上用场。例如你可能已经从按元素操作的定义中注意到任何按元素的一元运算都不会改变其操作数的形状。同样给定具有相同形状的任意两个张量任何按元素二元运算的结果都将是相同形状的张量。例如将两个相同形状的矩阵相加会在这两个矩阵上执行元素加法。
A torch.arange(20, dtypetorch.float32).reshape(5, 4)
B A.clone() # 通过分配新内存将A的一个副本分配给B
A, A B (tensor([[ 0., 1., 2., 3.],[ 4., 5., 6., 7.],[ 8., 9., 10., 11.],[12., 13., 14., 15.],[16., 17., 18., 19.]]),tensor([[ 0., 2., 4., 6.],[ 8., 10., 12., 14.],[16., 18., 20., 22.],[24., 26., 28., 30.],[32., 34., 36., 38.]])) A * B tensor([[ 0., 1., 4., 9.],[ 16., 25., 36., 49.],[ 64., 81., 100., 121.],[144., 169., 196., 225.],[256., 289., 324., 361.]]) 将张量乘以或加上一个标量不会改变张量的形状其中张量的每个元素都将与标量相加或相乘。
a 2
X torch.arange(24).reshape(2, 3, 4)
a X, (a * X).shape (tensor([[[ 2, 3, 4, 5],[ 6, 7, 8, 9],[10, 11, 12, 13]],[[14, 15, 16, 17],[18, 19, 20, 21],[22, 23, 24, 25]]]),torch.Size([2, 3, 4])) 2.8 张量算法的基本性质
求和
x torch.arange(4, dtypetorch.float32)
x, x.sum() (tensor([0., 1., 2., 3.]), tensor(6.)) 默认情况下调用求和函数会沿所有的轴降低张量的维度使它变为一个标量。
我们还可以指定张量沿哪一个轴来通过求和降低维度。 由于输入矩阵沿0轴降维以生成输出向量因此输入的轴0的维数在输出形状中丢失。 一个与求和相关的量是平均值mean或average。我们通过将总和除以元素总数来计算平均值。在代码中我们可以调用函数来计算任意形状张量的平均值。
A.mean(), A.sum() / A.numel() (tensor(9.5000), tensor(9.5000)) 计算平均值的函数也可以沿指定轴降低张量的维度。
A.mean(axis0), A.sum(axis0) / A.shape[0] (tensor([ 8., 9., 10., 11.]), tensor([ 8., 9., 10., 11.])) 2.9 非降维求和 2.10 点积 axis0 形状就是去掉第一个
axis1 形状就是去掉第二个
axis2 形状就是去掉第三个
axis[12] 形状就是去掉第二个和第三个 QA
1.稀疏化会导致出现有一百万个列每个列只有一个数。但是不会影响太多
2.深度学习/机器学习为什么用张量? 深度学习是机器学习的一部分统计学家认为是计算机对数学统计的理解所以用张量
3.copy和clone的区别 深拷贝和浅拷贝
4.对哪一维求和 等同于消除哪一维(正确)
5.torch不区分行列向量吗 一维张量一定是行向量 列向量是一个矩阵 可以用二位矩阵来表示行列向量。 对于计算机来说都是数组
6.稀疏的时候可以把他当做单词来做词向量并不是每次都可以绝大多数可以。
7.关于学习框架的选择工具和学习应该分开跟着时代走跟着潮流走。应该学习怎么样开车而不是开什么车。不要因为工具限制自己。
8.医疗图像中的 SVS格式和医生勾画的XML格式的文件如何预处理 两种做法其一、像素级解决利用手写文字识别解决。其二、利用nop的形式解决通过计算机视觉的方式。也可两个配合使用。
9. axis 0按照行可以理解为把“行”给抹去只剩1行也就是上下压扁。 axis 1按照列可以理解为把“列”给抹去只剩1列也就是左右压扁。