![](https://img-blog.csdnimg.cn/direct/b3fa2347d20f44b69ef35e4fe5df90c0.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
实战Pytorch
文章平均质量分 92
Pytorch原理深入实战
小森( ﹡ˆoˆ﹡ )
(ง •̀_•́)ง加油
展开
-
感知机和神经网络
我们今天学习的神经网络,不是人或动物的神经网络,但是又是模仿人和动物的神经网络而定制的神经系统,特别是大脑和神经中枢,定制的系统是一种数学模型或计算机模型,神经网络由大量的人工神经元连接而成,大多数时候人工神经网络能够在外界信息的基础上改变内部结构,是一种自适应的改变的过程,现代的神经网络是一种基于传统统计学的建模工具,常用来对输入和输出之间复杂的关系进行建模或者探索数据之间的模式人或动物的神经元如下,当人感受到刺激的时候,信号会通过传道部传递信号,最后会作用在效应部做出相应的反应。原创 2024-05-11 16:55:49 · 976 阅读 · 4 评论 -
简单的神经网络
对于二分类问题,假设我们只考虑正类(标签为1)和负类(标签为0)在多分类问题中,交叉熵损失函数可以扩展为−∑𝑖=1𝐾𝑦𝑖⋅log(𝑝𝑖)−∑i=1Kyi⋅log(pi),其中𝐾K是类别的总数,( y_i )是样本属于第𝑖i个类别的真实概率(通常用one-hot编码表示),而𝑝𝑖pi是模型预测该样本属于第( i )个类别的概率。全连接层通常用于网络的最后几层,它将之前层(如卷积层和池化层)提取的特征进行整合,以映射到样本标记空间,即最终的分类或回归结果。主要作用就是计算损失函数对模型参数的梯度,原创 2024-05-10 16:33:14 · 1537 阅读 · 1 评论 -
认识卷积神经网络
我们现在开始了解卷积神经网络,卷积神经网络是深度学习在计算机视觉领域的突破性成果,在计算机视觉领域,往往我们输入的图像都很大,使用全连接网络的话,计算的代价较高,图像也很难保留原有的特征,导致图像处理的准确率不高。原创 2024-05-09 22:49:21 · 1490 阅读 · 28 评论 -
神经网络案例实战
这样可以确保在训练集和验证集中各类别的比例与原始数据集中的比例相同,有助于提高模型的泛化能力,防止出现一份中某个类别只有几个。🔎我们可以自行将优化方法由 SGD 调整为 Adam , 学习率由 1e-3 调整为 1e-4 ,对数据数据进行标准化 ,增加网络深度。在这个问题中,我们不需要预测实际价格,而是一个价格范围,它的范围使用 0、1、2、3 来表示,所以该问题也是一个分类问题。数据预处理:对收集到的数据进行清洗和预处理,确保数据的质量和一致性。价格预测:使用训练好的模型来预测新手机的价格。原创 2024-05-08 23:01:53 · 1114 阅读 · 12 评论 -
神经网络中的归一化
神经网络的学习其实在学习数据的分布,随着网络的深度增加、网络复杂度增加,一般流经网络的数据都是一个 mini batch,每个 mini batch 之间的数据分布变化非常剧烈,这就使得网络参数频繁的进行大的调整以适应流经网络的不同分布的数据,给模型训练带来非常大的不稳定性,使得模型难以收敛。这个过程涉及到最小化一个包含L2正则化项的损失函数,以找到最佳的参数值,使得模型在训练集上的表现最优,同时通过正则化避免过拟合。方法本身并不直接产生预测结果,而是为后续的预测准备了必要的模型参数。默认值为1e-05。原创 2024-05-06 22:32:38 · 1515 阅读 · 8 评论 -
神经网络之防止过拟合
今天我们来看一下神经网络中防止模型过拟合的方法在机器学习和深度学习中,过拟合是指模型在训练数据上表现得非常好,但在新的、未见过的数据上表现不佳的现象。这是因为模型过于复杂,以至于它学习了训练数据中的噪声和细节,而不是数据的潜在分布。为了解决这个问题,正则化技术被引入,它通过在损失函数中添加一个惩罚项来对模型的复杂度进行限制。原创 2024-05-05 21:47:09 · 2080 阅读 · 27 评论 -
神经网络中的优化方法
,梯度为 0,参数无法优化,碰到局部最小值。AdaGrad 通过对不同的参数分量使用不同的学习率,AdaGrad 的学习率总体会逐渐减小,这是因为 AdaGrad算法认为:在起初时,我们距离最优目标仍较远,可以使用较大的学习率,加快训练速度,随着迭代次数的增加,学习率逐渐下降。AdaGrad通过这种方式实现了对每个参数的个性化学习率调整,使得在参数空间较平缓的方向上可以取得更大的进步,而在陡峭的方向上则能够变得更加平缓,从而加快了训练速度( 如果累计梯度值s大的话,学习率就会小一点)原创 2024-05-03 14:24:26 · 1457 阅读 · 30 评论 -
神经网络反向传播算法
如图我们在最下边输入两个维度的值进入神经网络:0.05、0.1 ,经过两个隐藏层(每层两个神经元),每个神经元有两个值,左边为输入值,右边是经过激活函数后的输出值;这种算法基于梯度下降法来优化误差函数,利用了神经网络的层次结构来有效地计算梯度,从而更新网络中的权重和偏置。设置的初始权重w1,w2,...w8分别为0.15、0.20、0.25、0.30、0.30、0.35、0.55、0.60。其他的网络参数更新过程和上面的求导过程是一样的,这里就不过多赘述,我们直接看一下代码。类的实例时,它会首先调用。原创 2024-05-01 08:31:16 · 1786 阅读 · 42 评论 -
神经网络的反向传播
对于复杂的复合函数,我们将其拆分为一系列的加减乘除或指数,对数,三角函数等初等函数,通过链式法则完成复合函数的求导。在实际应用中,梯度下降法的初始点是随机选择的,这意味着最终找到的最小值可能取决于初始点的选择。与梯度下降算法相结合,对网络中所有权重(w,b)计算损失函数的梯度,并利用梯度值来更新权值以最小化损失函数。在训练过程中,输入数据被送入网络,然后通过每一层进行传递,直到得到最终的预测输出。前向传播的目的是计算给定输入数据时网络的预测输出,以便在后续的训练过程中与实际目标值进行比较,并计算损失。原创 2024-04-28 09:26:47 · 2504 阅读 · 14 评论 -
神经网络参数初始化
💽参数初始化是神经网络训练过程中的一个重要步骤。对于偏置,通常可以将其初始化为0或者较小的随机数。然而,对于权重w的初始化,我们通常会采用更加复杂的方法,以确保网络能够更好地学习数据的特征。我们先给机器一个架构,如下图的两个隐藏层,还有这些神经元,还有给定激活函数,让机器去找w 的取值!这个模块提供了多种预定义的初始化方法,用户可以根据需要选择合适的方法来初始化网络参数。在PyTorch中,一般我们在构建网络模型时,每个网络层的参数都有默认的初始化方法,如果需要自定义参数的初始化,可以使用。原创 2024-05-01 13:29:42 · 1447 阅读 · 17 评论 -
神经网络的激活函数
然而,它也存在梯度消失的问题,这意味着在训练过程中,当输入值非常大或非常小的时候,梯度几乎为零,这会导致权重更新变得非常缓慢,从而影响网络的学习效率。Softmax 直白来说就是将网络输出的 logits 通过 softmax 函数,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们将它理解成概率,选取概率最大(也就是值对应最大的)节点,作为我们的预测目标类别。假设有一个单层的神经网络,其输入为𝑥x,权重为𝑤w,偏置为𝑏b,那么该层的输出𝑦y可以表示为:𝑦=𝑤⋅𝑥+𝑏y=w⋅x+b。原创 2024-04-26 23:16:24 · 2539 阅读 · 36 评论 -
Pytorch实现线性回归模型
我们接下来使用Pytorch的API来手动构建一个线性回归的假设函数损失函数及优化方法,熟悉一下训练模型的流程。🧨我们将这批数据每次分成16份训练,并且这样重复训练epochs次,可以更深入地学习数据中的特征和模式,有助于防止模型快速陷入局部最优解,从而提高模型的泛化能力,而且。由于每个批次的数据都是随机抽取的。方法被调用时,PyTorch 会自动计算该张量相对于所有需要梯度的参数的梯度,并将这些梯度累加到对应参数的。是简单函数还是复杂的损失函数,都能利用相同的方法来进行梯度的反向传播。原创 2024-04-21 16:29:42 · 2046 阅读 · 16 评论 -
Pytorch-自动微分模块
🥇接下来我们进入到Pytorch的自动微分模块自动微分模块是PyTorch中用于。PyTorch通过其模块提供了自动微分的功能,这对于深度学习和优化问题至关重要,因为它可以自动计算梯度,无需手动编写求导代码。以下是backward()backward().grad。原创 2024-04-19 15:54:40 · 1928 阅读 · 29 评论 -
Pytorch-张量形状操作
在 PyTorch 中,有些张量是由不同的数据块组成的,它们并没有存储在整块的内存中,view 函数无法对这样的张量进行变形处理,如果张量存储在不连续的内存中,使用view函数会导致错误。💎reshape 函数可以在保证张量数据不变的前提下改变数据的维度,将其转换成指定的形状,在后面的神经网络学习时,会经常使用该函数来调节数据的形状,以适配不同网络层之间的数据传递。当第二个参数为-1时,表示自动计算该维度的大小,以使得张量的元素总数不变,这样我们可以免去思考的时间。原创 2024-04-16 16:00:04 · 1405 阅读 · 15 评论 -
Pytorch - 张量转换拼接
比如在处理图像数据或者文本数据的时候,我们经常需要把二维的数据转换为三维的,这时候就可以使用。张量索引操作是处理多维数据的基础,它不仅能够让我们访问和修改数据,还能够帮助我们实现各种复杂的数据操作和算法。不会增加张量的总维度数量,它仅仅是在一个指定的维度上扩展了张量的大小。时,输入的张量必须在除了拼接维度外的所有其他维度上具有相同的大小。这表明在新的维度上,张量的个数是2,其它两个维度的大小保持不变。,这里的4表示在指定的维度上,元素的数量从原来的2个扩展到了4个。的二维张量A和B,我们可以通过指定。原创 2024-04-15 21:54:26 · 7350 阅读 · 26 评论 -
PyTorch-张量
📀PyTorch是一个开源的深度学习框架,由Facebook的人工智能研究团队开发,专为深度学习研究和开发而设计。PyTorch 中的张量就是元素为同一种数据类型的多维矩阵。在 PyTorch 中,张量以 "类" 的形式封装起来,对张量的一些运算、处理的方法被封装在类中。原创 2024-03-22 13:24:59 · 1299 阅读 · 8 评论 -
Pytorch-张量基础操作
😆😆😆我们先来看一下张量的介绍😆😆😆。原创 2024-03-23 13:17:45 · 1414 阅读 · 7 评论