自学内容网 自学内容网

torch.optim.Adam优化器

import  torch
import torch.nn as nn
import torch.optim as optim

# 定义一个简单的线性模型
class LinearRegressionModel(nn.Module):
    def __init__(self,input_dim,output_dim):
        super(LinearRegressionModel,self).__init__()
        self.linear=nn.Linear(input_dim,output_dim)

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


# 模型参数
input_dim=1
output_dim=1

# 创建模型实例
model=LinearRegressionModel(input_dim,output_dim)

# 定义损失函数
criterion=nn.MSELoss()

# 使用Adam优化器
optimizer=optim.Adam(model.parameters(),lr=0.01)

# 输入和输出数据
x_data=torch.tensor([[1.0],[2.0],[3.0]],requires_grad=False)
y_data = torch.tensor([[2.0], [4.0], [6.0]], requires_grad=False)

# 训练模型
for epoch in range(10000):
    # 向前传播
    outputs=model(x_data)
    loss=criterion(outputs,y_data)

    # 反向传播和优化
    optimizer.zero_grad() #情况梯度
    loss.backward() #反向传播,计算当前梯度
    optimizer.step() #根据梯度更新权重

    if(epoch+1)%10==0:
        print(f'Epoch: {epoch+1}, Loss: {loss.item()}')

# 测试模型
test_x=torch.tensor([[4.0]],requires_grad=False)
prediction=model(test_x)
print(f'Prediction for input {test_x.numpy()}: {prediction.detach().numpy()}')

这个例子中,我们首先定义了一个简单的线性回归模型,然后使用 MSE(均方误差)作为损失函数。我们选择了 Adam 作为优化器,并设置了学习率为 0.01。在训练循环中,我们进行前向传播、计算损失、反向传播和权重更新。最后,我们使用一个简单的测试输入来验证模型的预测能力。


原文地址:https://blog.csdn.net/qq_59068750/article/details/140507277

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!