import torch图片
"""数学
pytorch 基本数据类型string
1)不支持内建string类型,使用one-hot ,Embedding表示;io
使用one-hot表示时,如表示单词较多,则one-hot会比较长,但其中只有一个元素值为1,故整个向量表现得很稀疏。而且one-hot不能表示语义相关性,故使用Embedding表示;class
2)内建类型:import
CPU GPU数据类型
float torch.FloatTensor torch.cuda.FloatTensorfloat
double torch.DoubleTensor torch.cuda.DoubleTensornumpy
byte torch.ByteTensor torch.cuda.ByteTensorim
int torch.IntTensor torch.cuda.IntTensor
long torch.LongTensor torch.cuda.LongTensor
3)类型推断:
"""
a = torch.randn(2,3)#随机初始化2row3col
print(a.type(),type(a),isinstance(a,torch.FloatTensor))#torch.FloatTensor <class 'torch.Tensor'> True
"""
4)cpu与gpu转换
"""
print(isinstance(a,torch.cuda.FloatTensor))#false
a = a.cuda()
print(isinstance(a,torch.cuda.FloatTensor))#true
"""
5)标量:主要用于计算loss时
Dimension 0 / Rank 0
a = torch.Tensor(1.0)#早期支持,最新版不支持
b = torch.Tensor(.3)
print(a,b)
标量的意思时没有方向的量,如买5个苹果,重量2.5KG,这里即为标量;
6)向量:注意这里注意数学和计算机不一样表示 方式,本质上两者是一个东西。主要用于偏置,注意其是有方向的
Dimension 1 / Rank 1
"""
a = torch.FloatTensor([1.1])
b = torch.Tensor([1.1])#两者相同
c = torch.Tensor(2)#随机初始化
print(a,b,c)#tensor([1.1000]) tensor([1.1000]) tensor([1.0962e+09, 4.5874e-41])
import numpy as np
data = np.ones(2)
d = torch.from_numpy(data)#从numpy引入
print(d)#tensor([1., 1.], dtype=torch.float64)
print(torch.__version__)#1.1.0
print(d.shape,d.size())#torch.Size([2]) torch.Size([2])注意dimension和rank是一个东西,rank是数学上叫法;如[2,3]则其rank为2;size和shape指的是具体形状;
"""
Dimension2,Dimension3(适合RNN),Dimension4(适合图片)
7)
"""
a = torch.randn(2,3)
print(a.size(0),a.shape[0])#第0个元素
a = torch .randn(2,3,4)
print(a.size(0))