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)!