[pytorch深度学习Day03] 张量数据类型

浙江大学教授【深度学习框架PyTorch】课程笔记

(https://www.bilibili.com/video/BV1wL4y1t7ah?p=15)

1.python与pytorch数据类型对比

[pytorch深度学习Day03] 张量数据类型_第1张图片

表示整型数字3,就用IntTensor,但是dimension为0

表示数组,例如矩阵,就是dimension为2的Int array,用IntTensor,同时dimension为2

对于python中的数据类型来说,pytorch都可以一一对应,只是换了个名字

但是string在pytorch中没有与之对应的类型

2.Pytorch如何处理string

[pytorch深度学习Day03] 张量数据类型_第2张图片

 one-hot编码中每一个位置代表一个意思,因此两个单词的相关性并没有体现

Embedding layer可以解决上述问题

pytorch没有类间string支持,只能通过编码实现。

3.Pytorch类间的数据类型

[pytorch深度学习Day03] 张量数据类型_第3张图片

 即使是同一个数据,但是放在不同的位置,它的类型可能是不一样的。

4.类型推断

[pytorch深度学习Day03] 张量数据类型_第4张图片

 In[5]:2维tensor,第0个维度的长度是2,第1个维度的长度是3,(2行3列)

               使用randn随机正态分布来初始化2行3列的tensor。其中N(0,1),0是均值,1是方差

In[6]:使用tensor.type()方法可以返回一个string,代表tensor的类型,可用print输出

In[7]:python自带的type(tensor)的方法

In[8]:参数的合法化检验可以使用isinstance,如判断a是不是FloatTensor

In[7]方法使用较少,最常用[6]和[8]

[pytorch深度学习Day03] 张量数据类型_第5张图片

同一个tensor部署在CPU和GPU上其数据类型是不一样的。如In[21]中data部署在CPU上,经过In[22]移动到GPU上(x.cuda()会返回一个GPU上的引用),数据类型发生变化。

4.1  标量(Dim 0)

[pytorch深度学习Day03] 张量数据类型_第6张图片

1.3是0维,但是[1.3]是1维,长度为1的tensor

计算输出值与目标值之间的误差,误差最终求和平均之后会得到一个标量,这个标量就是loss。

[pytorch深度学习Day03] 张量数据类型_第7张图片

4.2 Dim 1 / rank 1

 .tensor接受的是数据的内容

[pytorch深度学习Day03] 张量数据类型_第8张图片

 dimension为1的tensor一般是bias(偏差)和(Linear Input)线性层输入

如何得到dimension为1的shape或者说size:

[pytorch深度学习Day03] 张量数据类型_第9张图片

 如何区分dimension/rank和size/shape:

比如一个2维的tensor:[2,2]

dimension:2,指的就是行和列

size/shape:[2,2],指的是具体形状

tensor:指的是具体数据 比如\begin{bmatrix}1 & 2\\ 3 & 4 \end{bmatrix}

4.3 Dim 2

[pytorch深度学习Day03] 张量数据类型_第10张图片

 如果输入a.size(),则返回torch.Size([2, 3])

但是如果输入a.size(0),则表示取shape的第1个元素:2

                           a.size(1),则表示取shape的第2个元素:3

4.4 Dim 3

[pytorch深度学习Day03] 张量数据类型_第11张图片

 三维dimension使用最广的场景是RNN,文字处理:

[pytorch深度学习Day03] 张量数据类型_第12张图片

4.5 Dim 4

[pytorch深度学习Day03] 张量数据类型_第13张图片

CNN:[b, c, h, w]

4.6 Mixed

[pytorch深度学习Day03] 张量数据类型_第14张图片

numel是指tensor占用内存的数量

 

你可能感兴趣的:(pytorch深度学习笔记,python,pytorch)