首页 > 其他分享 >第三章:线性神经网络

第三章:线性神经网络

时间:2024-08-16 23:27:09浏览次数:9  
标签:第三章 torch batch indices 神经网络 num examples 3.1 线性

3.1 线性回归

3.1.1 基本元素
训练数据集/样本/标签/特征

3.1.1.1 线性模型
一个线性模型有权重,偏移量,权重决定特征对预测值的影响,偏移量则是当特征为0时说明预测值为多少
3.1.1.2 损失函数
损失函数能够量化目标的实际值与预测值之间的差距(损失函数以及部分函数前面的二分之一用来简化形式)
度量整个数据集质量,需要对n个样本求损失均值
3.1.1.3 解析解
对于这个解析解的转化,w* = ?(3.18公式)右侧的解是矩阵进行转置变换后得到的。
3.1.1.4 随机梯度下降
梯度下降用法:计算损失函数关于模型参数的导数。但由于每次更新参数之前需要便利整个数据集,因此通常会在每次需要计算更新时抽取一小批样本,
叫做小批量随机梯度下降。
至于每次迭代更新的过程:对3.1.9的公式进行分析即可。要把偏导区分,第i个损失函数l要明确。
η为学习率。
泛化:找到一组参数能在从未见过的数据上实现较低的损失。

3.1.2 矢量化加速
矢量化代码会加速运算,对代码要思考优化。

3.1.3 正态分布于平方损失
均方差误差损失可用于线性回归:假设观测中包含噪声,且噪声服从正态分布。
这里有一个极大似然估计法,有需要要重新来这里理解。

3.2 线性回归从零开始实现

3.2.1 生成数据集
def synthetic_data(w, b, num_examples): #@save
"""生成y=Xw+b+噪声"""
X = torch.normal(0, 1, (num_examples, len(w)))
y = torch.matmul(X, w) + b
y += torch.normal(0, 0.01, y.shape)#添加噪声,防止过拟合,添加随机性。
return X, y.reshape((-1, 1))#-1表示自动推断该维度的大小,1表示这里想要一个列向量。该函数最后返回特征X与标签y。

true_w = torch.tensor([2, -3.4])#权重,为2与-3.4
true_b = 4.2 #偏移量 4.2
features, labels = synthetic_data(true_w, true_b, 1000) #特征,标签生成

3.2.2 读取数据集
def data_iter(batch_size, features, labels): #batch_size 每行样本数量 features 特征矩阵 labels 标签向量或矩阵
num_examples = len(features) #数据集中样本的数量,通过计算特征矩阵的长度来确定样本数
indices = list(range(num_examples))#创建列表,索引长度为从0到num_examples-1的长度
random.shuffle(indices)#打乱索引
for i in range(0, num_examples, batch_size):#以batch_size为步长,遍历整个数据集,i为索引。
batch_indices = torch.tensor(
indices[i: min(i + batch_size, num_examples)])#从第i个索引到第i+batch_size之间的索引子列表,如果超过num_examples,则取最后一个样本索引即停,并通过torch.tensor转化为张量
yield features[batch_indices], labels[batch_indices]#yield关键字,允许函数每次调用时返回一个值,但保留函数的执行状态,以便下次继续执行。本段用来生成批量数据。

3.2.3 初始化模型参数

标签:第三章,torch,batch,indices,神经网络,num,examples,3.1,线性
From: https://www.cnblogs.com/bflq/p/18363836

相关文章

  • PyTorch--实现循环神经网络(RNN)模型
    文章目录前言完整代码代码解析导入必要的库设备配置超参数设置数据集加载数据加载器定义RNN模型实例化模型并移动到设备损失函数和优化器训练模型测试模型保存模型小改进神奇的报错ValueError:LSTM:Expectedinputtobe2Dor3D,got4Dinstead前言首先,这篇......
  • 有符号浮点运算的基本步骤:以双线性插值为例
    参考:韩彬的图像处理书、无双软件学院方法。步骤一:无损定点化浮点数在硬件计算中首先需要做的便是定点化,一般是左移一定位宽,可以是2048或4096;这个过程要注意保障无损;步骤二:运算和位宽匹配;要确定所有参与计算的数小数位位宽是匹配的,否则无法进行任何层次的计算;需要特别注意很......
  • 看demo学算法之 循环神经网络(RNN)
    今天我们来聊聊神经网络中的“记忆大师”——循环神经网络(RNN)。想象一下,你正在看电影,每一帧都连贯着前一帧的故事情节。RNN就像是这样一位观众,它能记住之前看到的内容,帮助理解当前的画面。是不是很酷?......
  • 力扣 | 一维简单线性dp | 2140. 解决智力问题、322. 零钱兑换、2466. 统计构造好字符
    文章目录一、2140.解决智力问题二、322.零钱兑换三、2466.统计构造好字符串的方案数四、91.解码方法五、983.最低票价六、790.多米诺和托米诺平铺需要特别注意的题目有2140.解决智力问题和983.最低票价,因为这两个题目可以启发思路,其他的题都比较普通。一、21......
  • 混合策略改进的蜣螂算法(IDBO)优化长短期记忆神经网络原理及matlab代码
    目录0引言1数学模型2模型对比3matlab代码3.1改进的主代码3.2IDBO-LSTM4视频讲解0引言针对DBO算法全局探索能力不足、易陷入局部最优以及收敛精度不理想等问题,多为学者提出了混合多策略改进的蜣螂优化算法(IDBO)。主要混合策略改进首先是采用混沌映射结合随机反......
  • 机械学习—零基础学习日志(如何理解线性代数3)
    零基础为了学人工智能,正在快乐学习,每天都长脑子行列式最早行列式,是莱布尼茨用于判断,一个方程有没有解。例如,三元一次方程,如果有解,对应行列式就有值,但是如果无解,那么对应的行列式则为零。线性映射一个方程组可以写成上述的形式,而A就是线性映射。这里可以把向量x,理解为输入......
  • Python实现CNN(卷积神经网络)对象检测算法
    目录1.引言2.对象检测的基本原理2.1对象检测的目标2.2常见对象检测方法2.2.1基于滑动窗口的传统方法2.2.2基于区域提议的现代方法2.2.3单阶段检测器2.3本次实现的检测方法3.代码实现3.1环境准备3.2数据准备与预处理3.3构建CNN模型3......
  • 机器学习-卷积神经网络(CNN)
    机器学习-卷积神经网络(CNN)1.卷积神经网络的基本概念1.1卷积层(ConvolutionalLayer)1.1.1卷积操作1.1.2特征图(FeatureMap)1.2激活函数(ActivationFunction)1.2.1ReLU(RectifiedLinearUnit)1.2.2其他激活函数1.3池化层(PoolingLayer)1.3.1最大池化(MaxPooling)1.3.2......
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)1.5-1.
    目录第四门课卷积神经网络(ConvolutionalNeuralNetworks)第一周卷积神经网络(FoundationsofConvolutionalNeuralNetworks)1.5卷积步长(Stridedconvolutions)1.6三维卷积(Convolutionsovervolumes)第四门课卷积神经网络(ConvolutionalNeuralNetworks)第一周......
  • 神经网络之卷积篇:详解三维卷积(Convolutions over volumes)
    详解三维卷积从一个例子开始,假如说不仅想检测灰度图像的特征,也想检测RGB彩色图像的特征。彩色图像如果是6×6×3,这里的3指的是三个颜色通道,可以把它想象成三个6×6图像的堆叠。为了检测图像的边缘或者其他的特征,不是把它跟原来的3×3的过滤器做卷积,而是跟一个三维的过滤器,它的维......