"""python
1.什么是pytorch:学习
1)替代numpy而且能够灵活使用GPUspa
2)提供灵活和速度的深度学习平台对象
"""字符串
import torch # 导入torch包深度学习
#建立it
x = torch.empty(5,3)# 空的tensorimport
x = torch.rand(5,3)# 随机的tensorfloat
x = torch.zeros(5,3,dtype=torch.long)#全0而且指定类型numpy
x = torch.tensor([5,3])#直接从数据构造,注意tensor小写;
x = x.new_ones(5,3,dtype=torch.double)#利用原有张量的属性建立新的张量,除非指定了类型;
x = torch.rand_like(x,dtype=torch.float)#尺寸同样(利用了x的尺寸),覆盖类型
#print(x,x.size())
#基本操做:任何使张量就地变化的操做都用固定_。例如:x.copy_(y),x.t_(),将改变x。
y = torch.rand(5,3)
z = x + y # 直接加法
torch.add(x,y,out=z)#间接加法,输出给z,参数指定
z.add(x)# 直接将x加到z身上再返回z;
print(z,z[:,1])#相似python的切片操做
x = torch.randn(4,4)
y = x.view(16)#4*4变16
z = x.view(-1,8)#4*4变为2行8列,-1表明自动计算行列
x = torch.randn(1)
print(x,x.item())#tensor([0.6868]) 0.6867704391479492 单个元素使用item获取具体值
#numpy转换
a = torch.ones(5)
b = a.numpy()
print(b)
a.add(1)#这里只是临时的,不改变a,b自己
print(a,b)
a.add_(1)#这里_表示a须要被改变,而且a改变后b跟着改变
print(a,b)
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
print(a,b)
#gpu切换
if torch.cuda.is_available():
dev = torch.device("cuda")#获得一个cuda对象
y = torch.ones_like(x,device=dev)#在gpu上建立一个tensor
x = x.to(dev)#x跑到gpu上,注意这个to和下面的to是一个意思,使用tensor指定也能够使用字符串指定
z = x +y
print(z,z.to("cpu",torch.double))#tensor([1.9681], device='cuda:0') tensor([1.9681], dtype=torch.float64) 这里z跑到cpu上。