张量数据类型
基本数据类型
只需要知道torch.FloatTensor
,torch.ByteTensor
,torch.IntTensor
,torch.LongTensor
,GPU Tensor
比CPU Tensor
中间多一个cuda
。
可以用变量名.type
检查类型。
isinstance()用来对tensor进行类型检验,将两个进行对比类型一致返回TRUE
注意:type(x)
是python内置用法,只会返回torch.Tensor
不会返回具体类型要用x.type
。
x.cuda()会返回一个gpu上的引用。
不同维度tensor创建
Dim 0
用于计算Loss,输出一个标量。
1 | torch.tensor(1.) |
tensor(1.)
注意:1.是0维,是标量,[1.]是1维,长度为1的张量。
a.shape和a.size()作用等同,输出的torch.size([])即表示dimension为0,说明该tensor为标量
Dim 1
用于神经网络的偏置bias,或者作为神经网络线性层的输入,如MNIST数据集中图片格式转换后为tensor([784])。
1 | torch.tensor([1.]) |
shape
,size
,dimension
的区别:shape
:从前往后对应由外向内的维度。size
:同shape。dim
:代表张量的维度。
Dim 2
用于神经网络带有batchsize的线性输入,如MNIST数据集中[4,784]表示有四张图片,每张图片784个像素点,第一个维度表示第几张照片,第二个维度表示照片中第几个像素点对应的数值。
Dim 3
3维的tensor尤其适合于RNN的input_batch,用于自然语言处理,加入一句话由10个单词组成,每个单词有100种可能,采用one-hot编码,则代表一句话的tensor shape为[10,100],若一次输入20句话,则tensor shape为[10,20,100]
Dim 4
主要用于CNN中输入,如[2,3,28,28]格式tensor四个维度分别表示
batchsize,channel,height,weight,例子中表示两张通道为3,高度宽度都为28个像素点的图片。灰度图通道数为1,彩色图通道数为3分别表示RGB。