大帅学习笔记——pytorch入门(2)初识张量tensor

大帅出品,必属精品

记录学习pytorch的全过程,入门教程使用deeplizard的pytorch教程网站里包括视频和讲解博文,因为视频在YouTube上,这里贴出B站上的中文字幕课程视频。新人上路,希望大家多多指正。

1. 什么是张量

张量是神经网络中最常用到的数据类型,神经网络中的输入、输出和转换都是依靠张量进行的。那么用计算机和数学中常用的一些数据类型归纳出张量

  • 首先介绍三个计算机学科名称:数字、数组、二维数组
  • 其次是这三个数学名称:标量、向量、矩阵
  • 以上大帅学习笔记——pytorch入门(2)初识张量tensor_第1张图片
    在不同学科中有不同的命名,但是他们的本质是相对应的。那么在计算过程中观察他们的索引数以及与张量的关系:
    大帅学习笔记——pytorch入门(2)初识张量tensor_第2张图片所谓索引数即根据多少信息可以得出这个数字,例如我们需要在不同数据类型中找到数字 ‘5’:
    • 数字:a = 5

    • 数组:
      a = [1, 2, 3, 4, 5]
      a[4] = 5

    • 二维数组:

      int a = [ [1, 2, 3], [4, 5, 6] ]
      a[1, 1] = 5

索引数即下角标的数量
根据以上的归纳,我们可以得出结论:

n维向量 ——>(n维)张量
nd-array ——> nd-tensor

2. 张量的属性

1. 阶(rank)

就是张量的维数, 一个n阶张量代表,锁定张量中某一个具体的元素,需要n个索引数

2. 轴(axis)

某一阶内的全部元素构成轴,假设有个张量是一个2阶的张量,这意味着这个张量有2个维度,或者等价于,这个张量有 2 个轴。元素被称为存在或沿着轴运行。这个机制受每个轴的长度限制。
轴的长度
每个轴的长度代表每个轴上有多少个索引可用

例子如下:

d = [ 
	[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9]
	]

第一根轴上的每个元素就对应每个数组(即当前维度视角下的元素)

d[0]
[1, 2, 3]

d[1]
[4, 5, 6]

d[2]
[7, 8, 9]

沿着第二个轴的每个元素是一个数字:

d[0][0]
1

d[1][0]
4

d[2][0]
7

d[0][1]
2

d[1][1]
5

d[2][1]
8

d[0][2]
3

d[1][2]
6

d[2][2]
9

注意,对于张量,最后一个轴的元素总是数字。每隔一个轴将包含n维数组。这就是我们在这个例子中看到的,但是这个思想是通用的。

3. 形状(shape)

张量的形状由每个轴的长度决定,反之,张量的形状可以告诉我们每个轴的长度

例如我们创建一个张量并查看它的形状
大帅学习笔记——pytorch入门(2)初识张量tensor_第3张图片
我们还可以创建第二个张量
大帅学习笔记——pytorch入门(2)初识张量tensor_第4张图片
了解了张量的形状后,我们还需要知道为什么会有这个属性,在神经网络计算过程中并不是所有的输入层都可以接受任意维度的张量为输入,这时就需要用到张量的重塑操作——reshape操作

4. 重塑(reshape)

重塑,就如它字面的意思,是把一个张量重新塑型,这是为了应对不同的数据集中的数据类型以及不同网络的输入层而做的准备,例如我们要用同一个网络对文本和图像分别进行训练,他们输入的维度不同,重塑则是为了解决这样的问题。沿用上文的例子

重塑的操作可以是这样的
大帅学习笔记——pytorch入门(2)初识张量tensor_第5张图片
也可以是这样的
大帅学习笔记——pytorch入门(2)初识张量tensor_第6张图片
还可以是这样的

大帅学习笔记——pytorch入门(2)初识张量tensor_第7张图片
这里可以看出,重塑是把原来的矩阵变换一种形状。但值得注意的是这种变化是有限定的,比如说轴的长度的必须是整数,且乘积不变,为了方便理解我们举出如下例子

大帅学习笔记——pytorch入门(2)初识张量tensor_第8张图片
我们改变3x3矩阵为4x3矩阵,接着我们对它进行重塑我们同样举三个例子

大帅学习笔记——pytorch入门(2)初识张量tensor_第9张图片

大帅学习笔记——pytorch入门(2)初识张量tensor_第10张图片
大帅学习笔记——pytorch入门(2)初识张量tensor_第11张图片
从以上例子不难看出,重塑必然是要保持乘积不变的,这样才能保证原张量中的每一个元素不多也不少。重塑操作不仅仅可以在同阶下进行变化,更是可以实现阶的增加与减少,这将会是重塑操作最重要的部分。

引用
[1]PyTorch 常用方法总结4:张量维度操作(拼接、维度扩展、压缩、转置、重复……)

你可能感兴趣的:(大帅学习笔记,神经网络,深度学习,pytorch)