您的位置:首页 > 理论基础 > 计算机网络

使用pytorch构建简单的多层神经网络

2020-04-21 20:04 477 查看

无论是多少层 只不过是模型中的设置
1创建符合你结构的数据集
定义量,定义数据
2创建model class 其中包括2个方法 init 定义结构 以及forward定义如何将结构勾稽起来
并实例化model
3开始正式循环
向model传入数据
计算并打印loss(定义loss类型 传入参数)
计算梯度并更新参数(定义optimizer 来清零并更新 使用params来获取每个的tensor之外的grad)
经典3句

结束
下面展示一些

内联代码片


// An highlighted block
import torch
import torch.nn as nn

# 2创建model
class twolayernet(nn.Module):
def __init__(self,d_in,h_,d_out):
super(twolayernet,self).__init__()
self.l1=nn.Linear(d_in,h_)
self.l2=nn.Linear(h_,d_out)

def forward(self,x):
y_pred=self.l2(self.l1(x).clamp(min=0))
return y_pred

# model=nn.Sequential(
#     nn.Linear(din,h),
#     nn.ReLU(),
#     nn,Linear(h,dout)
# )
N,din,h,dout=64,1000,100,10
# 1创建数据集 输入100 1000
x=torch.randn(N,din)
# w1=torch.randn(din,h,requires_grad='true')
# w2=torch.randn(h,dout,requires_grad='true')
y=torch.randn(N,dout)
model=twolayernet(din,h,dout)
learning_rate=1e-4
loss_fn=nn.MSELoss(reduction='sum')
optim_fn=torch.optim.Adam(model.parameters(),learning_rate)
# 3开始循环
for i in range(500):
# 3.1数据与model传入 匹配
y_pred=model(x)
# 3.2计算loss(定义loss类型 传入参数)
loss=loss_fn(y_pred,y)
print(i,loss.item())
# 3.3计算梯度并更新参数(定义optimizer 来清零并更新  使用params来获取每个的tensor之外的grad)
optim_fn.zero_grad()
loss.backward()
optim_fn.step()

总结:

  • 点赞
  • 收藏
  • 分享
  • 文章举报
dedededer 发布了15 篇原创文章 · 获赞 0 · 访问量 163 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: