import torch
import matplotlib.pyplot as plt
import numpy as np
xy = np.
loadtxt
('000.txt'
, delimiter=
' ', dtype=np.float32)
x_data = torch.
from_numpy
(xy[:,
:-1]
) # 取前九列
y_data = torch.
from_numpy
(xy[:,
[-1]
]) # 取最後一列
class
model
(torch.nn.module)
: def __init__
(self)
:super
(model, self)
.__init__()
self.linear1 = torch.nn.
linear(9
,6)# linear(x1,x2)的兩個引數分別表示輸入輸出的維度(矩陣的列數)
#這裡的9與資料集的列數一至
self.linear2 = torch.nn.
linear(6
,4) self.linear3 = torch.nn.
linear(4
,1) self.sigmoid = torch.nn.
sigmoid()
#啟用函式用於實現非線性化
def forward
(self, x1)
: x1 = self.
sigmoid
(self.
linear1
(x1)
) x1 = self.
sigmoid
(self.
linear2
(x1)
) x1 = self.
sigmoid
(self.
linear3
(x1)
)return x1
model =
model()
# construct loss and optimizer
criterion = torch.nn.
bceloss
(reduction=
'sum'
)optimizer = torch.optim.
sgd(model.
parameters()
, lr=
0.02
)# model.parameters()自動完成引數的初始化操作
loss_sum =
# training cycle forward, backward, update
for epoch in range
(100):
y_pred =
model
(x_data) # forward 算**值
loss =
criterion
(y_pred, y_data) # forward: 算損失值
print
(epoch, loss.
item()
) loss_sum.
(loss)
optimizer.
zero_grad
() # 清除上一輪的梯度,防止累積
loss.
backward
() # backward: autograd,自動計算梯度,反向傳播
optimizer.
step
() # update 引數,即更新w和b的值
x =range
(100
)y = loss_sum
plt.
plot
(x, y)
plt.
xlabel
('epoch'
)plt.
ylabel
('loss'
)plt.
grid
() # 生成網格
pytorch多維篩選
多級篩選 比如結構是2 2 3,只想選第三維的最大的 tx index,best n,g y center,g x center index 01 best n 0,1 最後只取兩個值,第一行,第1列,第二行,第2列的。篩選第3維最大的值,下面的 不對,解決方法 查詢max原始碼 也可以把3維用vi...
處理多維陣列
在實際工作,我們經常會遇到對多維陣列的處理,一般就會採用多重迴圈的方式,直到陣列的最裡面那一層或者使用遞迴來處理,在php中可以使用array walk recursive來靈活處理 desc 處理多維陣列 param array data 待處理資料 param array field 處理字段陣...
pytorch 拓展cuda語言 多維索引問題
四維矩陣索引公式 四維矩陣 n,c,h,w 當前四維索引為 n,c,h,w,out idx n c h w c h w h w w pytorch中的 permute a torch.randn 5,3,4 a的size為 5,3,4 b a.permute 0,2,1 此時b的size會變成 5,...