当前位置: 代码迷 >> 综合 >> pytorch 小小实战
  详细解决方案

pytorch 小小实战

热度:86   发布时间:2023-09-27 14:03:17.0
  1. 读取数据

#%%import torch#%%import pandas as pd
import numpy as np
import matplotlib.pyplot as plt#%%data = pd.read_csv('./daatset/Income1.csv')#%%data
  1. 展示数据
plt.scatter(data.Education, data.Income)
plt.xlabel('Education')
plt.ylabel('Income')
  1. 数据格式转换

#%%
X = torch.from_numpy(data.Education.values.reshape(-1, 1)).type(torch.FloatTensor)#%%Y = torch.from_numpy(data.Income.values.reshape(-1, 1)).type(torch.FloatTensor)
  1. 创建一个线性回归模型
#%% 参数是 输入维度 1 输出维度 1from torch import nn
model = nn.Linear(1, 1)
  1. 误差函数 (损失函数)
loss_fn = nn.MSELoss()
  1. 优化函数(梯度下降)
opt = torch.optim.SGD(model.parameters(), lr=0.0001)
  1. 进行反向传播


for epoch in range(5000):for x, y in zip(X, Y):y_pred = model(x)loss = loss_fn(y, y_pred) # 通过损失函数计算损失opt.zero_grad()           # 将所有梯度清零,梯度会累积loss.backward()           # 根据loss值计算梯度opt.step()				  # 进行梯度更新

损失函数是固定的,梯度变化不是跟 损失函数关于输入特征的导数 相关的
梯度 与 loss值的变换幅度相关
以上是高度封装的函数

  1. 模型及结果展示
#%%model.weight#%%model.bias#%%plt.scatter(data.Education, data.Income)
plt.plot(X.numpy(), model(X).data.numpy(), c='r')
plt.show()

pytorch 小小实战