"""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上。