今天我們利用pytorch對二維資料進行求導並輸出顯示,主要用到pytorch中的linear()、mseloss()等函式,具體的求導過程詳見下面**:
import torch
#create tensors of shape(10,3)and (10,2)
x=torch.randn(10,3)
y=torch.randn(10,2)
#build a fully connected layer
linear=nn.linear(3,2)
print('w:',linear.weight)
print('b:',linear.bias)
#build loss function and optimizer
criterion=nn.mseloss()
optimizer=torch.optim.sgd(linear.parameters(),lr=0.01)
#forward pass
pred=linear(x)
#compute loss
loss=criterion(pred,y)
print('loss:',loss.item())
#backward pass
loss.backward()
#print out the gradients
print('dl/dw:',linear.weight.grad)
print('dl/db',linear.bias.grad)
#1-step gradient descent
optimizer.step()
輸出結果顯示:
另外一種方案:在1-step之後輸出loss
import torch
#create tensors of shape(10,3)and (10,2)
x=torch.randn(10,3)
y=torch.randn(10,2)
#build a fully connected layer
linear=nn.linear(3,2)
print('w:',linear.weight)
print('b:',linear.bias)
#build loss function and optimizer
criterion=nn.mseloss()
optimizer=torch.optim.sgd(linear.parameters(),lr=0.01)
# #forward pass
# pred=linear(x)
## #compute loss
# loss=criterion(pred,y)
# print('loss:',loss.item())
## #backward pass
# loss.backward()
## #print out the gradients
# print('dl/dw:',linear.weight.grad)
# print('dl/db',linear.bias.grad)
#1-step gradient descent
optimizer.step()
pred=linear(x)
loss=criterion(pred,y)
print('loss after 1 step optimization:',loss.item())
輸出結果顯示:
對比:
對二維資料進行邊界拓展
對二維資料處理的時候,常常遇到須要越界的問題。比方對影象進行濾波操作。對原始資料的邊界進行拓展。然後使用拓展後的資料作處理,能夠解決越界的問題。依據拓展出的資料的值來自 能夠分為多種邊界拓展方式,我們要實現的是將邊界進行奇對稱拓展。舉例說明什麼是奇拓展。比方對原始二維資料向左拓展4列,那麼在邊界上向...
php對二維資料進行排序
php一維陣列的排序可以用sort asort arsort 等函式,但是php二維陣列的排序需要自定義。方法一 經驗證,成功 作用 對二維陣列進行指定key排序 引數 arr 二維陣列 shortkey 需要排序的列,short 排序方式 shorttype 排序型別 function multi...
pytorch方法測試 卷積(二維)
pytorch方法測試 卷積 二維 測試 import torch import torch.nn as nn m nn.conv2d 2,2,3,stride 2 input torch.randn 1,2,5,7 output m input print input print 卷積的權重 pr...