手动构建线性回归(PyTorch)

python 复制代码
import torch
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
import random
#1.构建数据
#构建数据集
def create_dataset():
    x,y,coef=make_regression(n_samples=100,
                             n_features=1,
                             random_state=0,
                             noise=10,
                             coef=True,
                             bias=14.5)
    #将构建数据转换为张量类型
    x=torch.tensor(x)
    y=torch.tensor(y)
    return x,y

#构建数据加载器
def data_loader(x,y, batch_size):
    #计算下样本的数量
    data_len = len(y)
    #构建数据索引
    data_index=list(range(data_len))

    random.shuffle(data_index)
    #计算总的batch数量
    batch_number=data_len//batch_size
    for idx in range(batch_number):
        start=idx+batch_size
        end=start+batch_size
        batch_train_x=x[start:end]
        batch_train_y=y[start:end]
        yield batch_train_x,batch_train_y

def test01():
    x,y=create_dataset()
    plt.scatter(x,y)
    plt.show()

    for x,y in data_loader(x,y,batch_size=10):
        print(y)
#2.假设函数、损失函数、优化方法
#损失函数:平均损失
#优化方法:梯度下降
#假设函数
w=torch.tensor(0.1,requires_grad=True,dtype=torch.float64)
b=torch.tensor(0.1,requires_grad=True,dtype=torch.float64)



def linear_regression(x):
    return w*x+b

#损失函数
def square_loss(y_pred,y_true):
    return torch.square(y_pred - y_true)

#优化方法
def sqd(lr=1e-2):
    #除以16是使用的是批次样本的平均梯度
    w.data=w.data-lr*w.grad.data/16
    b.data=b.data-lr*b.grad.data/16
    

if __name__ == '__main__':
    test01()
相关推荐
学术搬运工1 分钟前
【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)
人工智能·深度学习·算法·机器学习·机器人·自动化·自动驾驶
张焚雪31 分钟前
关于强化学习的一份介绍
人工智能·学习·算法·机器学习
Yan-英杰31 分钟前
利用Blackbox AI让编程更轻松
图像处理·人工智能·python·深度学习·语言模型
一去不复返的通信er1 小时前
LSTM(长短期记忆网络)详解
人工智能·rnn·深度学习·神经网络·lstm
cdut_suye1 小时前
踏入 C++ 的深邃世界:实现 unordered_set 与 unordered_map 的优雅之旅
java·大数据·c++·人工智能·python·深度学习·机器学习
xianghan收藏册1 小时前
多轮对话中让AI保持长期记忆的8种优化方式篇
人工智能·自然语言处理·chatgpt·transformer
YONG823_API1 小时前
高并发的API请求有哪些注意事项?
大数据·前端·数据库·人工智能·网络爬虫
Chef_Chen1 小时前
从0开始机器学习--Day27--主成分分析方法
人工智能·机器学习
爱数学的程序猿1 小时前
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
pytorch·深度学习·机器学习·tensorflow·keras
编程点滴1 小时前
探索高效的 Prompt 框架:RBTR 提示框架的奥秘与优势
人工智能·prompt