创建数组
#定值x=torch.Tensor([[1,2,3],[4,5,6]])#0数组x=torch.zeros(2,3)#1数组x=torch.ones(2,3)#随机数组,相当于np.random.randn(2,3)x=torch.randn(2,3)# 创建'空'数组x=torch.empty(2,3)# 复制指定的形状与类型,值全是1x1=torch.ones_like(x)
数组运算
#计算 使用方法后加“_”,自身值变化x.add_(1)#矩阵运算#矩阵相乘x.mm(y)torch.mm(x,y)#相当于numpy的matmul(matrix multiply ) :np.matmul(x,y) /#dot用于向量的点乘计算,计算结果为一个数字x.dot(y)#两种方式结果相同torch.doc(x,y)#相当于np中:np.doc(x,y)
数组内数据类型转换
x=torch.tensor([1.2],dtype=float)#将x内数据均转为longx.long()
Shape相关
x=torch.ones([2,3])#获取Shape 对于Tensor,两种方式相同x.shapex.size()#相当于numpy的reshapex.view(3,2)#后边-1代表系统自动推算x.view(3,-1)# 切片#与numpy相同,相当于pandas中的iloc[1,1:2]#取第2行,与2-3列(从0开始索引)x[1,1:2]#取第2行,所有列x[1,:]
item()取值
# 取出指定位置的数值x[1][2].item()
与numpy转换
注意:转换后的两个变量,共享内存空间,共同变化!
# torch->numpyx=torch.ones(2,3)arr=x.numpy()#numpy-> torcharr=np.ones([2,3])x=torch.from_numpy(arr)#注意:转换后的两个变量(x与arr),共享内存空间,共同变化!#举例: 讲x进行+1操作后,arr的值也发生同样变化.(注意是add_())x=x.add_(1)print(arr)#注意例外: x=x+1,相当于x重新指向新的地址,因此arr不会变化!x=x+1print(arr)
设备转换,指定设备计算
#查看gpu是否可用torch.cuda.isavailable()#引用gpudevice=torch.device("cuda")#将tensor放到gpu 以下两种方式相同x=x.cuda()x=x.to(device)#将tensor放到gpu上计算(指定设备)y=tensor.ones_like(x,device=device)#使用gpu计算,保证两个tensor都在gpu上直接执行即可x+y#注意,numpy相关的操作必须转回cpu才可以执行#转回cpuy=y.to("cpu")#将x暂时转到cpu计算t=x.cpu().data.numpy()
