基于pytorch的线性回归学习实例
“这是我很久前学习写的代码,代码不多但很有意义!算是记录我对AI学习多么感兴趣的一个见证吧!”
话不多说,上代码,有注释,跟着写,你也写得出来!
# 线性模型
# 使用pytorch的一般3步骤
# 1)设计模型的输入与输出和前向计算和各层的规模
# 2)选择损失函数和优化器
# 3)循环训练
# ——3.1前向计算
# ——3.2反向计算
# ——3.3更新权重
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt # 画图包
from sklearn import datasets # 机器学习库这里用来导入数据
# 数据
x_numpy, y_numpy = datasets.make_regression(n_samples=100, n_features=1, noise=20, random_state=1)
x = torch.from_numpy(x_numpy.astype(np.float32))
y = torch.from_numpy(y_numpy.astype(np.float32))
y = y.view(y.shape[0], 1)
n_samples, n_features = x.shape
# 模型
input_size = n_features
output_size = 1
model = nn.Linear(input_size, output_size)
# 损失和优化器
learning_rate = 0.5
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
# 训练循环
epochs_num = 1000 # 训练次数
for epoch in range(epochs_num): # 循环训练
#前向传播
y_predicted = model(x)
loss = criterion(y_predicted, y)
#反向传播
loss.backward()
#更新权重
optimizer.step()
optimizer.zero_grad() # 梯度清零
if (epoch+1) % 10 == 0:
print(f'epoch: {epoch+1}, loss = {loss.item():.3f}')
# 画图plot
predicted = model(x).detach().numpy()
plt.plot(x_numpy, y_numpy, 'ro')
plt.plot(x_numpy, predicted, 'b')
plt.show()
效果
总结
如果你很喜欢AI,那么请你坚持下去!----小菜鸡