一、資料操作
tensor
(1)建立
torch.tensor([888,444]) #直接建立值為[888,444]的張量
torch.empty(2,4) #2x4的空張量
torch.rand(2,4) #隨機初始化2x4的張量
torch.zeros(2,4,dtype = torch.long) #初始值全部為0的long型的張量
torch.randn_like(x,dtype=torch.float) #根據現有的x的形狀建立新的tensor,並指定新的資料型別
(2)獲取形狀(x為乙個張量)
x.shape 或
x.size()
(3)加法(x,y為張量)
x+y 或
torch.add(x,y)
torch.add(x,y,out=result) #指定result為計算的結果
y.add_(x) #此為inplace方法,結果存在y中
# 一般inplace方法都有字尾_
(4)索引
x=torch.tensor([[1,2,3,4,5],
[2,2,2,2,2],
[3,3,3,3,3],
[4,4,4,4,4]])
y=x[1,:] #得到的y為([2,2,2,2,2])
#注意此處y和x共享記憶體,改變y會導致x中對應的值也發生改變
(5)改變形狀
x.view(2,10) #x改為2x10的張量
x.view(1,-1) #x改為1x20的張量,其中-1相當於未知數,會自動計算出其值,此處為20/1=20
(6)產生不共享記憶體副本
y=x.clone() #clone後梯度回傳到y時會同時傳到源張量x
(7)和numpy的轉換
x.numpy() #轉為numpy
torch.from_numpy(x) # 轉為tensor
z=torch.tensor(y) # 此方法較為常見,但須注意此時的y和z不共享記憶體
(8)其他
x.item() #x從tensor型轉化為乙個number
#還有常見的內外積等操作,有需要再自行查閱文件即可
二、自動求梯度
自動求梯度
x = torch.ones(2, 2, requires_grad=true) 或
x.requires_grad_(true)
# 假設output是最後輸出的標量
output.backward()
x.grad.data.zero_() #每次反向傳播grad會累積,記得清零。
2.grad_fn
y=x*x*4
print(y.grad_fn)
輸出:
第二章 資料 變數和計算
1 列舉型別的定義 enum week thisweek 2 指定列舉常量的型別 enum week char thisweek 3 格式化輸出 include std setw 函式的使用 4 轉義序列,如 a 5 逗號運算子,返回最後乙個表示式的值 num3 num1 10,num2 20 則n...
第二章 進化計算
1 進化演算法求解優化問題的一般步驟 1 隨機給定一組初始解 2 評價當前這組解的效能 3 若當前解滿足要求或進化達到一定代數,計算結束 4 根據 2 的評價結果,從當前解中選擇一定數量的解作為基因操作物件。5 對所選擇的解進行基因操作 如交叉 變異等 得到一組新解,轉到 2 2 搜尋方法有三類 列...
計算機原理第二章
第2章計算機的邏輯部件 2.1數字邏輯電路基礎知識 2.2邏輯函式的化簡 2.3加法器設計 2.4解碼器設計 2.5計數器設計 2.6 eda技術 1.加法器 解碼器等常用晶元的邏輯功能 介紹了加法器 解碼器等中規模器件設計組合邏輯電路 解決實際問題的思路與方法。理解基本邏輯運算 邏輯運算規則 邏輯...