在python中的数据类型在pytorch中基本都能一一对应,除了string
pytorch并没有string类型,但是可以使用编码类型来表示。比如10表示小狗,01表示猫。在nlp中有专门的模块来解决这个问题。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ZGJn4r6-1605532660726)(https://i.loli.net/2020/11/08/j5yW3cgzYL2flqH.png)]
pytorch中的数据类型
a.type() 是torch中的方法,可以返回详细的类型
type(a) 是python自带的方法,没有提供额外信息
isinstance(a,torch.FloatTensor) 一般用这种方法来比对类型
数据放置于cpu和GPU上所表示的数据类型是不同的
torch.tensor(1.3) :对于标量数据类型可以使用该方法来创建一个0维数组。
a.shape : 可以查看tensor张量的形状
a.size() : 与a.shape 对应,不同之处在于一个直接是属性,另一个是函数。
一维数据的生成
torch.tensor([1]) : 这个方法圆括号里面有中括号,会根据里面的值生成一维张量。
torch.FloatTensor() : 当里面只给出了一个数字,则会根据数字生成未初始化的相应一维张量。如果里面有中括号,则会根据中括号的内容生成一维张量。
将numpy中的一维数组转换为一维tensor张量。
下面使用随机正态分布创建了一个dim为2的张量。
size函数如果不给值,则返回整个的形状。如果给了参数,则返回的是该维度上的形状大小。
dim3
下面使用随机均匀分布创建一个dim为3的张量。如20句话,每句话10个单词,每个单词用100个分量的向量表示,得到的Tensor就是shape=[20, 10, 100]
可以使用list方法直接将数据转换为列表。方便和python的交互。
三维数据适合文字处理。
a = torch.rand(2,3,28,28)
dim为4的张量经常用来表示图片。从左往右,第一个数字表示有几张图片,第二个数字表示rgb的第几个通道,比如1表示灰色图片,3表示彩色图片。第三、第四分别表示图片的长和宽。
例如100张MNIST数据集的灰度图(通道数为1,如果是RGB图像通道数就是3),每张图高28像素,宽28像素,那么这个Tensor的shape=[100, 1, 28, 28],也就是一个batch的数据维度:[batch_size, channel, height, width]。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XZdrhVwe-1605532660754)(https://i.loli.net/2020/11/08/Q8iL69lxgAzmfRT.png)]
torch.numel() : 得到tensor数据的具体大小。
torch.dim() : 和length(a.shape) 方法一样,返回的数据表示tensor张量的维度大小。