当前位置:网站首页>动手学深度学习_线性回归
动手学深度学习_线性回归
2022-08-04 05:29:00 【CV小Rookie】
目录
pytorch实现
线性回归
线性回归(Linear Regression)可以追溯到19世纪初, 它在回归的各种标准工具中最简单而且最流行。 线性回归基于几个简单的假设: 首先,假设自变量x和因变量y之间的关系是线性的, 即y可以表示为x中元素的加权和,这里通常允许包含观测值的一些噪声; 其次,我们假设任何噪声都比较正常,如噪声遵循正态分布。
线性模型可以表示为:
向量版本:
线性模型可以看做单层全连接神经网络
输入为x1,…,xd, 因此输入层中的输入数(或称为特征维度,feature dimensionality)为d。 网络的输出为o1,因此输出层中的输出数是1。
平方损失函数
现在模型已经有了,下一步要进行预测就必须有损失函数,我们使用平方损失:
这里有个系数 1/2 是因为进行求导时,平方 2 可以和 1/2 抵消,方便计算。
为了去衡量在整个模型的质量,所有的 要进行求和,要求平均,如果不求平均,那么梯度就会比较大,反向传播更新时,梯度过大是不希望看到的(如果不求平均,那么学习率就要求平均)
训练参数时,我们希望找到一组参数 使得在所有样本上有最低的损失。
pytorch实现
# 作者 :CV小Rookie
# 创建时间: 2022/7/29 20:41
# 文件名: linear_regression_easy.py
import numpy as np
from torch.utils import data
import torch
from torch import nn
from d2l import torch as d2l
# 利用 d2l 中的 synthetic_data 生成数据
true_w = torch.tensor([2, -3.4])
true_b = 4.2
features, labels = d2l.synthetic_data(true_w, true_b, 1000)
# 读取数据集
def load_array(data_arrays, batch_siz, is_train=True):
dataset = data.TensorDataset(*data_arrays)
return data.DataLoader(dataset, batch_siz, shuffle=is_train)
batch_size = 10
data_iter = load_array((features, labels), batch_size)
# 定义模型
net = nn.Sequential(nn.Linear(2, 1))
# 初始化模型参数
net[0].weight.data.normal_(0, 0.01)
net[0].bias.data.fill_(0)
#定义损失函数
loss = nn.MSELoss()
# 定义优化算法
trainer = torch.optim.SGD(net.parameters(), lr=0.03)
# 训练
num_epochs = 3
for epoch in range(num_epochs):
for X, y in data_iter:
l = loss(net(X) ,y)
trainer.zero_grad()
l.backward()
trainer.step()
l = loss(net(features), labels)
print(f'epoch {epoch + 1}, loss {l:f}')
w = net[0].weight.data
print('w的估计误差:', true_w - w.reshape(true_w.shape))
b = net[0].bias.data
print('b的估计误差:', true_b - b)
边栏推荐
猜你喜欢
npm install dependency error npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfonpm ERR! errno ENOTFOUND
yolov3中数据读入(一)
【go语言入门笔记】13、 结构体(struct)
逻辑回归---简介、API简介、案例:癌症分类预测、分类评估法以及ROC曲线和AUC指标
flink on yarn任务迁移
安卓连接mysql数据库,使用okhttp
sklearn中的pipeline机制
VScode配置PHP环境
TensorFlow2 study notes: 8. tf.keras implements linear regression, Income dataset: years of education and income dataset
Kubernetes基本入门-元数据资源(四)
随机推荐
Install dlib step pit record, error: WARNING: pip is configured with locations that require TLS/SSL
简单说Q-Q图;stats.probplot(QQ图)
CTFshow—Web入门—信息(9-20)
AIDL communication between two APPs
(十二)树--哈夫曼树
(十一)树--堆排序
(十三)二叉排序树
剑指 Offer 20226/30
Jupyter Notebook安装库;ModuleNotFoundError: No module named ‘plotly‘解决方案。
纳米级完全删除MYSQL5.7以及一些吐槽
逻辑回归---简介、API简介、案例:癌症分类预测、分类评估法以及ROC曲线和AUC指标
智能合约安全——delegatecall (1)
flink-sql所有数据类型
pgsql函数中的return类型
(十)树的基础部分(一)
MySQL事务详解(事务隔离级别、实现、MVCC、幻读问题)
Kubernetes集群安装
Upload靶场搭建&&第一二关
Zend FrameWork RCE1
TensorFlow2 study notes: 5. Common activation functions