import torch
from torch.autograd import variable
#聽說新版本variable與tensor兩個型別合併了。
#variable與tensor的區別在於:
#tensor物件支援在原物件支援區域上修改資料,通+=」或者torch.add()方法
#而variable不支援在原物件記憶體區域上修改資料
#variable物件可求梯度,並且對variable物件的操作,操作會被記錄
#可以通過grad_fn屬性檢視上一次的操作,可通過data屬性訪問原始張量
#tensor = torch.floattensor([[
1,2]
,[3,
4]])
variable = variable(tensor, requires_grad=
true);
t_out = torch.mean( tensor*tensor )
v_out = torch.mean( variable * variable )
print
(t_out)
print
(v_out)
#v_out = 1/4*sum(var*var).梯度如何就是那呢?
#d( v_out ) /d(var) = 1/4*2*variable = variable /2;
v_out.backward()#
print
(variable.grad)
#print
(variable.data)
#這是tensor型別
print
(variable.data.numpy())
#把variable裡面的tensor轉換成numpy
print
(variable)
#variable
這斷**,包括一些用torch的tesnor,variable進行計算的方法,
我個人比較感興趣的是
v_out.backward(
)
反向傳播,應該就類似於神經網路的反向傳播,擬合引數的概念類似。看看後面四個列印的資訊
tensor(
7.5000
)tensor(
7.5000
, grad_fn=
)tensor([[
0.5000
,1.0000],
[1.5000
,2.0000]]
)tensor([[
1.,2
.],[
3.,4
.]])
[[1.
2.][
3.4.
]]tensor([[
1.,2
.],[
3.,4
.]], requires_grad=
true
)
可以看到v_out.backward()了以後,改變了variable.grad的值,或者說修改了variable類的一些成員。
加入把varible的四個值看成是x,vout對應乙個y。那麼
y =f(x),其中
f(x)=1
/4*sum
( x^
2)
有點不大懂了。。。 C 學習第一日
乙個c 初學者的學習記錄 引數 argument 代入函式的值,通過引數實現函式間基本的資訊傳遞。賦值 assignment 使乙個變數獲得乙個值,獲得這個值會抹去這個變數原有的值 只考慮值,不考慮位址 程式塊 block 用花括號包圍的n條語句,其中n 0 花括號 curly brace 就目前學...
第一日 序記
擁有csdn的賬號已經很久,卻遲遲沒有開通自己部落格,原因無非就是嫌麻煩,覺得自己的腦子夠好,能夠將自己遇見的難點和寫的漂亮的 記住。可事實真的是這樣嗎?先不說自己能不能記住,就算記住能夠下次再需要的時候用出來這本身就極為困難。所以躊躇許久,還是決定開通自己的部落格,寫點東西出來。哪怕不是那麼高深,...
北京出差第一日
杭州飛北京,10 50 的班機 趕到武林門的航空售票處坐大巴,沒想被乎悠了一把 現在大巴改走錢江四橋,這個時間已經來不及了 只好坐計程車 進了機場,換了登機牌,航班延誤,還好,延誤15分鐘,心裡稍稍平衡一點 如果和昨天那樣延誤兩個小時,我怎麼也要鬱悶一下 還有幾分鐘登機,資料庫的報警資訊不斷到手機上...