一.基本数据类型
"tensor"这个单词一般可译作“张量”,张量可以看作是一个多维数组。标量可以看作是0维张量,向量可以看作1维张量,矩阵可以看作是二维张量。
1.类型推断
2.标量
dim:维度
size/shape:形状
tensor:具体数
a.shape是一个成员;a.size()是一个成员函数。
3.向量
二.创建Tensor
1.将numpy数据转换成Tensor
torch.from_numpy(a)
2.从python list中导入数据
torch.tensor([2.,3.2])
torch.tensor():接收现有的数据(标量或者是一个list)
torch.Tensor 或者torch.FloatTensor():接收数据的维度,(也可以使用现有的数据,但是容易和数据维度混淆,不推荐使用)
3.uninitialized
不使用初始化创建tensor,但是会出现torch.nan,torch.inf类数值,造成问题。
1.Torch.empty(),里面的数值是随机的
2.Torch.IntTensor(d1,d2,d3),数值也是随机的
4.设置默认类型:
torch.set_default_tensor_type(torch.DoubleTensor)
torch.tensor([1.2,3]).type()查看tensor类型
5.随机初始化,rand/rand_like,randint
1、a = torch.rand(3,3)
rand会随机产生0~1之间的数值,不包括1。
2、torch.rand_like(a):产生一个和a张量相同维度的维度
3、torch.randint(min,max,[d1,d2])
6、正态分布:randn
1、均值为0,方差为1:N(0,1)
2、自定义方差:torch.normal(mean=mean,std=std)
(mean——均值,std——方差)
7、全部赋值为相同的元素:
torch.full([d1,d2,…],num)
8、torch.arange(start,end,step)
9、等分
1、torch.linspace(min,max,num):从min,到max等分num个数字,包含max
2、torch.logspace(min,max,num)logspace的base参数可以设置为2,10,e等底数
10、单位矩阵 torch.eye(num)
11、randperm
生成随机索引,常用于样本和标签协同shuffle
三、索引与切片
1、index_select( )第一个参数表示维度
2、.ge()方法作用是选取大于大于0.5的元素,将其位置置1(True),其余置0(False)
mask = c.ge(0.5)
3、使用mask索引,输出满足条件的位置的值
4、take()函数:先将tensor转换为一个list,之后根据索引选取list对应位置的值(take索引是在原来Tensor的shape基础上打平,然后在打平后的Tensor上进行索引。)