《神经网络与PyTorch实战》——3使用PyTorch进行科学计算
第 3 章使用PyTorch进行科学计算
本章开始介绍PyTorch。我们已经知道,PyTorch可以用来搭建人工神经网络。但是,本章不会直接介绍人工神经网络的搭建,而是学习一些预备知识。本章将介绍PyTorch的基本数据类型——张量,并利用张量进行科学计算。
3.1 初识张量
3.1.1 张量的数学定义
本小节将从数学角度介绍什么是张量(tensor)。在高中数学和高等数学中,我们已经学习过向量和矩阵的概念。标量可以看作零维张量,向量可以看作一维张量,矩阵可以看作二维张量。继续扩展数据的维度,可以得到更高维度的张量(见图3-1)。因此,张量又称为多维数组(multi dimension array)。
图3-1 张量的例子
给定一个张量数据,我们可以确定它的维度(dimension)、大小(size)和元素个数。对于维张量,它的大小可以用个元素的元组来表示。例如在图3-1中,张量是零维张量,它的大小为有0个条目的元组 (),元素个数为1。张量是一维张量,它的大小是有1个条目的元组 (3,),元素个数为3。张量是二维张量,它的大小是有2个条目的元组 (3, 3),元素个数为9。张量是三维张量,它的大小是有3个条目的元组 (3, 3, 3),元素个数为27。
注意:张量的概念在PyTorch下和其他语境下略有不同。本书遵循PyTorch的概念,定义张量、张量的维度、大小和元素个数。在数学和物理学中,张量并不是这么定义的。PyTorch中张量的维度在其他语境中可能被称为阶(rank)或维度大小(dimension size),PyTorch中张量的大小在其他语境中可能被称为维度(dimensions)或形状(shape)。
值得一提的是,只有维度、大小、元素个数、各元素都相同的两个张量,才是两个相同的张量。对于某个张量,若其大小中有个条目是1,那么这个1也不可以省略,也应该算进张量的维度里。例如,大小为 (3, 1) 的二维张量和大小为 (3,) 的张量虽然有着相同的元素个数,但是它们的维度不同、大小不同,所以不可能是相同的张量。
注意:一维张量的大小具有的形式,而不是或的形式。一维张量和向量同构(isomorphism),但严格意义上并不是向量,也没有所谓“行张量”或是“列张量”这样的说法。二维张量和矩阵同构。虽然向量可以看作特殊的矩阵,但是一维张量都不是二维张量。同理,零维张量也不是一维张量。
- 点赞
- 收藏
- 关注作者
评论(0)