PyTorch笔记01----基本数据类型
PyTorch基本数据类型
python | PyTorch |
---|---|
Int | IntTensor of size() |
Float | FloatTensor of size() |
Int array | IntTensor of size[d1, d2, ...] |
Float array | FloatTensor of size[d1, d2, ...] |
String | -- |
Pytorch不是一个完备的语言库,不支持String.
How to denote string
One-hot Encoding [0, 1, 0, 0, ...] 每一维代表一个单词 > 数据量过大时,整个向量会变得特别稀疏. > 不同的单词有相近的意思,如like、love,这种方法无法体现这种相关性.
Embedding
- Word2vec
- glove
Data type
CPU tensor: - torch.FloatTensor - torch.IntTensor - ...
GPU tensor: 在torch与tensor之间加上cuda - torch.cuda.FloatTensor - torch.cuda.IntTensor - ...
Type check
a = torch.randn(2, 3) #使用随机正态分布 |
isinstance(data, torch.cuda.DoubleTensor) #False |
Dimension 0 / Rank 0 标量
torch.tensor(1.) #直接生成标量Tensor(1.) |
经常用于计算Loss --- 维度为0的标量.
如何确定Dim为0? Loss.shape #torch.Size([])
len(Loss.shape) #0
Loss.dim() #0
Loss.size() #torch.Size([])
Dimension 1 / Rank 1 向量
PyTorch里一维多维向量统称tensor张量
torch.tensor([1.1]) #tensor([1.1000]) 注意有中括号
torch.tensor([1.1, 2.2]) #tensor([1.1000, 2.2000])
torch.FloatTensor(1) #tensor([3.2239e-25]) 指定长度,random初始化
torch.FloatTensor(2) #tensor([3.2239e-25, 4.5915e-41])
#还可以通过numpy引入
data = np.ones(2) #生成一个[1, 1]的向量
data #array([1., 1.])
torch.from_numpy(data) #tensor([1., 1.], dtype=torch.float64)
Dim 1的张量一般用于Bias(偏置)、Linear Input(神经网络线性层的输入)(如[28, 28]的图片展开成[748]长度的向量输入).
a = torch.ones(2) |
Dimension 2、Dimension 3、......
a = torch.randn(2,3) |
Dim 2的张量一般用于Linear Input batch(如4张[28, 28]的图片,我们将它们叠在一起,形成[4, 784],4表示4张照片,784表示一张照片的数据)
a = torch.rand(1,2,3) #使用随机均匀分布 |
Dim 3在RNN Input Batch中使用非常广泛: 一句话有10个单词,每个单词用一个100维的One-hot编码,一次送入20句话,就是[10, 20, 100]
Dim 4适合彩色图片: [2, 3, 28, 28] 2张图片,3个通道(RGB,如果是黑白图片则是1),28*28像素的图片
a = torch.rand(2, 3, 28, 28)
a.dim() #4
a.numel() #4704 4704 = 2 * 3 * 28 * 28