网站托管做的好的公司/排名优化公司口碑哪家好
内容来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。
文章目录
- 训练集、验证集、测试集
- 偏差、方差
- 正则化
- 正则化参数
- 为什么正则化可以减少过拟合
- Dropout正则化
- Inverted Dropout
- 其他的正则化方法
- 数据增广
- Early stopping
- 归一化
- 梯度消失与梯度爆炸
- 产生原因
- 权重初始化
- He初始化
- Xavier初始化
- 梯度检验
- 梯度的数值逼近
- 步骤(如上图)
- 一些建议
训练集、验证集、测试集
- 训练集:用于训练模型的数据集。通过学习训练集中的数据特征和标签之间的关系,来调整自身的参数,以尽可能准确地对数据进行拟合。
- 验证集:在模型训练过程中对模型进行评估和调整。在训练过程中,使用验证集可以监控模型的性能,如准确率、损失函数值,根据验证集上的表现来选择最优的模型参数。
- 测试集:在模型训练和调优完成后,最终评估模型的性能。是一组完全独立于训练集和验证集的数据,测试模型在实际应用中的泛化能力和准确性,判断模型是否能够很好地处理未见过的数据。
一般来说,数据集按照6:2:2或7:2:1的比例划分为训练集、验证集和测试集。对于数据量非常大的数据集,验证集和测试集的比例可以降低,比如95:2.5:2.5;而对于数据量较小的数据集,可以使用上述的原则。
有的时候会遇到这样的场景:训练一个识别猫的模型,训练的时候使用的训练集是大小固定,分辨率较低的图片,但是在测试的时候使用的验证集、测试集是随机大小的,分辨率比较高的图片。这两类图片是不同的,应该确保训练集和验证机、测试集的数据是同一个分布。
在训练集上训练数据,尝试使用不同的模型框架;在验证集上评估这些模型,迭代选出适用的模型;最后测试。
偏差、方差
偏差
是模型的预测值(期望输出)与真实值之间的差异。高偏差意味着模型过于简单,不能很好地捕捉数据中的复杂模式和特征,导致模型在训练集和测试集上的表现都较差,出现欠拟合现象。
方差
描述的是模型对于给定数据集的预测结果的离散程度。如果模型在不同的训练数据集上训练后,得到的模型参数差异很大,导致预测结果波动较大,那么这个模型的方差就很高。高方差通常是因为模型过于复杂,对训练数据中的噪声和特定样本的特征过度拟合,在训练集上表现很好,但在测试集等新数据上表现不佳,出现过拟合现象。
偏差反映的是模型本身的拟合能力。从数学角度看,偏差衡量的是模型的期望预测与真实值之间的偏离程度;方差衡量的是模型预测结果的稳定性。
- 左图 - high bias(高偏差):也叫
欠拟合
。模型过于简单,无法很好地捕捉数据中的规律和特征,导致在训练集上的表现就很差,对数据的拟合程度低。图中用一条简单的直线去划分两类数据点(圆圈和叉叉),明显没有很好地分开数据,在训练集上的误差就较大,更不用说在新数据上的表现了。 - 中图 - just right(正好):也叫
适度拟合
。模型复杂度适中,能够较好地学习到数据中的模式,既不会过于简单而无法拟合数据,也不会过于复杂而只对训练数据表现好。图中用一条曲线比较合理地划分了两类数据点,在训练集上有较好的拟合效果,同时也有较好的泛化能力,在新数据上也能有不错的表现。 - 右图 - high variance(高方差):也叫
过拟合
。模型过于复杂,把训练数据中的一些偶然的特征也学习了进去,导致在训练集上表现非常好,几乎能完美拟合训练数据,但在新数据上表现很差,泛化能力弱。图中曲线过度地围绕着数据点,甚至把一些可能是误差的数据点也考虑进去了,虽然在训练集上误差极小,但在新数据上难以有好的表现。
在二维中可以直接可视化偏差和方差。但是在更多维中描述较为困难,使用几个指标来描述偏差和方差。
识别一张猫的图片,假设人的识别率是0%的错误。
- 在训练集和测试集上错误率分别为1%和11%:说明模型对训练集过拟合,对新的数据表现较差,称为高方差。
- 在训练集和测试集上错误率分别为15%和16%:说明模型对训练集欠拟合,对新的数据表现也较差,称为高偏差。
- 在训练集和测试集上错误率分别为15%和30%:说明模型对训练集欠拟合,但是对新的数据表现更差,称为高偏差和高方差。
- 在训练集和测试集上错误率分别为0.5%和1%:说明模型对训练集和新的数据表现均较好,称为低偏差和低方差。
图中训练集的紫色部分表现为高方差和高偏差。两边部分几乎是一条直线,欠拟合,表现为高偏差,但是中间部分很灵活,对一些可能的错误点过拟合,(在新的数据上表现较差)表现为高方差。
对于高偏差的问题,尝试选择一个新的网络、花费更多时间去训练或者尝试更先进的优化算法,一直到解决这个问题。当偏差降低到可以接受的范围时,查看验证集性能,检查方差是否有问题。若方差较高,需要更多的数据去验证或寻找更合适的神经网络,但是有的时候并不能找到更多的数据的时候,可以采用正则化
来减少过拟合。做到具体问题具体分析,比如算法存在高偏差的问题,采用更多的数据去训练作用则效果不大。
正则化
正则化参数
在模型的损失函数中添加一个惩罚项,对模型的参数进行约束。
以线性回归模型为例,其原始损失函数为 L ( w , b ) = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 L(w,b)=\frac{1}{n}\sum_{i = 1}^{n}(y_{i}-\hat{y}_{i})^2 L(w,b)=n1∑i=1n(yi−y^i)2,添加正则化项后变为 L ( w , b ) = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 + λ 2 m R ( w ) L(w,b)=\frac{1}{n}\sum_{i = 1}^{n}(y_{i}-\hat{y}_{i})^2+ \frac{\lambda}{2m} R(w) L(w,b)=n1i=1∑n(yi−y^i)2+2mλR(w)。其中 λ \lambda λ是正则化系数,用于控制正则化的强度。 2 m 2m 2m是样本数量的2倍,数字2主要是为了求导的方便。 R ( w ) R(w) R(w)是正则化项,它对模型参数 w w w进行约束,使模型参数不会过大,避免模型过于复杂而出现过拟合。
正则化项取 R ( w ) = ∑ j = 1 m w j 2 = w T w R(w)=\sum_{j=1}^{m}w_{j}^{2}=w^Tw R(w)=j=1∑mwj2=wTw称为L2正则化(岭回归)
,对模型参数的平方求和。L2正则化使得 参数趋于较小的值,但不会使参数变为0,通过减小参数的量级来降低模型的复杂度,防止过拟合。
L2距离(欧几里得距离):
- 在二维空间中:假设有两个点 P ( x 1 , y 1 ) P(x_1,y_1) P(x1,y1)和 Q ( x 2 , y 2 ) Q(x_2,y_2) Q(x2,y2),它们之间的L2距离 d ( P , Q ) d(P,Q) d(P,Q)计算公式为 d ( P , Q ) = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 d(P,Q)=\sqrt{(x_2 - x_1)^2+(y_2 - y_1)^2} d(P,Q)=(x2−x1)2+(y2−y1)2 。几何意义是两点之间直线段的长度。
- 在n 维空间中:对于两个 n 维向量 x = ( x 1 , x 2 , ⋯ , x n ) \mathbf{x}=(x_1,x_2,\cdots,x_n) x=(x1,x2,⋯,xn)和 y = ( y 1 , y 2 , ⋯ , y n ) \mathbf{y}=(y_1,y_2,\cdots,y_n) y=(y1,y2,⋯,yn),它们之间的L2距离 d ( x , y ) d(\mathbf{x},\mathbf{y}) d(x,y)的计算公式为 d ( x , y ) = ∑ i = 1 n ( y i − x i ) 2 d(\mathbf{x},\mathbf{y})=\sqrt{\sum_{i = 1}^{n}(y_i - x_i)^2} d(x,y)=∑i=1n(yi−xi)2 。
正则化系数 λ \lambda λ是一个超参数,需要通过验证集等方法进行调整。 λ \lambda λ值过小,正则化效果不明显,无法有效防止过拟合; λ \lambda λ值过大,会过度约束模型参数,导致模型过于简单,出现欠拟合。采用交叉验证等方法,在不同的 λ \lambda λ取值下训练模型并在验证集上评估性能指标,选择使验证集性能最优的 λ \lambda λ值。
反向传播的时候,不要忘记对惩罚项的求导。
d w = ( 原损失函数求导的结果 ) + λ m w [ l ] \mathbf{d}w=(原损失函数求导的结果) + \frac{\lambda}{m}w^{[l]} dw=(原损失函数求导的结果)+mλw[l] w [ l ] : = w [ l ] − α d w [ l ] w^{[l]}:=w^{[l]}-\alpha\mathbf{d}w^{[l]} w[l]:=w[l]−αdw[l]
为什么正则化可以减少过拟合
对于该损失函数,若 λ \lambda λ足够大,求导后的 d w \mathbf{d}w dw也大,导致梯度下降的 w w w更小,当接近于0时,相当于将神经网络的多个隐藏单元权重设置为0,整个大的神经网络简化成一个小的神经网络,导致网络欠拟合,更接近于高偏差的神经网络。在调整 λ \lambda λ的过程中,总有个值让神经网络适度拟合。
实际上不是隐藏单元消失了,而是其权重变的更小。
Dropout正则化
对于左边的过拟合的神经网络,采用Dropout正则化
,在模型训练过程中,Dropout以一定的概率随机 丢弃(设置为 0)神经网络中隐藏层和输入层的一些神经元。右图中,假设有遍历每一层的神经元,假设每个神经元有50%的概率被丢弃。
Inverted Dropout
在普通Dropout中,训练时以概率 p p p随机将神经元的输出设置为0,测试时所有神经元都正常工作,这就导致训练和测试阶段网络的行为存在差异,测试时需要对网络输出进行额外的缩放调整来匹配训练时的预期输出。
反向随机失活(Inverted Dropout)在训练阶段对激活值进行缩放补偿,使测试阶段无需额外调整。具体做法是:在训练时,对于每个神经元,以概率 p p p将其输出设置为0,同时将保留(未被丢弃)的神经元输出除以 1 − p 1 - p 1−p 。这样做的效果是,训练阶段神经元输出的期望值与测试阶段所有神经元都正常工作时的期望值保持一致。
假设一个神经元在未应用Dropout时的输出为 x x x ,Dropout概率为 p = 0.5 p = 0.5 p=0.5 。
- 普通Dropout训练:该神经元有 0.5 0.5 0.5的概率输出为0, 0.5 0.5 0.5的概率输出为 x x x,其输出的期望值为 0.5 × 0 + 0.5 × x = 0.5 x 0.5\times0 + 0.5\times x = 0.5x 0.5×0+0.5×x=0.5x 。测试时,所有神经元正常工作,输出为 x x x ,因此测试时需要将训练阶段的输出乘以2来匹配测试时的输出。
- inverted dropout训练:该神经元有 0.5 0.5 0.5的概率输出为0, 0.5 0.5 0.5的概率输出为 x 1 − 0.5 = 2 x \frac{x}{1 - 0.5}=2x 1−0.5x=2x ,其输出的期望值为 0.5 × 0 + 0.5 × 2 x = x 0.5\times0 + 0.5\times2x = x 0.5×0+0.5×2x=x 。测试时,所有神经元正常工作,输出同样为 x x x ,无需额外调整。
每一层的概率(keep-prob)可以设置为不同的值,1表示全部保留。如果担心某些层比其他层更容易发生拟合,可以将该层的keep-prob设置的比其他层更低,但这样做缺点是需要使用交叉验证搜寻更多的超参数。
Dropout正则化的缺点是损失函数 J J J不再有明确的定义,从而不能很好地绘制损失函数图像。
其他的正则化方法
数据增广
如果想要通过扩增训练数据来解决过拟合问题,但是扩增数据代价较高,这个时候,可以在原有的数据集上添加改变后的数据集来增加训练集(数据增广
)。比如对图片进行反转或者裁剪;对文字旋转或者变形。
Early stopping
在模型训练过程中,模型在训练集上的损失通常会不断降低,而在验证集上的损失会先下降,到达某一时刻后可能开始上升,这表明模型开始过拟合训练数据。Early stopping 会在训练过程中持续监控验证集上的性能指标,当验证集上的性能指标出现过拟合时,就停止训练。
Early stopping提前停止训练可能导致模型没有充分学习到数据中的所有有用信息,没有达到全局最优解,使得模型性能未达到理论上的最佳状态。
归一化
- 第一步,零均值化: μ = 1 m ∑ i = 1 m x ( i ) , x : = x − μ \mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)},\ x:=x-\mu μ=m1∑i=1mx(i), x:=x−μ。将数据的均值调整为 0 。有助于使数据在特征空间中分布更加对称,减少数据的偏置影响。
- 第二步,方差归一化: σ 2 = 1 m ∑ i = 1 m x ( i ) 2 , x / = σ 2 \sigma^2=\frac{1}{m}\sum_{i=1}^{m}x^{(i)^{2}},\ x/=\sigma^2 σ2=m1∑i=1mx(i)2, x/=σ2。调整数据的方差,使不同特征的方差保持一致。如果不同特征的方差差异较大,那么方差大的特征可能会在模型训练中占据主导地位,而方差小的特征的作用可能被忽视。
如果没有归一化,损失函数图像像一个狭长的碗,在这样的图上运行梯度下降法,在更新参数时步伐不一致,可能导致在某些方向上过度更新,而在其他方向上更新不足,为了照顾不同的方向,学习率需设置的较小,从而需要更多的迭代次数才能收敛到最优解,增加了训练时间和计算成本;归一化使得损失函数更加对称,算法可以更有效地调整参数,学习率可以设置的更大,花费更低的成本达到最优解。
梯度消失与梯度爆炸
- 梯度消失:在深度神经网络的反向传播过程中,梯度值随着网络层数的增加而逐渐变小,趋近于零。使得网络中靠近输入层的神经元的参数更新非常缓慢,甚至几乎不更新,导致模型无法学习到足够的信息,难以收敛到最优解。
- 梯度爆炸:与梯度消失相反,在反向传播过程中,梯度值随着网络层数的增加而变得越来越大,导致参数更新步长过大,使得模型无法稳定收敛,甚至可能导致参数值变为NaN(非数值)。
产生原因
- 激活函数选择:如果使用Sigmoid或Tanh等激活函数,它们的导数取值范围是有限的,Sigmoid函数的导数在输入值较大或较小时趋近于0。在深度网络中,经过多层的链式求导后,梯度会不断相乘,导致梯度值变得极小,从而引发梯度消失问题。
- 网络层数过深:随着网络层数的增加,反向传播时梯度需要经过多次乘法运算,这使得梯度值容易出现指数级的衰减(梯度消失)或增长(梯度爆炸)。
- 参数初始化不当:如果初始参数设置过大,在反向传播过程中可能会导致梯度爆炸;如果初始参数设置过小,则可能加剧梯度消失问题。
权重初始化
He初始化
当使用ReLU激活函数时,传统的初始化方法(如随机初始化)可能会导致某些神经元在训练初期就处于“死亡”状态(即输入小于0,输出恒为0),或者使得梯度在反向传播过程中迅速消失或爆炸。
He初始化是根据输入层的神经元数量来调整初始化参数的方差,使得每一层的输出方差在正向传播过程中保持大致不变,同时在反向传播时梯度的方差也能保持稳定,从而避免梯度消失和梯度爆炸问题,加速模型的收敛。
对于一个具有 n i n p u t (简写为 n i n ) n_{input}(简写为n_{in}) ninput(简写为nin)个输入神经元的全连接层,其权重参数 W W W的每个元素 w i j w_{ij} wij按照以下方式进行初始化:
- 从均值为0,标准差为 σ = 2 n i n \sigma = \sqrt{\frac{2}{n_{in}}} σ=nin2的正态分布中随机采样得到,即 w i j ∼ N ( 0 , 2 n i n ) w_{ij} \sim N(0, \frac{2}{n_{in}}) wij∼N(0,nin2)。
- 也可以从均匀分布 U ( − 6 n i n , 6 n i n ) U(-\sqrt{\frac{6}{n_{in}}}, \sqrt{\frac{6}{n_{in}}}) U(−nin6,nin6)中进行采样。
对于卷积层, n i n n_{in} nin表示输入通道数乘以卷积核的高度和宽度。
Xavier初始化
对于一个具有 n i n n_{in} nin 个输入神经元和 n o u t n_{out} nout 个输出神经元的全连接层,其权重参数 W W W 的每个元素 w i j w_{ij} wij 可以按照以下两种方式进行初始化:
- 正态分布初始化:从均值为 0,标准差为 σ = 2 n i n + n o u t \sigma = \sqrt{\frac{2}{n_{in} + n_{out}}} σ=nin+nout2 的正态分布中随机采样得到,即 w i j ∼ N ( 0 , 2 n i n + n o u t ) w_{ij} \sim N(0, \frac{2}{n_{in} + n_{out}}) wij∼N(0,nin+nout2)。
- 均匀分布初始化:从均匀分布 U ( − 6 n i n + n o u t , 6 n i n + n o u t ) U(-\sqrt{\frac{6}{n_{in} + n_{out}}}, \sqrt{\frac{6}{n_{in} + n_{out}}}) U(−nin+nout6,nin+nout6) 中进行采样。
Xavier初始化比较适用于使用Sigmoid、Tanh等传统激活函数的神经网络。
梯度检验
在实现复杂的神经网络和反向传播算法时,代码中可能会出现各种错误,如索引错误、矩阵运算错误等。梯度检验可以帮助我们及时发现这些错误,确保反向传播算法的实现是正确的。
梯度的数值逼近
由导数的定义可知。在微积分中,函数 f ( x ) f(x) f(x) 在某一点 x x x 处的导数可以用极限来近似表示:
f ′ ( x ) ≈ f ( x + ϵ ) − f ( x − ϵ ) 2 ϵ f'(x) \approx \frac{f(x + \epsilon)-f(x - \epsilon)}{2\epsilon} f′(x)≈2ϵf(x+ϵ)−f(x−ϵ)
其中 ϵ \epsilon ϵ 是一个非常小的正数。
在神经网络中,我们通过反向传播算法计算损失函数 J ( θ ) J(\theta) J(θ) 关于参数 θ \theta θ 的导数 ∂ J ∂ θ \frac{\partial J}{\partial \theta} ∂θ∂J,梯度检验就是将反向传播计算得到的梯度与使用上述近似公式计算得到的梯度进行比较,如果两者非常接近,则说明反向传播算法的实现是正确的。
g ( θ ) g(\theta) g(θ)是 f ( θ ) f(\theta) f(θ)的导数。
可以看出误差是0.0001,不是很大,说明该代码是正确的。
步骤(如上图)
- 定义损失函数和参数:明确神经网络的损失函数 J ( θ ) J(\theta) J(θ) 以及需要更新的参数 θ \theta θ。
- 初始化参数:给参数 θ \theta θ 赋予初始值。
- 使用反向传播计算梯度:通过反向传播算法计算损失函数 J ( θ ) J(\theta) J(θ) 关于参数 θ \theta θ 的梯度 ∇ θ J \nabla_{\theta}J ∇θJ(对损失函数求某个参数的导数)。
- 使用数值近似计算梯度:对于参数 θ \theta θ 中的每一个元素 θ i \theta_i θi,分别计算 J ( θ 1 , ⋯ , θ i + ϵ , ⋯ , θ n ) J(\theta_1, \cdots, \theta_i + \epsilon, \cdots, \theta_n) J(θ1,⋯,θi+ϵ,⋯,θn) 和 J ( θ 1 , ⋯ , θ i − ϵ , ⋯ , θ n ) J(\theta_1, \cdots, \theta_i - \epsilon, \cdots, \theta_n) J(θ1,⋯,θi−ϵ,⋯,θn),然后使用近似公式 ∂ J ∂ θ i ≈ J ( θ 1 , ⋯ , θ i + ϵ , ⋯ , θ n ) − J ( θ 1 , ⋯ , θ i − ϵ , ⋯ , θ n ) 2 ϵ \frac{\partial J}{\partial \theta_i} \approx \frac{J(\theta_1, \cdots, \theta_i + \epsilon, \cdots, \theta_n)-J(\theta_1, \cdots, \theta_i - \epsilon, \cdots, \theta_n)}{2\epsilon} ∂θi∂J≈2ϵJ(θ1,⋯,θi+ϵ,⋯,θn)−J(θ1,⋯,θi−ϵ,⋯,θn) 计算梯度的近似值。
- 比较两种梯度:计算反向传播得到的梯度 ∇ θ J \nabla_{\theta}J ∇θJ 和数值近似得到的梯度之间的差异,通常使用相对误差来衡量:
d = ∥ ∇ θ J − ∇ θ J a p p r o x ∥ 2 ∥ ∇ θ J ∥ 2 + ∥ ∇ θ J a p p r o x ∥ 2 d = \frac{\|\nabla_{\theta}J - \nabla_{\theta}J_{approx}\|_2}{\|\nabla_{\theta}J\|_2 + \|\nabla_{\theta}J_{approx}\|_2} d=∥∇θJ∥2+∥∇θJapprox∥2∥∇θJ−∇θJapprox∥2
其中 ∥ ⋅ ∥ 2 \|\cdot\|_2 ∥⋅∥2 表示向量的 L2 范数(L2距离)。如果相对误差 d d d 非常小(例如小于 1 0 − 7 10^{-7} 10−7),则说明反向传播算法的实现是正确的;否则,可能存在代码实现错误。
一些建议
- 梯度检验仅用于调试,不能训练过程中使用。
- 若算法未能通过梯度检验,检查各个值,比如如 d z \mathbf{d}z dz、 d w \mathbf{d}w dw、 d a \mathbf{d}a da,大概定位。
- 进行梯度检验时要考虑正则化项。
- 梯度检验不适用于带有随机失活(Dropout)的情况。
- 刚开始的时候初始化的W和b都很小,趋于0,而模型可能在W和b小的时候可以很好的计算梯度,但是当迭代了一段时间后,W和b变大,模型可能会在这一部分存在问题,因此这个时候在开启梯度检验比较合适。
相关文章:

吴恩达深度学习——有效运作神经网络
内容来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。 文章目录 训练集、验证集、测试集偏差、方差正则化正则化参数为什么正则化可以减少过拟合Dropout正则化Inverted Dropout其他的正则化方法数据增广Early stopping 归一化梯度消失与梯度爆…...

享元模式——C++实现
目录 1. 享元模式简介 2. 代码示例 1. 享元模式简介 享元模式是一种结构型模式。 享元模式用于缓存共享对象,降低内存消耗。共享对象相同的部分,避免创建大量相同的对象,减少内存占用。 享元模式需要将对象分成内部状态和外部状态两个部分…...

【Go语言圣经】第五节:函数
第五章:函数 5.1 函数声明 和其它语言类似,Golang 的函数声明包括函数名、形参列表、返回值列表(可省略)以及函数体: func name(parameter-list) (result-list) {/* ... Body ... */ }需要注意的是,函数…...

win32汇编环境,窗口程序中使用进度条控件
;运行效果 ;win32汇编环境,窗口程序中使用进度条控件 ;进度条控件主要涉及的是长度单位,每步步长,推进的时间。 ;比如你的长度是1000,步长是100,每秒走1次,则10秒走完全程 ;比如你的长度是1000,步长是10&am…...

Vscode的AI插件 —— Cline
简介 vscode的一款AI辅助吃插件,主要用来辅助创建和编辑文件,探索大型项目,使用浏览器并执行终端命令(需要多个tokens),可以使用模型上下文协议(MCP)来创建新工具并扩展自己(比较慢…...

Flink (十三) :Table API 与 DataStream API 的转换 (一)
Table API 和 DataStream API 在定义数据处理管道时同样重要。DataStream API 提供了流处理的基本操作(即时间、状态和数据流管理),并且是一个相对低级的命令式编程 API。而 Table API 抽象了许多内部实现,提供了一个结构化和声明…...

Android --- handler详解
handler 理解 handler 是一套Android 消息传递机制,主要用于线程间通信。 tips: binder/socket 用于进程间通信。 参考: Android 进程间通信-CSDN博客 handler 就是主线程在起了一个子线程,子线程运行并生成message ,l…...

[EAI-023] FAST,机器人动作专用的Tokenizer,提高VLA模型的能力和训练效率
Paper Card 论文标题:FAST: Efficient Action Tokenization for Vision-Language-Action Models 论文作者:Karl Pertsch, Kyle Stachowicz, Brian Ichter, Danny Driess, Suraj Nair, Quan Vuong, Oier Mees, Chelsea Finn, Sergey Levine 论文链接&…...

关于贪心学习的文笔记录
贪心,顾名思义就是越贪越好,越多越有易,他给我的感觉是,通常是求最大或最小问题,相比于动态规划贪心让人更加琢磨不透,不易看出方法,为此在这记录我所见过的题型和思维方法,以便回头…...

SLAM技术栈 ——《视觉SLAM十四讲》学习笔记(一)
《视觉SLAM十四讲》学习笔记(一) 第2讲 初识SLAM习题部分 第3讲 三维空间刚体运动3.1 左手系与右手系3.2 齐次坐标3.3 旋转矩阵与变换矩阵3.4 正交群与欧式群3.5 旋转向量与欧拉角3.6 实践Eigen线性代数库3.6.1 QR分解(QR decomposition) 3.7 四元数到其…...

【ChatGPT:开启人工智能新纪元】
一、ChatGPT 是什么 最近,ChatGPT 可是火得一塌糊涂,不管是在科技圈、媒体界,还是咱们普通人的日常聊天里,都能听到它的大名。好多人都在讨论,这 ChatGPT 到底是个啥 “神器”,能让大家这么着迷?今天咱就好好唠唠。 ChatGPT,全称是 Chat Generative Pre-trained Trans…...

1. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--前言
在我们的专栏《单体开发》中,我们实现了一个简单的记账软件的服务端,并且成功上线。随着用户数量的不断增长,问题逐渐开始显现。访问量逐渐增加,服务端的压力也随之加大。随着访问量的攀升,服务端的响应时间变得越来越…...

量子力学初步:微观领域的科学之旅
飞书📚链接:量子力学篇 长尾 - 什么是量子力学 (未完成… 等有时间再看,前面的内容可以参考下,比如了解自旋、以及斯特恩-盖拉赫实验) 【量子力学篇-01期】经典物理学的终结,量子力学的开端 量…...

趣味Python100例初学者练习01
1. 1 抓交通肇事犯 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前…...

postgresql的用户、数据库和表
在 PostgreSQL 中,用户、数据库和表是关系型数据库系统的基本组成部分。理解这些概念对数据库管理和操作至关重要。下面是对这些概念的详细解释: 1. 用户(User) 在 PostgreSQL 中,用户(也称为 角色&#…...

对游戏宣发的粗浅思考
1.两极分化 认真观摩了mgs系列制作人的x账号, 其更新频率吓死人,一天能发几十条之多,吓死人。大部分都是转发相关账号的ds2或mgs相关内容, 每日刻意的供给这些内容来满足几十万粉丝需求,维护热情。 幕后是专业的公…...

【Java基础-42.3】Java 基本数据类型与字符串之间的转换:深入理解数据类型的转换方法
在 Java 开发中,基本数据类型与字符串之间的转换是非常常见的操作。无论是从用户输入中读取数据,还是将数据输出到日志或界面,都需要进行数据类型与字符串之间的转换。本文将深入探讨 Java 中基本数据类型与字符串之间的转换方法,…...

(9) 上:学习与验证 linux 里的 epoll 对象里的 EPOLLIN、 EPOLLHUP 与 EPOLLRDHUP 的不同
(1)经过之前的学习。俺认为结论是这样的,因为三次握手到四次挥手,到 RST 报文,都是 tcp 连接上收到了报文,这都属于读事件。所以: EPOLLIN : 包含了读事件, FIN 报文的正常四次挥手、…...

webpack传输性能优化
手动分包 基本原理 手动分包的总体思路是:先打包公共模块,然后再打包业务代码。 打包公共模块 公共模块会被打包成为动态链接库(dll Dynamic Link Library),并生成资源清单。 打包业务代码 打包时,如果…...

智能小区物业管理系统打造高效智能社区服务新生态
内容概要 随着城市化进程的不断加快,智能小区物业管理系统的出现,正逐步改变传统物业管理的模式,为社区带来了崭新的管理理念和服务方式。该系统不仅提升了物业管理效率,还加强了业主与物业之间的互动,为每位居民提供…...

(done) MIT6.S081 2023 学习笔记 (Day7: LAB6 Multithreading)
网页:https://pdos.csail.mit.edu/6.S081/2023/labs/thread.html (任务1教会了你如何用 C 语言调用汇编,编译后链接即可) 任务1:Uthread: switching between threads (完成) 在这个练习中,你将设计一个用户级线程系统中的上下文切…...

面试经典150题——栈
文章目录 1、有效的括号1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、最小栈3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 4、逆波兰表达式求值4.1 题目链接4.2 题目描述4.3 解题代码4.4 解题思路 5、基本…...

openmv的端口被拆分为两个 导致电脑无法访问openmv文件系统解决办法 openmv USB功能改动 openmv驱动被更改如何修复
我之前误打误撞遇到一次,直接把openmv的全部端口删除卸载然后重新插上就会自动重新装上一个openmv端口修复成功,大家可以先试试不行再用下面的方法 全部卸载再重新插拔openmv 要解决OpenMV IDE中出现的两个端口问题,可以尝试以下步骤&#x…...

自制虚拟机(C/C++)(三、做成标准GUI Windows软件,扩展指令集,直接支持img软盘)
开源地址:VMwork 要使终端不弹出, #pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") 还要实现jmp near 0x01类似的 本次的main.cpp #include <graphics.h> #include <conio.h> #include <windows.h> #includ…...

算法题(56):旋转链表
审题: 我们需要根据k的大小把链表向右移动对应次数,并返回移动后的链表的头结点指针 思路: 根据提示中的数据大小我们发现:k的值可以远大于节点数。 也就是说我们对链表的操作存在周期,如果k%len0,说明我们…...

解决PyG安装中torch-sparse安装失败问题:详细指南
1 问题描述 最近在学习GNN,需要使用PyTorch Geometric(PyG)库。在安装PyG的过程中,遇到了torch-sparse安装失败的问题,错误提示为: ERROR: Failed building wheel for torch-sparse本文将详细记录问题的解…...

如何创建折叠式Title
文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了SliverGrid组件相关的内容,本章回中将介绍SliverAppBar组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的SliverAppBar和普通的AppBar类似,它们的…...

go-zero学习笔记(三)
利用goctl生成rpc服务 编写proto文件 // 声明 proto 使用的语法版本 syntax "proto3";// proto 包名 package demoRpc;// golang 包名(可选) option go_package "./demo";// 如需为 .proto 文件添加注释,请使用 C/C 样式的 // 和 /* ... */…...

Wildcard工具详解:从入门到精通
1. Wildcard基础知识 什么是Wildcard? Wildcard(通配符)是一种用于匹配文件名或字符串的特殊字符。它允许用户使用简单的符号来表示复杂的匹配规则,从而快速定位目标文件或数据。 常见的Wildcard符号 *:匹配任意数量…...

冰蝎v3.0 beta7来啦
我用了一台kali,一台centos,一台windows,做了一个文件上传和一个反弹shell实验,载荷是AES加密的,终于感受到了对加密流量的无可奈何~ kali(php8.1)centos(php7.1)window…...