AlexNet论文翻译与精读

1:该论文解决了什么问题?

图像分类问题

2:该论文的创新点?

1:使用了大的深的卷积神经网络进行图像分类;

2:采用了两块GPU进行分布式训练;

3:采用了Relu进行训练加速;

4:采用局部归一化提高模型泛化能力;

5:重叠池化,充分利用信息,提高精度;

6:dropout减少神经元之间的依赖性,提高模型泛化能力;

3:训练策略?

1:使用SGD(随机梯度下降)来训练,每个batch128,动量为0.9,权重衰减为0.0005(防止过拟合,在损失函数中添加一个惩罚项,对网络的权重进行约束,使其趋向于较小的值);

2:使用方差为0.1 均值为0的分布来初始化权重,用常数1来初始化第二、四、五层卷积和全连接隐藏层的偏置;

3:学习率初始化为0.1,当验证集的精度不再提高时,将学习率除以10;

4:代码地址?

5:论文还有什么改进之处?

1:对视频流进行处理,利用时间特征

摘要

我们训练了一个庞大而深层的卷积神经网络,用于将ImageNet LSVRC-2010比赛中的120万高分辨率图像分为1000个不同的类别。在测试数据上,我们取得了37.5%的top-1错误率和17.0%的top-5错误率,这明显优于先前的最先进水平。这个神经网络具有6000万参数和65万个神经元,包括五个卷积层,其中一些后面跟随着最大池化层,以及三个全连接层,最终通过一个包含1000个类别的softmax层。为了加快训练速度,我们使用了非饱和神经元以及卷积操作的高效GPU实现。为了减少全连接层的过拟合,我们采用了一种最近开发的正则化方法,称为“dropout”,证明非常有效。我们还参加了该模型的一种变体在ILSVRC-2012比赛中,并取得了15.3%的top-5测试错误率的胜利,而第二名的成绩为26.2%。

1:训练了一个很大很深的卷积神经网络在ImageNet上进行1000个种类的分类任务;

2:top1的精度达到了62.5%;

3:该网络包含了五个卷积层以及全连接层;

4:采用了两块gpu进行分布式训练;

5:对于overfitting问题采用了dropout。

介绍

目前,目标识别的方法主要依赖于机器学习技术。为了提高它们的性能,我们可以收集更大的数据集,学习更强大的模型,并使用更好的防止过拟合的技术。直到最近,带标签的图像数据集相对较小,大约只有数万张图像(例如,NORB [16],Caltech-101/256 [8, 9],和CIFAR-10/100 [12])。对于这个大小的数据集,简单的识别任务可以得到很好的解决,特别是如果它们通过保持标签的转换进行增强。例如,目前在MNIST数字识别任务上的最佳错误率(<0.3%)接近人类表现 [4]。但是,在现实环境中的对象表现出相当大的变化,因此为了学会识别它们,需要使用更大的训练集。实际上,小图像数据集的缺点已经被广泛认识到(例如,Pinto等人 [21]),但直到最近才有可能收集包含数百万张图像的带标签数据集。新的大型数据集包括LabelMe [23],其中包含数十万张完全分割的图像,以及ImageNet [6],其中包含超过1500万张在超过22,000个类别中标记的高分辨率图像。

为了从数百万张图像中学习数千个对象,我们需要一个具有很大学习能力的模型。然而,对象识别任务的巨大复杂性意味着即使是像ImageNet这样的数据集也无法明确定义这个问题,因此我们的模型还应该具有大量的先验知识来弥补我们没有的所有数据。卷积神经网络(CNNs)构成了这类模型的一种 [16, 11, 13, 18, 15, 22, 26]。它们的容量可以通过改变它们的深度和广度来控制,而且它们还对图像的性质(即,统计的静止性和像素依赖性的局部性)提出了强有力且大多数正确的假设。因此,与具有类似大小层的标准前馈神经网络相比,CNN具有更少的连接和参数,因此更容易训练,而它们在理论上的最佳性能可能只稍微差一些。尽管CNN具有吸引人的特性,并且尽管它们的本地架构相对高效,但将其大规模应用于高分辨率图像仍然是 prohibitively expensive。幸运的是,与高度优化的2D卷积实现相结合的当前GPU足够强大,可以促使大规模CNN的训练,而像ImageNet这样的最新数据集包含足够的标记示例,可以在没有严重过拟合的情况下训练这些模型。

这篇论文的具体贡献如下:我们在ILSVRC-2010和ILSVRC-2012比赛 [2] 中使用ImageNet子集上训练了迄今为止最大的卷积神经网络,并在这些数据集上取得了迄今为止报告的最佳结果。我们编写了高度优化的2D卷积的GPU实现和所有卷积神经网络训练中固有的其他操作,并将其公开1。我们的网络包含一些新颖且不寻常的特性,可以提高其性能并减少其训练时间,详细介绍在第3节。我们网络的规模使得过拟合成为一个重要的问题,即使有120万张带标签的训练样本,因此我们采用了一些有效的防止过拟合的技术,详见第4节。我们最终的网络包含五个卷积层和三个全连接层,这个深度似乎很重要:我们发现去除任何一个卷积层(每个卷积层不超过模型参数的1%)都会导致性能下降。最终,网络的规模主要受限于当前GPU上可用的内存量和我们愿意容忍的训练时间。我们的网络在两个GTX 580 3GB GPU上训练需要五到六天。我们所有的实验证明,我们的结果只需等待更快的GPU和更大的数据集即可改进。

1:现实物体的识别需要较大的数据集,例如LabelMe 和ImagNet;

2:卷积网络可以通过深度和宽度来控制其识别能力;

3:编写了一个高性能程序让gpu可以很好的训练2D卷积;

4:经过实验,发现卷积网路的深度很重要;

数据集

ImageNet是一个包含超过1500万张带标签的高分辨率图像,属于大约22,000个类别。这些图像是从网络上收集的,并由人类标签员使用亚马逊的Mechanical Turk众包工具进行标注。自2010年起,作为Pascal视觉对象挑战的一部分,每年都会举行一场名为ImageNet大规模视觉识别挑战(ILSVRC)的比赛。ILSVRC使用ImageNet的一个子集,每个子集中有大约1000个类别的大约1000张图像。总共有大约120万张训练图像,5万张验证图像和15万张测试图像。

ILSVRC-2010是ILSVRC唯一版本,测试集标签可用,因此这是我们进行大部分实验的版本。由于我们还参加了ILSVRC-2012比赛,因此在第6节中,我们还报告了我们在该数据集版本上的结果,该版本的测试集标签不可用。在ImageNet上,通常会报告两种错误率:top-1和top-5,其中top-5错误率是模型认为最有可能的五个标签中正确标签的图像所占的比例。

ImageNet包含可变分辨率的图像,而我们的系统需要一个常数输入的维度。因此,我们将图像下采样到固定分辨率256×256。对于给定的矩形图像,我们首先将图像重新缩放,使较短的一侧长度为256,然后从结果图像中裁剪出中央的256×256补丁。我们没有以任何其他方式预处理图像,除了从每个像素中减去训练集上的均值活动。因此,我们在(居中的)原始RGB值的像素上训练我们的网络。

1:ImageNet有1.5亿张高达22000个种类并且由人工进行标注的图片;

2:并没有对图像进行预处理,在原始的RGB上进行网络的训练。

结构

我们网络的架构总结如图2所示。它包含八个学习层,其中包括五个卷积层和三个全连接层。以下是我们网络架构中一些新颖或不同寻常的特性。根据我们对它们重要性的估计,Sections 3.1-3.4 按重要性排序,首先是最重要的。

relu非线性

对于建模神经元输出 f 作为输入 x 的标准方法是使用 f(x) = tanh(x) 或 f(x) = (1 + e^(-x))^(-1)。在使用梯度下降进行训练时,这些饱和非线性相比于不饱和非线性 f(x) = max(0, x) 要慢得多。根据 Nair 和 Hinton [20] 的方法,我们将使用这种非线性的神经元称为修正线性单元(Rectified Linear Units,ReLUs)。使用 ReLUs 的深度卷积神经网络训练速度比使用 tanh 单元的相应网络要快几倍。这在图1中得到了证明,图中显示了在 CIFAR-10 数据集上达到25%训练误差所需的迭代次数,对比了一个特定的四层卷积网络。这个图表显示,如果使用传统的饱和神经元模型,我们将无法在这项工作中尝试如此大型的神经网络。

我们并不是第一个考虑在CNNs中使用传统神经元模型的替代方法的研究者。例如,Jarrett 等人 [11] 声称非线性 f(x) = |tanh(x)| 与他们在 Caltech-101 数据集上进行的对比度归一化后的局部平均池化特别配合。然而,在这个数据集上,主要关注的是防止过拟合,因此他们观察到的效果与我们使用 ReLUs 时报告的更快适应训练集的能力是不同的。更快的学习对于在大型数据集上训练的大型模型的性能有很大的影响。

1:relu可以大大减少神经网络的训练时间;

2:如图所示训练时间对比,实线为relu,虚线为tanh;

3:

4:relu(x)=Max(0,x)

5:

多块GPU上训练

一块单独的GTX 580 GPU只有3GB的内存,这限制了可以在其上训练的网络的最大大小。事实证明,120万个训练样本足以训练网络,使其过大而无法适应一块GPU。因此,我们将网络分布在两个GPU上。当前的GPU特别适合跨GPU并行化,因为它们能够直接读取和写入彼此的内存,而无需通过主机机器内存。我们采用的并行化方案基本上将一半的卷积核(或神经元)放在每个GPU上,还有一个额外的技巧:GPU仅在某些层之间进行通信。这意味着,例如,第3层的卷积核从第2层的所有卷积核图中接收输入。然而,第4层的卷积核仅从同一GPU上驻留的第3层的卷积核图中接收输入。选择连接模式是交叉验证的一个问题,但这使我们能够精确调整通信量,直到它成为计算量的可接受的一部分。

由此产生的架构与Cireşan等人[5]采用的“columnar” CNN的架构有些相似,只是我们的列不是独立的(参见图2)。与在一块GPU上训练的每个卷积层中具有一半卷积核的网络相比,这种方案将我们的top-1和top-5错误率分别降低了1.7%和1.2%。两个GPU的网络训练时间略短于一个GPU的网络。

1:在当时,单块gpu的显存仅3GB,这无法训练一个大型的神经网络,因此采用了两块GPU进行分布式训练;

2:并行化方案采用的是讲一半的卷积核各放到一块gpu上,gpu仅在某些层进行交流,并且gpu之间可以先相互读取内存而不经过主机;

3:带来的结果就是降低了top1和top5的错误率,加快了训练。

局部归一化

ReLUs具有一个良好的特性,即它们不需要输入规范化来防止它们饱和。如果至少有一些训练样本对ReLU产生正输入,那么该神经元将发生学习。然而,我们仍然发现以下的局部归一化方案有助于泛化。用ai

x,y表示通过在位置(x,y)应用内核i然后应用ReLU非线性计算的神经元的活动,响应归一化活动bi

x,y由以下表达式给出,

其中总和是在相同的空间位置上运行的n个“相邻”内核图中进行的,N是该层中的内核总数。内核图的排序在训练开始之前当然是任意的并且是确定的。这种类型的响应归一化实现了一种受到真实神经元中发现的侧抑制启发的形式,即在使用不同内核计算的神经元输出之间创建大活动的竞争。常数k、n、α和β是通过验证集确定的超参数;我们使用了k = 2,n = 5,α = 10^(-4)和β = 0.75。我们在应用ReLU非线性之后的某些层次上应用了这种归一化(参见第3.5节)。这个方案与Jarrett等人的局部对比度归一化方案[11]有些相似,但我们更正确地称之为“亮度归一化”,因为我们不减去平均活动。响应归一化将我们的top-1和top-5错误率分别降低了1.4%和1.2%。我们还在CIFAR-10数据集上验证了这种方案的有效性:一个四层CNN在没有归一化的情况下达到了13%的测试错误率,而在使用归一化的情况下为11%。

1:虽然Relu不需要归一化来防止饱和,但依然发现了一种归一化方法来提高模型的泛华能力;(泛华:模型在未见过的数据集的能力)

2:仅在某些层使用Relu后使用该归一化,因此称为局部响应归一化,这一操作同样降低了top1和5的错误率;

重叠池化

在CNNs中,池化层总结了同一内核图中相邻的神经元组的输出。传统上,相邻的池化单元总结的邻域不重叠(例如,[17, 11, 4])。更准确地说,可以将池化层看作由相距s个像素的池化单元组成的网格,每个单元总结以池化单元为中心的大小为z×z的邻域。如果设置s = z,则得到在CNNs中常用的传统局部池化。如果设置s < z,则得到重叠池化。这是我们在整个网络中使用的方案,其中s = 2,z = 3。与非重叠方案s = 2,z = 2相比,该方案分别将top-1和top-5错误率降低了0.4%和0.3%,而产生的输出具有相等的维度。在训练过程中,我们通常观察到具有重叠池化的模型稍微更难过拟合。

1:池化通常用来降低卷积层之后结果的维度;

2:不仅可以提升精度,还可以防止过拟合;

3:池化步长小于池化窗口,再池化的过程中添加相邻像素的信息以重新或得非重叠部分失去的特征;

整体架构

现在我们准备描述我们CNN的总体架构。如图2所示,该网络包含八个具有权重的层;前五个是卷积层,其余三个是全连接层。最后一个全连接层的输出被馈送到一个有1000个节点的softmax层,该层产生了对1000个类标签的分布。我们的网络最大化多项式逻辑回归目标,这等效于最大化在预测分布下正确标签的对数概率的训练案例的平均值。

第二、第四和第五个卷积层的卷积核仅与前一层中驻留在相同GPU上的卷积核图相连接(见图2)。第三个卷积层的卷积核与第二层中的所有卷积核图相连接。全连接层中的神经元与前一层中的所有神经元相连接。响应归一化层跟随第一和第二个卷积层。在第五个卷积层后,还有一个在第3.4节中描述的max-pooling层,以及类似的响应归一化层。ReLU非线性应用于每个卷积和全连接层的输出。

第一个卷积层使用大小为11×11×3的96个卷积核,步幅为4个像素(这是相邻内核图中相邻神经元的感受野中心之间的距离)对224×224×3的输入图像进行滤波。第二个卷积层以第一个卷积层的(响应归一化和池化后的)输出作为输入,并使用大小为5×5×48的256个卷积核进行滤波。第三、第四和第五个卷积层相互连接,没有任何中间的池化或归一化层。第三个卷积层有384个大小为3×3×256的卷积核,连接到第二个卷积层的(归一化、池化后的)输出。第四个卷积层有384个大小为3×3×192的卷积核,而第五个卷积层有256个大小为3×3×192的卷积核。全连接层每个有4096个神经元。

1:结构如图所示,包含了五个卷积和三个全连接;

2:网络被分为两个部分,各自训练各自的;

3:第二个卷积层的输出进行了一个交叉,也就是第三个卷积层的输入,此时两个GPU互相交换参数;

4:第一个、第二个卷积层使用了LRN(局部归一化);

5:第一个、第二个、第五个卷积层使用了最大池化。

减少过拟合

我们的神经网络架构有6000万个参数。尽管ILSVRC的1000个类别使得每个训练样本对从图像到标签的映射施加10位约束,但这事实证明对于学习如此多的参数而言,这是不足的,会导致相当严重的过拟合。在下面,我们描述了我们对抗过拟合的两种主要方法。

数据增强

减轻图像数据过拟合的最简单和最常见方法是使用保持标签的转换人为地扩大数据集(例如,[25, 4, 5])。我们使用两种不同形式的数据增强,两者都允许通过对原始图像进行非常少的计算生成转换后的图像,因此不需要将转换后的图像存储在磁盘上。在我们的实现中,转换后的图像是在GPU在上一批图像上进行训练时在CPU上的Python代码中生成的。因此,这些数据增强方案在实际上是计算免费的。

第一种数据增强形式包括生成图像的平移和水平翻转。我们通过从256×256图像中提取随机的224×224裁剪(及其水平翻转)来实现这一点,并在这些提取的裁剪上训练我们的网络。这将我们的训练集的大小增加了2048倍,尽管得到的训练样本当然高度相关。如果没有这个方案,我们的网络将遭受严重的过拟合,这将迫使我们使用规模小得多的网络。在测试时,网络通过提取五个224×224裁剪(四个角裁剪和中心裁剪)以及它们的水平翻转(因此总共有十个裁剪),并对网络的softmax层在这十个裁剪上的预测进行平均,从而进行预测。

第二种数据增强形式包括改变训练图像中RGB通道的强度。具体来说,我们对整个ImageNet训练集中的RGB像素值执行PCA。对于每个训练图像,我们添加发现的主成分的倍数,其大小与相应的特征值成比例,乘以从均值为零、标准差为0.1的高斯分布中抽取的随机变量。因此,对于每个RGB图像像素Ixy = [IR xy, IG xy, IB xy]T,我们添加以下数量:

[p1,p2,p3][α1λ1,α2λ2,α3λ3]⊺[p1,p2,p3][α1​λ1​,α2​λ2​,α3​λ3​]⊺

其中pi和λi分别是RGB像素值的3×3协方差矩阵的第i个特征向量和特征值,αi是前述随机变量。每个αi仅对特定训练图像的所有像素绘制一次,直到再次用于训练该图像时,此时它将被重新绘制。这个方案大约捕捉了自然图像的一个重要特性,即物体的身份对照明的强度和颜色的变化是不变的。这个方案将top-1错误率降低了超过1%。

1:降低过拟合的方法之一就是人为的进行数据集扩充;

2:从256*256的图里随机提取224*224的块,这也是为什么结构里的输入为224*224;

3:对图片进行PCA(高维数据转换为低维数据,保留数据中的主要变化方向。在这里,PCA应用于RGB像素值,以找到它们之间的主要方向。)

Dropout

将许多不同模型的预测组合起来是降低测试误差的一种非常成功的方法[1, 3],但对于已经需要数天训练的大型神经网络来说,这似乎太昂贵了。然而,有一种在训练期间仅增加大约两倍成本的非常有效的模型组合版本。最近引入的技术称为“dropout” [10],它包括以0.5的概率将每个隐藏神经元的输出设置为零。以这种方式“丢弃”的神经元不会贡献于前向传播,并且不参与反向传播。因此,每次呈现输入时,神经网络会对不同的架构进行采样,但所有这些架构共享权重。这种技术减少了神经元的复杂相互适应,因为一个神经元不能依赖于特定其他神经元的存在。因此,它被迫学习更加健壮的特征,这些特征与其他神经元的许多不同的随机子集一起使用时是有用的。在测试时,我们使用所有神经元,但将它们的输出乘以0.5,这是对由指数多的dropout网络产生的预测分布取几何平均的合理近似。

我们在图2的前两个全连接层中使用了dropout。没有dropout,我们的网络表现出明显的过拟合。dropout大致使收敛所需的迭代次数加倍。

1:为了减少误差,降低训练成本,采用了dropout(随机失活法);

2:在学习的过程中进行神经元的随机失活,以降低各个模块的依赖性,提高鲁棒性。

训练细节

我们使用批量大小为128的随机梯度下降进行模型训练,动量为0.9,权重衰减为0.0005。我们发现这个小量的权重衰减对模型的学习很重要。换句话说,在这里,权重衰减不仅仅是一种正则化方法:它减小了模型的训练误差。权重w的更新规则如下:

其中i是迭代索引,v是动量变量,ηη是学习率,∂L∂wi∂wi​∂L​是在wi处评估的目标对w的导数的第i个批次Di的平均值。

我们从均值为零的高斯分布中初始化了每层的权重,标准差为0.01。在第二、第四和第五个卷积层以及全连接隐藏层中,我们将神经元的偏置初始化为常数1。此初始化通过为ReLUs提供正输入来加速学习的早期阶段。我们将其余层中的神经元偏置初始化为常数0。

我们使用相同的学习率对所有层进行训练,并在整个训练过程中手动进行调整。我们遵循的启发式方法是,当验证错误率在当前学习率下不再改善时,将学习率除以10。学习率初始化为0.01,在终止之前降低了三次。我们通过包含120万张图像的训练集大约进行了90个周期的网络训练,这在两个NVIDIA GTX 580 3GB GPU上花费了五到六天的时间。

1:使用SGD(随机梯度下降)来训练,每个batch128,动量为0.9,权重衰减为0.0005(防止过拟合,在损失函数中添加一个惩罚项,对网络的权重进行约束,使其趋向于较小的值);

2:使用方差为0.1 均值为0的分布来初始化权重,用常数1来初始化第二、四、五层卷积和全连接隐藏层的偏置;

3:学习率初始化为0.1,当验证集的精度不再提高时,将学习率除以10;

讨论

我们的结果表明,一个庞大而深层的卷积神经网络能够在一个极具挑战性的数据集上,仅通过监督学习就取得创纪录的成绩。值得注意的是,如果移除一个卷积层,我们网络的性能会下降。例如,移除任何一个中间层都会导致网络的top-1性能损失约2%。因此,深度对于取得我们的结果确实很重要。

为了简化我们的实验,我们没有使用任何无监督预训练,尽管我们预计这将是有帮助的,特别是如果我们获得足够的计算能力,可以显著增加网络的规模,而不需要相应地增加标记数据的数量。到目前为止,随着我们使网络更大并进行更长时间的训练,我们的结果已经有所改善,但为了匹配人类视觉系统的推理-颞路径,我们仍然需要进行多个数量级的进一步改进。最终,我们希望在视频序列上使用非常大而深的卷积网络,其中时间结构提供非常有用的信息,在静态图像中缺失或远不明显。

1:卷积神经网络的精度和深度有关;

2:对于视频,希望用大的深度神经网络去预测并利用好时间结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/311258.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DB2除法的小数位问题(四舍五入问题)以及其他常用的函数

DB2除法的小数位问题&#xff08;四舍五入问题&#xff09;以及其他常用的函数 1. DB2取第一条数据2. DB2 中指定值排序2.1 使用case when2.2 使用decode函数 3. 拼接函数4. 强制转换类型——cast函数5. DB2除法的小数位问题&#xff08;四舍五入问题&#xff09;5.1 关于round…

03.C++内存管理笔记

1、C/C内存分布 ①内存分那么多区的原因&#xff1a;不同的数据&#xff0c;有不同的存储需求&#xff0c;各区域满足了不同的需求。 ②存放&#xff1a; 临时变量等临时用的变量&#xff1a;栈区&#xff1b; 动态申请的变量&#xff1a;堆区&#xff1b; 全局变量和静态变…

计算机图形学作业:四阶Bezier曲线、三阶 B 样条曲线

3. 请给出四阶Bezier曲线的矩阵表示形式,并作图绘制出一段四阶Bezier 曲线,要求给出控制点的坐标。(共 20 分) 四阶Bezier曲线的矩阵表示形式为: P(t)=P0P1P2P3P41-46-4104-1212-4006-1260004-4000011ttt3t4 给出控制点为: P0(578,389),P1(1018,175),P2(1442,373),P3(1…

【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 在上次学习的内容中&#xff0c;我们讲解了&#xff1a; 使用DDL语句来操作数据库以及表结构&#xff08;数据库设计&…

构建labelstudio镜像的时候,报错node:18,如何解决

解决方案&#xff1a; vi Dockerfile # syntaxdocker/dockerfile:1.3 FROM --platformlinux/amd64 node:18.16-bullseye-slim AS frontend-builder18改成 18.16-bullseye-slim

CodeWave智能开发平台--03--目标:应用创建--09供应商详情页面下

摘要 本文是网易数帆CodeWave智能开发平台系列的第13篇&#xff0c;主要介绍了基于CodeWave平台文档的新手入门进行学习&#xff0c;实现一个完整的应用&#xff0c;本文主要完成09供应商详情页面下主营产品展示及权限管理 CodeWave智能开发平台的13次接触 CodeWave参考资源…

UE 引擎工具笔记

2023虚幻技术分享会视频 1.2023年虚幻引擎最新功能和技巧 [UFSH2023]2023年虚幻引擎最新功能和技巧 | Chris Murphy Epic Games_哔哩哔哩_bilibili 推荐细看下.总结了UE5的功能大概 2.调试技巧 [UFSH2023]总有一个你不知道的虚幻引擎调试技巧 | 陈拓 Epic Games_哔哩哔哩_…

2024.1.11 Kafka 消息队列,shell命令,核心原理

目录 一 . 消息队列 二. Kafka 三 . 启动命令 四 . Kafka的Shell 命令 五 . Kafka的核心原理 1. Topic的分区和副本机制 2 . 消息存储机制 和 查询机制 3. Kafka中生产者数据分发策略 六 . Kafka 之所以具有高速的读写性能&#xff0c;主要有以下几个原因 七. 笔记…

8年经验之谈 —— 服务端性能瓶颈定位思路总结!

01、软件性能测试目标 软件性能测试的目的主要有以下三点&#xff1a; 评价系统当前性能&#xff0c;判断系统是否满足预期的性能需求。 寻找软件系统可能存在的性能问题&#xff0c;定位性能瓶颈并解决问题。 判定软件系统的性能表现&#xff0c;预见系统负载压力&#xff…

Asynchronous FIFO and synchronous FIFO-翻译自外网

Synchronous FIFO 先进先出 (FIFO) 是一种非常流行且有用的设计块&#xff0c;用于模块之间的同步和握手机制。 FIFO 的深度&#xff1a; FIFO 中的槽数或行数称为 FIFO 的深度。 FIFO 的宽度&#xff1a;每个槽或行中可以存储的位数称为 FIFO 的宽度。 在同步 FIFO 中&…

特征工程-特征清洗

特征清洗 在进行玩特征理解后&#xff0c;我们大致理解了面对的数据中包含哪些内容。下一阶段&#xff0c;我么需要对数据中的内容进行进一步分析处理&#xff0c;针对不同数据进行清洗。数据清洗是对数据进行重新审查和校验的过程&#xff0c;目的在于删除重复信息、纠正存在…

基于css实现动画效果

介绍 本文将会基于css&#xff0c;实现各种动画效果&#xff0c;接下来会从简单几个例子入手。 案例 三颗球 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><title>React App</title><style>…

软件测试|Python requests库的安装和使用指南

简介 requests库是Python中一款流行的HTTP请求库&#xff0c;用于简化HTTP请求的发送和处理&#xff0c;也是我们在使用Python做接口自动化测试时&#xff0c;最常用的第三方库。本文将介绍如何安装和使用requests库&#xff0c;以及一些常见的用例示例。 安装requests库 首…

Fenwick Tree——树状数组

问题陈述&#xff1a; 你得到一个长度为 N 的数组为 a0,a1,a2……an-1。处理以下类型的查询&#xff0c;一共有 Q 次查询。 0 p x : ap⬅ap x 1 l r : 打印 ai ( il 到 ir-1 的 ai 之和) 约束&#xff1a; 1 ≤ N,Q ≤ 500000 0 ≤ ai,x ≤ 1e9 0 ≤ p < N 0 ≤ li <…

算法训练营Day43(完全背包[组合排列])

完全背包理论 正序遍历&#xff0c;先背包先物品都可以&#xff0c; 正序遍历的话&#xff0c;之前的物品价值还在&#xff0c;可以用上。 物品和背包都是有前面推出来&#xff0c;都可以。 但是其他的非纯理论的完全背包问题就要看场景&#xff0c;确定先背包还是先物品了 //先…

Google Pixel 与 iPhone手机:哪个更好?

iPhone稳定可靠&#xff0c;Pixel性价比高且创新。两者各有千秋&#xff0c;满足不同需求 谷歌的 Pixel 手机是 Android 最接近 iPhone 的手机&#xff0c;也是真正原生的Android手机。在iPhone 15 Pro Max 与华为 Mate 60 Pro的比较中不难看出&#xff0c;iPhone依然有着极强…

SAP 获取物料/批次/订单的特性值(学习一)

1、事务码 MSC1N、MSC2N、MSC3N 2、常用表 MCH1、MCHA、AUSP、MCH*开头的几个 3、批次 1、创建批次 BAPI&#xff1a;BAPI_BATCH_CREATE 2、修改批次 BAPI&#xff1a;BAPI_BATCH_CHANGE 3、删除批次 BAPI&#xff1a;BAPI_BATCH_DELETE 4、获取批次明细 BAPI&…

vpp node 及 vpp 多线程

node 注册 node注册&#xff0c;即宏VLIB_REGISTER_NODE(x, ...)流程&#xff1a; 创建vlib_node_registration_t x&#xff1b;vlib_node_registration_t结构只是存放了用户提供的node相关信息。把x添加到全局变量vlib_global_main中的node_registrations链表中&#xff08;…

本地开发环境请求服务器接口跨域的问题(vue的问题)

上面的这个报错大家都不会陌生&#xff0c;报错是说没有访问权限&#xff08;跨域问题&#xff09;。本地开发项目请求服务器接口的时候&#xff0c;因为客户端的同源策略&#xff0c;导致了跨域的问题。下面先演示一个没有配置允许本地跨域的的情况&#xff1a; 可以看到&…

如何在数学建模竞赛中稳定拿奖

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…