1. PyTorc项目流程
- ①数据读取、转换、加载
- ②将批量数据传入网络
- ③计算损失
- ④梯度清零
- ⑤反向传播计算梯度
2. 项目代码及解析
import torch
import torch.nn as nn
N,D_in,H,D_out=64,1000,100,10
x=torch.randn(N,D_in)
y=torch.randn(N,D_out)
class TwoLayerNet(torch.nn.Module):
def __init__(self,D_in,H,D_out):
super(TwoLayerNet,self).__init__()
self.linear1=torch.nn.Linear(D_in,H)
self.linear2=torch.nn.Linear(H,D_out)
def forward(self,x):
y_pred=self.linear2(self.linear1(x).clamp(min=0))
return y_pred
model=TwoLayerNet(D_in,H,D_out)
loss_fn=nn.MSELoss(reduction="sum")
optimizer=torch.optim.Adam(model.parameters(),lr=learning_rate)
y_pred=model(x)
loss=loss_fn(y_pred,y)
optimizer.zero_grad()
loss.backward()
optimizer.step()