栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

AI入门之神经网络(10)基于python/pytorch的线性回归学习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AI入门之神经网络(10)基于python/pytorch的线性回归学习

基于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,那么请你坚持下去!----小菜鸡

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822127.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号