注销网站和取消接入/vue seo 优化方案
目录
一、BP算法(下)
0、反向传播代码回顾
写法一:
写法二(更常用):
1、BP中的梯度下降
1.数学描述
2.传统下降方式
3.优化梯度下降方式
指数加权平均
Momentum
AdaGrad
RMSProp
Adam(常用)
总结
二、过拟合和欠拟合
1、概念
1.过拟合
2.欠拟合
3.判断
2、解决欠拟合
3、解决过拟合
1.L2正则化
2.L1正则化
3.Dropout
4.其他方法
一、BP算法(下)
0、反向传播代码回顾
作为深度学习里的核心部分,再来回顾一下完整的全连接神经网络的反向传播代码框架的两种写法:
写法一:
import torch
import torch.nn as nn
import torch.optim as optim# 构建网络
Class MyNet(nn.module):def __init__(self,input_size,output_size):super(MyNet,self).__init__()# 定义网络结构self.linear1 = nn.Linear(input_size,2)self.linear2 = nn.Linear(2,2)self.linear3 = nn.Linear(2,output_size)# 激活函数 sigmoidself.activation = torch.sigmoid# 网络参数初始化 这里选择自动初始化"""若要手动初始化:# 权重self.linear1.weight.data = torch.tensor([[0.10,0.20],[0.25,0.35]])# 偏置self.linear1.bias.data = torch.tensor([0.30,0.30])适合结构形式固定时的神经网络"""def forward(self,x):# 定义前向传播过程x = self.linear1(x)x = self.activation(x)x = self.linear2(x)x = self.activation(x)x = self.linear3(x)x = self.activation(x)return x# 训练模型
def train():# 创建数据集inputs = torch.tensor([[0.05, 0.10]])target = torch.tensor([[0.01, 0.99]])# 定义神经网络结构net = MyNet(2,2)# 定义优化器optimizer = optim.SGD(net.parameters(),lr=0.05)# 定义损失函数loss_fn = nn.MSELoss()# 训练epoch = 500for i in range(epoch):# 前向传播 获得网络输出值y_pred = net(inputs)# 计算误差loss = loss_fn(y_pred,target)# 梯度清零optimizer.zero_grad()# 反向传播loss.backward()# 更新梯度optimizer.step()# 打印更新后的所有网络参数print(net.state_dict())if __name__ == "__main__":train()
写法二(更常用):
import torch
import torch.nn as nn
import torch.optim as optimclass MyNet(nn.Module):def __init__(self,input_size,output_size):super(MyNet, self).__init__()# 定义网络结构 nn.Sequention 一种序列容器,可以将多个层按顺序堆叠在一起# 隐藏层hide1层 有input_size个特征,3个输出(3个神经元) '3行2列'self.hide1 = nn.Sequential(nn.Linear(input_size,3),nn.Sigmoid())self.hide2 = nn.Sequential(nn.Linear(3,2),nn.Sigmoid())self.hide2 = nn.Sequential(nn.Linear(2,4),nn.Sigmoid())# 输出层 输入进来每条数据有12个特征w 输出output_size个结果self.out = nn.Sequential(nn.Linear(4,output_size),nn.Sigmoid())def forward(self,input):# 前向传播过程x = self.hide1(input)x = self.hide2(x)x = self.hide3(x)y_pred = self.out(x)return y_preddef train():# 数据集inputs = torch.tensor([[0.05, 0.10],[0.05,0.18],[0.05,0.310]])target = torch.tensor([[1,2],[0,3],[2,4]],dtype=torch.float32)# 定义网络结构net = MyNet(2,2)# 优化器optimizer = optim.SGD(net.parameters(), lr=0.1)# 定义损失函数loss_fn = torch.nn.MSELoss()# 训练epoch = 500for i in range(epoch):# 前向传播# 获得网络输出值y_pred = net(inputs) # module父类已实现前向传播# 计算误差loss = loss_fn(y_pred, target)# 梯度清零optimizer.zero_grad()# 反向传播loss.backward()#更新梯度optimizer.step()# 打印更新后的网络参数print(net.state_dict())if __name__ == "__main__":train()
1、BP中的梯度下降
1.数学描述
梯度下降公式:,其中
是学习率。
-
学习率太小,每次训练之后的效果太小,增加时间和算力成本。
-
学习率太大,大概率会跳过最优解,进入无限的训练和震荡中。
-
解决的方法就是,学习率也需要随着训练的进行而变化。
过程
初始化参数→计算梯度→更新参数→迭代更新→达到终止条件
2.传统下降方式
根据计算梯度时数据量不同,常见的方式有:批量梯度下降BGD、随机梯度下降SGD、小批量下降MGBD。
它们的特点以及优劣可参考:机器学习基础07_sklearn梯度下降&岭回归&拉索回归&逻辑回归_sklearn 梯度下降法-CSDN博客
但都存在问题:
-
收敛速度慢:BGD和MBGD使用固定学习率,太大会导致震荡,太小又收敛缓慢。
-
局部最小值和鞍点问题:SGD在遇到局部最小值或鞍点时容易停滞,导致模型难以达到全局最优。
-
训练不稳定:SGD中的噪声容易导致训练过程中不稳定,使得训练陷入震荡或不收敛。
3.优化梯度下降方式
传统的梯度下降优化算法中,可能会碰到以下情况:
碰到平缓区域,梯度值较小,参数优化变慢;碰到 “鞍点” ,梯度为 0,参数无法优化;碰到局部最小值等
对于这些问题, 出现了一些对梯度下降算法的优化方法,例如:Momentum、AdaGrad、RMSprop、Adam 等:
指数加权平均
指数移动加权平均(Exponential Moving Average简称EMA)则是参考各数值,并且各数值的权重都不同,距离越远的数字对平均数计算的贡献就越小(权重较小),距离越近则对平均数的计算贡献就越大(权重越大)。
计算公式
-
St 表示指数加权平均值(EMA);
-
Yt 表示 t 时刻的值;
-
是平滑系数,取值范围为
,其越接近 1,表示对历史数据依赖性越高;越接近 0 则越依赖当前数据。该值越大平均数越平缓。
import torch
import numpy as np
import matplotlib.pyplot as plt"""
**指数移动加权平均**(Exponential Moving Average简称EMA)
参考各数值,并且各数值的权重都不同
距离越远的数字对平均数计算的贡献越小(权重较小)
距离越近则对平均数的计算贡献就越大(权重越大)
"""
def test01():# 模拟温度np.random.seed(666)y = np.random.randint(5,40,30)print(y)x = np.arange(30)plt.plot(x,y,c='b')plt.scatter(x,y,c='r')plt.show()def test02(beta=0.9):# 模拟温度np.random.seed(666)y = np.random.randint(5,40,30)print(y)x = np.arange(30)y_ema = []for i in range(30):if i==0:y_ema.append(y[0])else:st = beta*y_ema[-1] + (1-beta)*y[i]y_ema.append(st)plt.plot(x,np.array(y_ema),c='b')plt.scatter(x,y,c='r')plt.show()if __name__ == '__main__':# test01()test02()
Momentum
动量(Momentum)是对梯度下降的优化方法,可以更好地应对梯度变化和梯度消失问题,从而提高训练模型的效率和稳定性。
-
惯性效应: 该方法加入前面梯度的累积,这种惯性使得算法沿着当前的方向继续更新。如遇到鞍点,也不会因梯度逼近零而停滞。
-
减少震荡: 该方法平滑了梯度更新,减少在鞍点附近的震荡,帮助优化过程稳定向前推进。
-
加速收敛: 该方法在优化过程中持续沿着某个方向前进,能够更快地穿越鞍点区域,避免在鞍点附近长时间停留。
梯度计算公式:St = β * + (1- β) * Wt
-
表示历史梯度移动加权平均值
-
Wt 表示当前时刻的梯度值
-
β 为权重系数
梯度下降公式中梯度的计算,就不再是当前时刻 t 的梯度值,而是历史梯度值的指数移动加权平均值:
api
optimizer = optim.SGD(model.parameters(), lr=0.05, momentum=0.4) # 学习率和动量值可以根据实际情况调整,momentum 参数指定了动量系数,默认为0。动量系数通常设置为 0 到0.5 之间的一个值,但也可以根据具体的应用场景调整
def train():# 数据集inputs = torch.tensor([[0.05, 0.10],[0.05,0.18],[0.05,0.310]])target = torch.tensor([[1,2],[0,3],[2,4]],dtype=torch.float32)# 定义网络结构net = MyNet(2,2)# 优化器 加入动量值optimizer = optim.SGD(net.parameters(), lr=0.01,momentum=0.6)# 定义损失函数mes = torch.nn.MSELoss()# 训练epoch = 100for i in range(epoch):# 前向传播# 获得网络输出值y_pred = net(inputs) # module父类已实现前向传播# 计算误差loss = mes(y_pred, target)# 梯度清零optimizer.zero_grad()# 反向传播loss.backward()#更新梯度optimizer.step()
AdaGrad
AdaGrad(Adaptive Gradient Algorithm)为每个参数引入独立的学习率,它根据历史梯度的平方和来调整这些学习率,这样就使得参数具有较大的历史梯度的学习率减小,而参数具有较小的历史梯度的学习率保持较大,从而实现更有效的学习。
学习率计算公式:
其中s是累积平方梯度, s = s + g ⊙ g,⊙ 表示各个分量相乘;σ是小常数 σ = 1e-8( 用于防止除零操作)
参数更新公式:
优点:
-
自适应学习率:由于每个参数的学习率是基于其梯度的累积平方和 来动态调整的,这意味着学习率会随着时间步的增加而减少,对梯度较大且变化频繁的方向非常有用,防止了梯度过大导致的震荡。
-
适合稀疏数据:AdaGrad 在处理稀疏数据时表现很好,因为它能够自适应地为那些较少更新的参数保持较大的学习率。
缺点:
-
学习率过度衰减:随着时间的推移,累积的时间步梯度平方值越来越大,导致学习率逐渐接近零,模型会停止学习。
-
不适合非稀疏数据:在非稀疏数据的情况下,学习率过快衰减可能导致优化过程早期停滞。
AdaGrad是一种有效的自适应学习率算法,然而由于学习率衰减问题,我们会使用改 RMSProp 或 Adam 来替代。
api
optimizer = optim.Adagrad(model.parameters(), lr=0.9) # 设置学习率
RMSProp
RMSProp(Root Mean Square Propagation)在时间步中,不是简单地累积所有梯度平方和,而是使用指数加权平均来逐步衰减过时的梯度信息。这种方法专门用于解决AdaGrad在训练过程中学习率过度衰减的问题。
使用指数移动平均累积历史梯度:
学习率和参数更新公式和AdaGrad没有变化。
优点
-
适应性强:RMSProp自适应调整每个参数的学习率,对于梯度变化较大的情况非常有效,使得优化过程更加平稳。
-
适合非稀疏数据:相比于AdaGrad,RMSProp更加适合处理非稀疏数据,因为它不会让学习率减小到几乎为零。
-
解决过度衰减问题:通过引入指数加权平均,RMSProp避免了AdaGrad中学习率过快衰减的问题,保持了学习率的稳定性
缺点
-
依赖于超参数的选择:RMSProp的效果对衰减率
和学习率
的选择比较敏感,需要一些调参工作。
需要注意的是:AdaGrad 和 RMSProp 都是对于不同的参数分量使用不同的学习率,如果某个参数分量的梯度值较大,则对应的学习率就会较小,如果某个参数分量的梯度较小,则对应的学习率就会较大一些。
api
optimizer = optim.RMSprop(model.parameters(), lr=0.7, momentum=0.9) # 设置学习率和动量
Adam(常用)
Adam(Adaptive Moment Estimation)算法将动量法和RMSProp的优点结合在一起:
Momentum 使用指数加权平均计算当前的梯度值、AdaGrad、RMSProp 使用自适应的学习率,Adam 结合了 Momentum、RMSProp 的优点,使用:移动加权平均的梯度和移动加权平均的学习率。使得能够自适应学习率的同时,也能够使用 Momentum 的优点。
优点
-
高效稳健:Adam结合了动量法和RMSProp的优势,在处理非静态、稀疏梯度和噪声数据时表现出色,能够快速稳定地收敛。
-
自适应学习率:Adam通过一阶和二阶动量的估计,自适应调整每个参数的学习率,避免了全局学习率设定不合适的问题。
-
适用大多数问题:Adam几乎可以在不调整超参数的情况下应用于各种深度学习模型,表现良好。
缺点
-
超参数敏感:尽管Adam通常能很好地工作,但它对初始超参数(如
、
和
)仍然较为敏感,有时需要仔细调参。
-
过拟合风险:由于Adam会在初始阶段快速收敛,可能导致模型陷入局部最优甚至过拟合。因此,有时会结合其他优化算法(如SGD)使用。
api
optimizer = optim.Adam(model.parameters(), lr=0.05) # 设置学习率
总结
在实际应用中,根据数据的规模和计算资源的情况,选择合适的梯度下降方式(批量、随机、小批量)及其变种(如动量法、Adam等)可以显著提高模型训练的效率和效果。
Adam是目前最为流行的优化算法之一,因其稳定性和高效性,广泛应用于各种深度学习模型的训练中。Adam结合了动量法和RMSProp的优点,能够在不同情况下自适应调整学习率,并提供快速且稳定的收敛表现。
二、过拟合和欠拟合
在训练深层神经网络时,由于模型参数较多,在数据量不足时很容易过拟合。而正则化技术主要就是用于防止过拟合,提升模型的泛化能力(对新数据表现良好)和鲁棒性(对异常数据表现良好)。
1、概念
1.过拟合
过拟合是指模型对训练数据拟合能力很强并表现很好,但在测试数据上表现较差。
过拟合常见原因有:
-
数据量不足:当训练数据较少时,模型可能会过度学习数据中的噪声和细节。
-
模型太复杂:如果模型很复杂,也会过度学习训练数据中的细节和噪声。
-
正则化强度不足:如果正则化强度不足,可能会导致模型过度学习训练数据中的细节和噪声。
2.欠拟合
欠拟合是由于模型学习能力不足,无法充分捕捉数据中的复杂关系。
3.判断
过拟合
训练误差低,但验证时误差高。模型在训练数据上表现很好,但在验证数据上表现不佳,说明模型可能过度拟合了训练数据中的噪声或特定模式。
欠拟合
训练误差和测试误差都高。模型在训练数据和测试数据上的表现都不好,说明模型可能太简单,无法捕捉到数据中的复杂模式。
2、解决欠拟合
-
增加模型复杂度:引入更多的参数、增加神经网络的层数或节点数量,使模型能够捕捉到数据中的复杂模式。
-
增加特征:通过特征工程添加更多有意义的特征,使模型能够更好地理解数据。
-
减少正则化强度:适当减小 L1、L2 正则化强度,允许模型有更多自由度来拟合数据。
-
训练更长时间:如果是因为训练不足导致的欠拟合,可以增加训练的轮数或时间.
3、解决过拟合
1.L2正则化
L2 正则化通过在损失函数中添加权重参数的平方和来实现,目标是惩罚过大的参数值:
其中是所有权重参数的平方和,称为 L2 正则化项;
是模型的第 i 个权重参数。
L2 正则化会惩罚权重参数过大的情况,通过参数平方值对损失函数进行约束。
梯度更新
参数越大惩罚力度就越大,从而让参数逐渐趋向于较小值,避免出现过大的参数。
作用
-
防止过拟合:当模型过于复杂、参数较多时,模型会倾向于记住训练数据中的噪声,导致过拟合。L2 正则化通过抑制参数的过大值,使得模型更加平滑,降低模型对训练数据噪声的敏感性。
-
限制模型复杂度:L2 正则化项强制权重参数尽量接近 0,避免模型中某些参数过大,从而限制模型的复杂度。通过引入平方和项,L2 正则化鼓励模型的权重均匀分布,避免单个权重的值过大。
-
提高模型的泛化能力:正则化项的存在使得模型在测试集上的表现更加稳健,避免在训练集上取得极高精度但在测试集上表现不佳。
-
平滑权重分布:L2 正则化不会将权重直接变为 0,而是将权重值缩小。这样模型就更加平滑的拟合数据,同时保留足够的表达能力。
import torch.optim as optim
optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=0.001) # L2 正则化,weight_decay就是L2正则化前面的参数λ
2.L1正则化
L1 正则化通过在损失函数中添加权重参数的绝对值之和来约束模型的复杂度:
其中是所有权重参数的绝对值之和,这个项即为 L1 正则化项。
梯度更新
其中sign()是符号函数,为正时取1,为负时取值为-1,等于0时为0。
因为 L1 正则化依赖于参数的绝对值,其梯度更新时不是简单的线性缩小,而是通过符号函数来直接调整参数的方向。这就是为什么 L1 正则化能促使某些参数完全变为 0。
作用
-
稀疏性:L1 正则化的一个显著特性是它会促使许多权重参数变为 零。这是因为 L1 正则化倾向于将权重绝对值缩小到零,使得模型只保留对结果最重要的特征,而将其他不相关的特征权重设为零,从而实现 特征选择 的功能。
-
防止过拟合:通过限制权重的绝对值,L1 正则化减少了模型的复杂度,使其不容易过拟合训练数据。相比于 L2 正则化,L1 正则化更倾向于将某些权重完全移除,而不是减小它们的值。
-
简化模型:由于 L1 正则化会将一些权重变为零,因此模型最终会变得更加简单,仅依赖于少数重要特征。这对于高维度数据特别有用,尤其是在特征数量远多于样本数量的情况下。
-
特征选择:因为 L1 正则化会将部分权重置零,因此它天然具有特征选择的能力,有助于自动筛选出对模型预测最重要的特征。
和L2的对比
-
L1 正则化 更适合用于产生稀疏模型,会让部分权重完全为零,适合做特征选择。
-
L2 正则化 更适合平滑模型的参数,避免过大参数,但不会使权重变为零,适合处理高维特征较为密集的场景。
对于 L1 正则化,PyTorch 的优化器并不直接支持,需要手动将 L1 惩罚项添加到损失函数中。
import torch
import torch.nn as nn
import torch.optim as optimdef train():"""L1 正则化通过在损失函数中添加权重参数的绝对值之和来约束模型的复杂度。需手动添加"""# 数据集inputs = torch.tensor([[0.5,1.0,1.5],[0.5,3.1,1.8]])target = torch.tensor([[0.5],[1.5]])# 定义网络结构model = nn.Linear(3,1)# 优化器optimizer = optim.SGD(model.parameters(),lr=0.1)# 定义损失函数loss_fn = torch.nn.MSELoss()# 预测y_pred = model(inputs)# 计算损失:L1 正则化 加其加入到总损失中l1_lambda = 0.001l1_norm = sum(p.abs().sum() for p in model.parameters())loss = loss_fn(y_pred, target)+l1_lambda*l1_norm# 梯度清零if model.weight.grad is not None:model.weight.grad.zero_()# 反向传播loss.backward()# 参数更新optimizer.step()print(loss)
3.Dropout
Dropout 是一种在训练过程中随机丢弃部分神经元的技术。它通过减少神经元之间的依赖来防止模型过于复杂,从而避免过拟合。
Dropout过程:
-
按照指定的概率把部分神经元的值设置为0;
-
为了规避该操作带来的影响,需对非 0 的元素使用缩放因子1/(1-p)进行强化。
import torch
import torch.nn as nndef test01():"""Dropout 是一种在训练过程中随机丢弃部分神经元的技术,通过减少神经元之间的依赖来防止模型过于复杂,从而避免过拟合。"""x = torch.tensor([[1,2,3,1,3,4,5,3,5,6]],dtype = torch.float32)# 按照指定的概率把部分神经元的值设置为0drop = nn.Dropout(0.6)print(x.shape)x = drop(x)print(x)print(x.shape)print(sum(sum(x!=0))/x.shape[1])def test02():torch.manual_seed(666)x = torch.randint(0, 8, (3, 12)).float()w = torch.randn(12, 1, requires_grad=True)drop = nn.Dropout(0.5)# 随机抛点x = drop(x)output = x@wprint(output)loss = output.sum()loss.backward()print(w.grad.flatten())if __name__ == '__main__':# test01()test02()
4.其他方法
简化模型
-
减少网络层数和参数: 通过减少网络的层数、每层的神经元数量或减少卷积层的滤波器数量,可以降低模型的复杂度,减少过拟合的风险。
-
使用更简单的模型: 对于复杂问题,使用更简单的模型或较小的网络架构可以减少参数数量,从而降低过拟合的可能性。
数据增强
通过对训练数据进行各种变换(如旋转、裁剪、翻转、缩放等),可以增加数据的多样性,提高模型的泛化能力。
早停
早停是一种在训练过程中监控模型在验证集上的表现,并在验证误差不再改善时停止训练的技术。这样可避免训练过度,防止模型过拟合。
模型集成
通过将多个不同模型的预测结果进行集成,可以减少单个模型过拟合的风险。常见的集成方法包括投票法、平均法和堆叠法。
交叉验证
使用交叉验证技术可以帮助评估模型的泛化能力,并调整模型超参数,以防止模型在训练数据上过拟合。
这些方法可以单独使用,也可以结合使用,以有效地防止参数过大和过拟合。根据具体问题和数据集的特点,选择合适的策略来优化模型的性能。
相关文章:

深度学习基础03_BP算法(下)过拟合和欠拟合
目录 一、BP算法(下) 0、反向传播代码回顾 写法一: 写法二(更常用): 1、BP中的梯度下降 1.数学描述 2.传统下降方式 3.优化梯度下降方式 指数加权平均 Momentum AdaGrad RMSProp Adam(常用) 总结 二、过拟合和欠拟合 1、概念 1.过拟合 …...

web vue 滑动选择 n宫格选中 九宫格选中
页面动态布局经常性要交给客户来操作,他们按时他们的习惯在同一个屏幕内显示若干个子视图,尤其是在医学影像领域对于影像的同屏显示目视对比显的更为重要。 来看看如下的用户体验: 设计为最多支持5行6列页面展示后,右侧的布局则动…...

Spring Boot整合EasyExcel
Spring Boot整合EasyExcel主要涉及到以下几个步骤: 1.添加EasyExcel依赖到Spring Boot项目的pom.xml文件中。 2.创建数据模型类,用于映射Excel文件中的数据。 3.编写读取和写入Excel的服务。 以下是一个简单的例子: 1.添加EasyExcel依赖 …...

微软表示不会使用你的 Word、Excel 数据进行 AI 训练
微软否认使用 Microsoft 365 应用程序(包括 Word、Excel 和 PowerPoint)收集数据来训练公司人工智能 (AI) 模型的说法。 此前,Tumblr 的一篇博文声称,雷德蒙德使用“互联体验”功能抓取客户的 Word 和 Excel 数据,用…...

JavaScript(一)
1.JavaScript 基本使用 2.JavaScript简单事件 3.JavaScript修改样式 4.JavaScript数据类型 JavaScript和Java有什么关系 知识点一 JavaScript基本使用 JS写在哪 还有一种写在中间的,也就是<head>里面 JS一些注意事项 JS修改元素内容 #JS获取对象<…...

Day 32 动态规划part01
今天正式开始动态规划! 理论基础 无论大家之前对动态规划学到什么程度,一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是不是简单题想复杂了? 其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!…...

winform跨线程更新界面
前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发C#程序的时候,有时候需要在非Ui主线程更新界面,为了…...

【合作原创】使用Termux搭建可以使用的生产力环境(二)
前言 上期文章没看的可以先从上期文章开始看起 【合作原创】使用Termux搭建可以使用的生产力环境(一)-CSDN博客 目前我们已经完成了FinalShell ssh连接手机Termux的功能了,这期我们继续朝我们的目标前进。今天早上有读者进群以为生成环境指…...

微积分复习笔记 Calculus Volume 2 - 3.3 Trigonometric Substitution
3.3 Trigonometric Substitution - Calculus Volume 2 | OpenStax...

vue2+svg+elementui实现花瓣图自定义el-select回显色卡图片
项目需要实现花瓣图,但是改图表在echarts,highCharts等案例中均未出现,有类似的韦恩图,但是和需求有所差距; 为实现该效果,静态图表上采取svg来手动绘制花瓣: 确定中心点,以该点为中…...

记录一次网关异常
记一次网关异常 网关时不时就会出现下面的异常。关键是不知道什么时候就会报错,并且有时候就算什么都不操作,也会导致这个异常。 ERROR org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in schedul…...

计算机网络——不同版本的 HTTP 协议
介绍 HTTP,即超文本传输协议(HyperText Transfer Protocol),是应用层的一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。本文将介绍 HTTP 协议各个版本。 HTTP/1.0 HTTP/1…...

使用 LLaMA-Factory 微调
git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e . pip install tf-keras[dataset_info.json](dataset_info.json) 包含了所有可用的数据集。如果您希望使用自定义数据集,请**务必**在 dataset_info.json 文件中添加*数据…...

vue2 虚拟DOM 和 真实DOM (概念、作用、Diff 算法)
虚拟 DOM 和 真实DOM(概念、作用、Diff 算法) 1.1 概念 真实 DOM(Document Object Model):是浏览器中用于表示文档结构的树形结构。 <h2>你好</h2>虚拟DOM:用 JavaScript 对象来模拟真实 DOM…...

GEOBench-VLM:专为地理空间任务设计的视觉-语言模型基准测试数据集
2024-11-29 ,由穆罕默德本扎耶德人工智能大学等机构创建了GEOBench-VLM数据集,目的评估视觉-语言模型(VLM)在地理空间任务中的表现。该数据集的推出填补了现有基准测试在地理空间应用中的空白,提供了超过10,000个经过人工验证的指…...

说说Elasticsearch查询语句如何提升权重?
大家好,我是锋哥。今天分享关于【说说Elasticsearch查询语句如何提升权重?】面试题。希望对大家有帮助; 说说Elasticsearch查询语句如何提升权重? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Elasticsearch 中&…...

2-2-18-9 QNX系统架构之文件系统(一)
阅读前言 本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个…...

Unity类银河战士恶魔城学习总结(P156 Audio Settings音频设置)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了音频的大小设置与保存加载 音频管理器 UI_VolumeSlider.cs 定义了 UI_VolumeSlider 类,用于处理与音频设置相关的…...

springboot vue 会员收银系统 (12)购物车关联服务人员 订单计算提成 开源
前言 完整版演示 http://120.26.95.195/ 开发版演示 http://120.26.95.195:8889/ 在之前的开发进程中,我们完成订单的挂单和取单功能,今天我们完成购物车关联服务人员,用户计算门店服务人员的提成。 1.商品关联服务人员 服务人员可以选择 一…...

P3916 图的遍历(Tarjan缩点和反向建边)
P3916 图的遍历 - 洛谷 | 计算机科学教育新生态 写法一:Tarjan 思路:先运用Tarjan算法得到每个连通块中最大的编号,然后对每个连通块进行缩点重新建图,进行dfs,得到缩点后的连通块能够达到的最大编号。 Code: conste…...

Android13 允许桌面自动旋转
一)需求-场景 Android13 实现允许桌面自动旋转 Android13 版本开始后,支持屏幕自动旋转,优化体验和兼容性,适配不同屏幕 主界面可自动旋转 二)参考资料 android framework13-launcher3【06手机旋转问题】 Launcher默…...

cocotb value cocotb—基础语法对照篇
cocotb—基础语法对照篇 import cocotb from cocotb.triggers import Timer from adder_model import adder_model from cocotb.clock import Clock from cocotb.triggers import RisingEdge import randomcocotb.test() async def adder_basic_test(dut):"""Te…...

001-SpringBoot整合日志
SpringBoot整合日志 一、引入依赖二、配置 application.yml三、配置文件 logback.xml四、配置文件 WebConfigurerAdapter五、配置常量文件六、配置拦截器七、效果展示一、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId&…...

【Java基础面试题011】什么是Java中的自动装箱和拆箱?
相关知识补充:《Java从入门到精通(JDK17版)》_尚硅谷电子书.pdf Autism_Btkrsr/Blog_md_to_pdf - 码云 - 开源中国 (gitee.com) 回答重点 自动装箱:Java编译器自动将基本数据类型转换为包装类型 自动拆箱:Java编译器自动将包装类转换为基…...

ERROR in [eslint] Invalid Options ‘extensions‘ has been removed.
看着这个报错 感觉是版本不对引起的 ERROR in [eslint] Invalid Options: - Unknown options: extensions - extensions has been removed. ERROR in Error: Child compilation failed: [eslint] Invalid Options: - Unknown options: extensions - extensions has b…...

消息传递神经网络(Message Passing Neural Networks, MPNN)
消息传递神经网络(Message Passing Neural Networks, MPNN) 一、引言二、消息传递框架概述1.消息传递阶段(1)消息生成与传播-message(2)消息聚合-aggregate(3)消息更新-update&#…...

常用图像变换方法
伽马变换: void gamma_transform(cv::Mat &img, double gamma) {cv::Mat normalized;img.convertTo(normalized, CV_64F...

从被动响应到主动帮助,ProActive Agent开启人机交互新篇章
在人工智能领域,我们正见证着一场革命性的变革。传统的AI助手,如ChatGPT,需要明确的指令才能执行任务。但现在,清华大学联合面壁智能等团队提出了一种全新的主动式Agent交互范式——ProActive Agent,它能够主动观察环境…...

力扣hot100道【贪心算法后续解题方法心得】(三)
力扣hot100道【贪心算法后续解题方法心得】 十四、贪心算法关键解题思路1、买卖股票的最佳时机2、跳跃游戏3、跳跃游戏 | |4、划分字母区间 十五、动态规划什么是动态规划?关键解题思路和步骤1、打家劫舍2、01背包问题3、完全平方式4、零钱兑换5、单词拆分6、最长递…...

工业齐套管理虚拟现实仿真模拟软件
工业齐套管理虚拟现实仿真模拟软件是与法国最大的汽车制造商合作开发的一款虚拟现实仿真模拟软件,借助身临其境的虚拟现实环境,无需停止生产线,即可模拟仓库和提货区域。 工业齐套管理虚拟现实仿真模拟软件不仅适用于汽车工业,安全…...