Pytorch训练神经网络Demo

import torch.nn as nn
import torch


class TwoLayerNet(nn.Module):
    def __init__(self, dim_in, dim_hide, dim_out):
        super(TwoLayerNet, self).__init__()
        self.linear1 = nn.Linear(dim_in, dim_hide, bias=False)
        self.linear2 = nn.Linear(dim_hide, dim_out, bias=False)

    def forward(self, x):
        y_predict = self.linear2(self.linear1(x).clamp(min=0))
        return y_predict


if __name__ == "__main__":
    N = 64       # batch size
    D_in = 1000  # 输入64 x 1000维
    H = 100      # 100个隐藏单元
    D_out = 10   # 输出100维

    # 创建训练数据,这里是对训练数据进行随机初始化
    x_data = torch.randn(N, D_in)
    y = torch.randn(N, D_out)

    model = TwoLayerNet(D_in, H, D_out)    # 模型
    loss_fn = nn.MSELoss(reduction='sum')  # 损失函数
    optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)  # 优化器

    for t in range(500):
        y_pred = model(x_data)     # 前向传播
        loss = loss_fn(y_pred, y)  # 计算损失
        print(t, loss.item())      # 打印
        optimizer.zero_grad()      # 把模型内参数的梯度清零
        loss.backward()            # 反向传播
        optimizer.step()           # 更新权重

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值