一、pytorch张量数据类型:
1.python数据类型与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说明,只能用数字编码来表示
2.查看数据类型的方法:
a=torch.randn(2,3)
a.type() type(a) isinstance(a,torch.FloatTensor)
部署到gpu上则用a.cuda()可以把部署到cpu上的数据转化到gpu上
标量:torch.tensor(1.)
查看变量的维度:
a.shape len(a.shape) a.size,如果是标量那么就会返回0或者空
张量:
torch.tesnor([n,....])如:torch.tensor([1.1])或者torch.tensor([1.1,2.2])
torch.FloatTensor(1)----随机初始化1个1维的float类型的张量
torch.FloatTensor(2)---随机初始化1个2维的float类型的张量
data=np.ones(2)生成一个numpy的2维数据
ttorch,from_numpy(data)
dim是指维度或者长度rank
size/shape:是指具体的形状
a.size(0)/a.shape[0]是返回0维的参数以此类推
a.dim看数据的维度
a.numel---具体的数据量,元素个数
3.创建tensor对象
a.从nmpy导入数据
例如:a=np.array([2,3.3])
torch.from_numpy(a)
b.从list导入数据
torch.tensor([2.,3.2])/torch.FloatTensor([2.,3.2])/torch.tensor([2.,3.2],[1.,2.0])
注意:torch.Tensor()是接受数据的维度,与torch.FloatTensor()接收维度的效果类似,接收数据是用list,接收维度使用(2,3)
4.生成未初始化的数据:
a.torch.empty()----向内存申请空间,例如:torch.empty([2,3])----生成一个2行3列的未初始化的数据,其中并不是没有数据,而是数据以随机的数字给出
b.torch.FloatTensor(d1,d2,d3...)----内存空间没有初始化,只是作为内存的载体而已,后续会跟输入数据的步骤
c.torch.IntTensor(d1,d2,d3)---生成int类型的载体
使用torch.Tensor()来生成数据,产生数据类型是torch默认数据类型,默认类型为float,可以更改默认类型数据,torch.set_default_tensor_type(torch.DoubleTensor),增强学习中double类型的会用得多一些
5.随机初始化:
rand------使用随机的0-1不包括1的初始化,例如:a=torch.rand(3,3),x=10*torch.rand(d1,d2),randint只能采样整数
rand_like,例如:rand_like(a),把a的shape读出来以后再给rand_like函数
randint(1,10,[3,3])---1到10的整数不包括10,生成1个3*3的矩阵,第一个参数是最小值,第二个参数是最大值,第三个参数为一个shape
正太分布初始化:
torch.randn(3,3)------N(0,1)正太的均值分布,均值为0,方差为1
torch.normal(mean=torch,full([10],0),std=torch.arange(1,0,-0.1))
torch.full([2,3],7)-----full的意思就是fullall全部都是的意思,第一个参数是shape,如果给[0]的话,那么就是生成一个标量,如果给[1]的话就是一个向量只有1个元素
生成等差数列的api:
torch.arange(0,10)----生成从0开始不包含10的数列
torch.arange(0,10,2)----生成一个等差为2的数列,第三个参数为阶梯
生成等分数列api:
torch.linspace(0,10,steps=4)----第三个参数为数量,这里的10是包括进来的
torch.logspace(0,-1,steps=10)------log可以设置base为2、10、e为底数,就是10的0次方到10的-1次方之间的数,然后等差
torch.ones(3,3)----生成全部为1的3*3的矩阵
torch.zeros(3,3)----生成全部为0的3*3的矩阵
torch.eye(3,4)----生成单位矩阵
torch.one_like(变量)----把变量的shape读出来给torch.one来用
torch.randmperm----随机打散,例如:torch.randmperm(10)生成随机打散的0-10不包括10的数列