网站建设需要下载哪些软件,网站代码调试,济南旅游网页设计,seo推广优化的方法0.初识张量
PyTorch 是一个 Python 深度学习框架#xff0c;它将数据封装成张量#xff08;Tensor#xff09;来进行运算。PyTorch 中的张量就是元素为同一种数据类型的多维矩阵。在 PyTorch 中#xff0c;张量以 类 的形式封装起来#xff0c;对张量的一些运… 0.初识张量
PyTorch 是一个 Python 深度学习框架它将数据封装成张量Tensor来进行运算。PyTorch 中的张量就是元素为同一种数据类型的多维矩阵。在 PyTorch 中张量以 类 的形式封装起来对张量的一些运算、处理的方法被封装在类中。 我们如何理解上面这段话呢
举一个例子
假如我们要做一个超级厉害的美食推荐系统正如当下各种强大的推荐算法比如抖音短视频根据用户的喜好和痛点来推荐首先我们得把各种各样跟美食相关的信息告诉这个系统让它能明白每一道菜的特点然后才能给你推荐合适的美食。 这时候呢数据就好比是我们要处理的各种食材。比如我们有一道宫保鸡丁它有很多属性像食材的种类鸡肉、花生、辣椒等、食材的用量鸡肉 100 克、花生 50 克等、口味特点甜辣、咸香等这些信息就是我们的数据。 那张量是什么呢张量就像是一个特别规整的盒子我们把这些数据都按照一定的规则放到这个盒子里。比如我们可以把宫保鸡丁的食材种类用一个列表表示食材用量用另一个列表表示口味特点也用一个列表表示然后把这些列表都放到一个大的张量盒子里。这样张量就把这些不同维度的数据都整合到一起啦就像下面这样
import torch# 假设食材种类用数字编码鸡肉1花生2辣椒3
ingredient_types [1, 2, 3]
# 食材用量
ingredient_amounts [100, 50, 30]
# 口味特点甜辣1咸香0
taste_features [1, 0] # 把这些数据组合成一个张量
gongbao_jiding_tensor torch.tensor([ingredient_types, ingredient_amounts, taste_features])
print(gongbao_jiding_tensor)
这里的gongbao_jiding_tensor就是一个张量它是一个二维的张量就像一个有两行三列的表格。它把宫保鸡丁的各种数据都整齐地装在了一起方便我们的美食推荐系统来处理。 如果我们还有其他的菜比如麻婆豆腐、回锅肉等等我们就可以把它们的数据也都放到一个更大的张量里就好像把很多个装着不同菜数据的小盒子再放到一个更大的盒子里这个大盒子也是一个张量不过它可能就是三维的啦因为它要装下很多道菜的数据。
# 假设麻婆豆腐的数据
mapo_tofu_ingredient_types [4, 5, 6]
mapo_tofu_ingredient_amounts [200, 30, 20]
mapo_tofu_taste_features [1, 1] # 把宫保鸡丁和麻婆豆腐的数据组合成一个更大的张量
all_dishes_tensor torch.tensor([[ingredient_types, ingredient_amounts, taste_features],[mapo_tofu_ingredient_types, mapo_tofu_ingredient_amounts, mapo_tofu_taste_features]
])
print(all_dishes_tensor)
这样我们的美食推荐系统就可以很方便地对这些数据进行处理它可以根据这些张量里的数据分析不同菜之间的相似性比如哪些菜都是辣的哪些菜都用了某种食材然后根据你的喜好给你推荐合适的美食。 在深度学习里也是一样的道理我们要处理的图像、语音、文本等各种数据都可以像这些菜的信息一样被封装成张量。这样深度学习模型就可以很方便地对这些数据进行各种运算和处理就像我们的美食推荐系统处理菜的数据一样去发现数据里的规律做出准确的判断和预测。 而且把张量以 “类” 的形式封装起来就好像是把这些处理数据的方法和数据都放在了一个有特定功能的小房子里。在这个小房子里有专门的方法来对张量进行加、减、乘、除等运算还有方法来改变张量的形状、提取张量里的某些信息等等。我们只需要告诉这个小房子我们要做什么它就会帮我们完成相应的操作这样就大大方便了我们对数据的处理和使用啦。 0.1如何理解维度 0.1.1从吃的角度
假设我们有这样一个二维张量
import torch# 假设我们有一个二维张量存储了三道菜的信息
tensor torch.tensor([[1, 2, 3], # 第一道菜的信息[4, 5, 6], # 第二道菜的信息[7, 8, 9] # 第三道菜的信息
])
在这个例子中第一个维度也就是行可以代表不同的菜哦。比如说第一行 [1, 2, 3] 代表宫保鸡丁第二行 [4, 5, 6] 代表麻婆豆腐第三行 [7, 8, 9] 代表回锅肉。 而第二个维度也就是列我们可以赋予它不同的含义比如我们可以规定第一列表示这道菜的价格第二列表示这道菜的热量第三列表示这道菜的受欢迎程度。 那么对于 tensor[0][1] 这个元素它就表示宫保鸡丁的热量因为 tensor[0] 表示宫保鸡丁的数据而 tensor[0][1] 表示宫保鸡丁数据中的第二列也就是我们规定的热量信息。 0.1.2从数学角度
张量可以看作是扩展了标量0维、向量1维和矩阵2维的高维数组。根据维度的不同我们可以将张量分为不同的种类。
1. 二维张量矩阵
二维张量是一个表格可以想象成一个具有行和列的数组。它实际上就是一个矩阵每个元素都有两个索引行索引和列索引。
例子二维矩阵
想象一下一个简单的二维矩阵张量 A [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 这个矩阵的维度是 3×33 \times 33×3也就是有3行和3列。每个元素 A[i][j]A[i][j]A[i][j] 都可以通过两个下标 iii行和 jjj列来访问。例如元素 A[0][1]A[0][1]A[0][1] 就是2表示在第一行第二列的元素。
我们可以把二维张量看作是一个 表格 或 棋盘其中每个格子元素都有一个特定的位置。 2. 三维张量盒子
三维张量是一个更复杂的结构实际上可以看作是一系列矩阵的集合。它的每个元素都需要三个索引一个表示“层”depth一个表示行索引另一个表示列索引。三维张量可以想象成一个 立体的表格。
例子三维张量
假设我们有一个三维张量我们可以称之为“盒子” B [ [ [1, 2], [3, 4] ], [ [5, 6], [7, 8] ], [ [9, 10], [11, 12] ] ] 这个三维张量的形状是3x2x2 包含了三个矩阵层每个矩阵是2x2的大小。
可以把这个三维张量看作是一个 立方体 或 盒子每一层都是一个矩阵。
第一层是什么是[[1,2] , [3,4]]
一次类推
每个元素可以通过三个索引来访问比如 B[2][1][0代表第三层、第二行、第一列的元素即11。 1.总结 1.1张量概念 1.1.1PyTorch 是深度学习框架使用张量封装数据运算张量是同数据类型的多维矩阵以类封装包含多种处理方法。1.1.2如美食推荐系统中宫保鸡丁的食材种类、用量和口味等信息可封装成二维张量多道菜信息可组成三维张量方便系统处理。1.1.3张量类便于进行数据运算和操作。 1.2维度理解 1.2.1从吃的角度二维张量存储多道菜信息行代表菜列可表示价格、热量等。1.2.2从数学角度二维张量是矩阵三维张量是多个矩阵集合可看作立体结构元素通过多个索引访问。 欢迎各位大佬关注和三连