PyTorch深度学习实践 第五讲 用PyTorch实现线性回归模型

视频链接:《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili

本次作业是测试不同的优化器的算法效果,我这里只测试了四种。

由于这里的数据集太少,所以图像显示的结果可能与实际生活中的数据集的测试效果有差,等到后面我再用大的数据集测试一下。

看代码吧

# 不同的优化器的结果对比
import numpy as np
import torch
import matplotlib.pyplot as plt

# 准备数据集
x_data = torch.Tensor([[1.0], [2.0], [3.0]])  # 二阶张量[3,1]
y_data = torch.Tensor([[2.0], [4.0], [6.0]])  # [3,1]


# 设计模型类
class LinearModel(torch.nn.Module):
    def __init__(self):
        super(LinearModel, self).__init__()
        self.linear = torch.nn.Linear(1, 1)

    def forward(self, x):
        y_pred = self.linear(x)
        return y_pred


# 生成四个模型对象
models = []
for i in range(5):
    model = LinearModel()
    models.append(model)

# 损失和优化器
criterion = torch.nn.MSELoss(size_average=False)
# 优化器字典,我这里只用了四种优化器
optimizer_list = {}
SGD = torch.optim.SGD(models[0].parameters(), lr=0.01)
Adagrad = torch.optim.Adagrad(models[1].parameters(), lr=0.01)
Adam = torch.optim.Adam(models[2].parameters(), lr=0.01)
ASGD = torch.optim.ASGD(models[3].parameters(), lr=0.01)
Adamax = torch.optim.Adamax(models[4].parameters(), lr=0.01)
optimizer_list['SGD'] = SGD
optimizer_list['Adagrad'] = Adagrad
optimizer_list['Adam'] = Adam
optimizer_list['ASGD'] = ASGD
optimizer_list['Adamax'] = Adamax

# 训练周期
loss_dict = {}
# 不同的优化器
for idx, (name, optimizer) in enumerate(optimizer_list.items()):
    list = []  # 暂时存入每个优化器的损失值
    print(name)
    for epoch in range(1000):
        # 正向
        y_pred = models[idx](x_data)  # 调用对应的模型
        loss = criterion(y_pred, y_data)
        # 将对应的优化器的损失存入列表中
        list.append(loss.item())
        print(epoch, loss.item())
        # 反向
        loss.backward()
        # 更新
        optimizer.step()
        optimizer.zero_grad()
    # 训练周期结束后
    loss_dict[name] = list
    print('*' * 50)

# 画图
for name, loss_list in loss_dict.items():
    plt.plot(np.arange(1000), loss_list, label=name)
plt.xlabel('epoch')
plt.ylabel('loss')
plt.legend(loc='best')
plt.show()

结果如下图:

 如有错误或疑问请指出,本人也是学生,刚入门,谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值