sheng的学习笔记-卷积神经网络经典架构-LeNet-5、AlexNet、VGGNet-16

news2024/11/16 3:47:27

目录:目录

看本文章之前,需要学习卷积神经网络基础,可参考  sheng的学习笔记-卷积神经网络-CSDN博客

目录

LeNet-5

架构图

层级解析

1、输入层(Input layer)

2、卷积层C1(Convolutional layer C1)

3、采样/池化层S2(Subsampling layer S2)

4、卷积层C3(Convolutional layer C3)

5、采样/池化层S4(Subsampling layer S4)

6、全连接层C5(Fully connected layer C5)

7、全连接层F6(Fully connected layer F6)

8、输出层(Output layer)

AlexNet

架构图

AlexNet 模型的特点

1)使用 ReLU 激活函数

2)数据扩充(Data augmentation)

3)重叠池化 (Overlapping Pooling)

4)局部归一化(Local Response Normalization,简称 LRN)

5)Dropout

6) 多 GPU 训练

详细的逐层解析

1、第一层(卷积层)

2、第二层(卷积层)

3、第三层(卷积层)

4、第四层(卷积层)

5、第五层(卷积层)

6、第六层(全连接层)

7、第七层(全连接层)

8、第八层(全连接层)

总结图

 VGG-16

架构图

参考文章:


卷积神经网络常用的架构:一个或多个卷积层后面跟着一个池化层,然后又是若干个卷积层再接一个池化层,然后是全连接层,最后是输出,这种排列方式很常用

LeNet-5

LeNet-5是一个经典的深度卷积神经网络,由Yann LeCun在1998年提出,旨在解决手写数字识别问题,被认为是卷积神经网络的开创性工作之一。该网络是第一个被广泛应用于数字图像识别的神经网络之一,也是深度学习领域的里程碑之一。

架构图

LeNet-5的基本结构包括7层网络结构(不含输入层),其中包括2个卷积层、2个降采样层(池化层)、2个全连接层和输出层

  •  从左往右看,随着网络越来越深,图像的高度和宽度在缩小,从最初的32×32缩小到28×28,再到14×14、10×10,最后只有5×5。与此同时,随着网络层次的加深,通道数量一直在增加,从1增加到6个,再到16个。这种架构,可以支持的入参 数量,没有那么多,对于高清图像的处理没那么好
  • LeNet-5的论文是在1998年撰写的,当时人们并不使用padding,或者总是使用valid卷积(不填充,padding为0),这就是为什么每进行一次卷积,图像的高度和宽度都会缩小

层级解析

1、输入层(Input layer)

输入层接收大小为 32×32 的手写数字图像,其中包括灰度值(0-255)。在实际应用中,我们通常会对输入图像进行预处理,例如对像素值进行归一化,以加快训练速度和提高模型的准确性。

2、卷积层C1(Convolutional layer C1)

卷积层C1包括6个卷积核,每个卷积核的大小为 5×5 ,步长为1,填充为0。因此,每个卷积核会产生一个大小为 28×28 的特征图(输出通道数为6)。

3、采样/池化层S2(Subsampling layer S2)

采样层S2采用最大池化(max-pooling)操作,每个窗口的大小为 2×2 ,步长为2。因此,每个池化操作会从4个相邻的特征图中选择最大值,产生一个大小为 14×14 的特征图(输出通道数为6)。这样可以减少特征图的大小,提高计算效率,并且对于轻微的位置变化可以保持一定的不变性。

4、卷积层C3(Convolutional layer C3)

卷积层C3包括16个卷积核,每个卷积核的大小为 5×5 ,步长为1,填充为0。因此,每个卷积核会产生一个大小为 10×10 的特征图(输出通道数为16)。

5、采样/池化层S4(Subsampling layer S4)

采样层S4采用最大池化操作,每个窗口的大小为 2×2 ,步长为2。因此,每个池化操作会从4个相邻的特征图中选择最大值,产生一个大小为 5×5 的特征图(输出通道数为16)。

6、全连接层C5(Fully connected layer C5)

C5将每个大小为 5×5 的特征图拉成一个长度为400的向量,并通过一个带有120个神经元的全连接层进行连接。120是由LeNet-5的设计者根据实验得到的最佳值。

7、全连接层F6(Fully connected layer F6)

全连接层F6将120个神经元连接到84个神经元。

8、输出层(Output layer)

输出层由10个神经元组成,每个神经元对应0-9中的一个数字,并输出最终的分类结果。在训练过程中,使用交叉熵损失函数计算输出层的误差,并通过反向传播算法更新卷积核和全连接层的权重参数。

AlexNet

2012 年,Alex Krizhevsky、Ilya Sutskever 在多伦多大学 Geoff Hinton 的实验室设计出了一个深层的卷积神经网络 AlexNet,夺得了 2012 年 ImageNet LSVRC 的冠军,且准确率远超第二名(top5 错误率为 15.3%,第二名为 26.2%),引起了很大的轰动。AlexNet 可以说是具有历史意义的一个网络结构,在此之前,深度学习已经沉寂了很长时间,自 2012 年 AlexNet 诞生之后,后面的 ImageNet 冠军都是用卷积神经网络(CNN)来做的,并且层次越来越深,使得 CNN 成为在图像识别分类的核心算法模型,带来了深度学习的大爆发。

架构图

AlexNet首先用一张227×227×3的图片作为输入,实际上原文中使用的图像是224×224×3,但是如果你尝试去推导一下,你会发现227×227这个尺寸更好一些。

  1. 第一层我们使用96个11×11的过滤器,步幅为4,由于步幅是4,因此尺寸缩小到55×55,缩小了4倍左右。
  2. 然后用一个3×3的过滤器构建最大池化层,f=3,步幅s为2,卷积层尺寸缩小为27×27×96。
  3. 接着再执行一个5×5的卷积,padding之后,输出是27×27×276。
  4. 然后再次进行最大池化,尺寸缩小到13×13。
  5. 再执行一次same卷积,相同的padding,得到的结果是13×13×384,384个过滤器。
  6. 再做一次same卷积。
  7. 再做一次同样的操作,
  8. 最后再进行一次最大池化,尺寸缩小到6×6×256。6×6×256等于9216,将其展开为9216个单元
  9. 然后是一些全连接层。
  10. 最后使用softmax函数输出识别的结果,看它究竟是1000个可能的对象中的哪一个。

实际上,这种神经网络与LeNet有很多相似之处,不过AlexNet要大得多。LeNetLeNet-5大约有6万个参数,而AlexNet包含约6000万个参数。当用于训练图像和数据集时,AlexNet能够处理非常相似的基本构造模块,这些模块往往包含着大量的隐藏单元或数据。

AlexNet网络结构看起来相对复杂,包含大量超参数,这些数字(55×55×96、27×27×96、27×27×256……)都是Alex Krizhevsky及其合著者不得不给出的。

AlexNet 模型的特点

AlexNet 之所以能够成功,跟这个模型设计的特点有关,主要有:

  • 使用了非线性激活函数:ReLU
  • 防止过拟合的方法:Dropout,数据扩充(Data augmentation)
  • 其他:多 GPU 实现,LRN 归一化层的使用

1)使用 ReLU 激活函数


传统的神经网络普遍使用 Sigmoid 或者 tanh 等非线性函数作为激励函数,然而它们容易出现梯度弥散或梯度饱和的情况。以 Sigmoid 函数为例,当输入的值非常大或者非常小的时候,这些神经元的梯度接近于 0(梯度饱和现象),如果输入的初始值很大的话,梯度在反向传播时因为需要乘上一个 Sigmoid 导数,会造成梯度越来越小,导致网络变的很难学习。
在 AlexNet 中,使用了 ReLU (Rectified Linear Units)激励函数,该函数的公式为:f (x)=max (0,x),当输入信号 < 0 时,输出都是 0,当输入信号 > 0 时,输出等于输入,如下图所示:

使用 ReLU 替代 Sigmoid/tanh,由于 ReLU 是线性的,且导数始终为 1,计算量大大减少,收敛速度会比 Sigmoid/tanh 快很多,如下图所示:

2)数据扩充(Data augmentation)

有一种观点认为神经网络是靠数据喂出来的,如果能够增加训练数据,提供海量数据进行训练,则能够有效提升算法的准确率,因为这样可以避免过拟合,从而可以进一步增大、加深网络结构。而当训练数据有限时,可以通过一些变换从已有的训练数据集中生成一些新的数据,以快速地扩充训练数据。
其中,最简单、通用的图像数据变形的方式:水平翻转图像,从原始图像中随机裁剪、平移变换,颜色、光照变换,如下图所示:

AlexNet 在训练时,在数据扩充(data augmentation)这样处理:
(1)随机裁剪,对 256×256 的图片进行随机裁剪到 224×224,然后进行水平翻转,相当于将样本数量增加了((256-224)^2)×2=2048 倍;
(2)测试的时候,对左上、右上、左下、右下、中间分别做了 5 次裁剪,然后翻转,共 10 个裁剪,之后对结果求平均。作者说,如果不做随机裁剪,大网络基本上都过拟合;
(3)对 RGB 空间做 PCA(主成分分析),然后对主成分做一个(0, 0.1)的高斯扰动,也就是对颜色、光照作变换,结果使错误率又下降了 1%。

3)重叠池化 (Overlapping Pooling)

一般的池化(Pooling)是不重叠的,池化区域的窗口大小与步长相同,如下图所示:


在 AlexNet 中使用的池化(Pooling)却是可重叠的,也就是说,在池化的时候,每次移动的步长小于池化的窗口长度。AlexNet 池化的大小为 3×3 的正方形,每次池化移动步长为 2,这样就会出现重叠。重叠池化可以避免过拟合,这个策略贡献了 0.3% 的 Top-5 错误率。

此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果

4)局部归一化(Local Response Normalization,简称 LRN)

局部响应归一层的基本思路是,假如这是网络的一块,比如是13×13×256,LRN要做的就是选取一个位置,比如说这样一个位置,从这个位置穿过整个通道,能得到256个数字,并进行归一化。进行局部响应归一化的动机是,对于这张13×13的图像中的每个位置来说,我们可能并不需要太多的高激活神经元

5)Dropout

引入 Dropout 主要是为了防止过拟合。在神经网络中 Dropout 通过修改神经网络本身结构来实现,对于某一层的神经元,通过定义的概率将神经元置为 0,这个神经元就不参与前向和后向传播,就如同在网络中被删除了一样,同时保持输入层与输出层神经元的个数不变,然后按照神经网络的学习方法进行参数更新。在下一次迭代中,又重新随机删除一些神经元(置为 0),直至训练结束。

其主要的思想是,随机减少中间层节点,减少每个节点对最终结果的影响,从而防止过拟合

6) 多 GPU 训练

AlexNet 当时使用了 GTX580 的 GPU 进行训练,由于单个 GTX 580 GPU 只有 3GB 内存,这限制了在其上训练的网络的最大规模,因此他们在每个 GPU 中放置一半核(或神经元),将网络分布在两个 GPU 上进行并行计算,大大加快了 AlexNet 的训练速度。

详细的逐层解析

下图是 AlexNet 的网络结构图:

AlexNet 网络结构共有 8 层,前面 5 层是卷积层,后面 3 层是全连接层,最后一个全连接层的输出传递给一个 1000 路的 softmax 层,对应 1000 个类标签的分布。
由于 AlexNet 采用了两个 GPU 进行训练,因此,该网络结构图由上下两部分组成,一个 GPU 运行图上方的层,另一个运行图下方的层,两个 GPU 只在特定的层通信。例如第二、四、五层卷积层的核只和同一个 GPU 上的前一层的核特征图相连,第三层卷积层和第二层所有的核特征图相连接,全连接层中的神经元和前一层中的所有神经元相连接。

下面逐层解析 AlexNet 结构:

1、第一层(卷积层)

该层的处理流程为:卷积 -->ReLU--> 池化 --> 归一化,流程图如下:

(1)卷积
输入的原始图像大小为 224×224×3(RGB 图像),在训练时会经过预处理变为 227×227×3。在本层使用 96 个 11×11×3 的卷积核进行卷积计算,生成新的像素。由于采用了两个 GPU 并行运算,因此,网络结构图中上下两部分分别承担了 48 个卷积核的运算。
卷积核沿图像按一定的步长往 x 轴方向、y 轴方向移动计算卷积,然后生成新的特征图,其大小为:floor ((img_size - filter_size)/stride) +1 = new_feture_size,其中 floor 表示向下取整,img_size 为图像大小,filter_size 为核大小,stride 为步长,new_feture_size 为卷积后的特征图大小,这个公式表示图像尺寸减去卷积核尺寸除以步长,再加上被减去的核大小像素对应生成的一个像素,结果就是卷积后特征图的大小。
AlexNet 中本层的卷积移动步长是 4 个像素,卷积核经移动计算后生成的特征图大小为 (227-11)/4+1=55,即 55×55。
(2)ReLU
卷积后的 55×55 像素层经过 ReLU 单元的处理,生成激活像素层,尺寸仍为 2 组 55×55×48 的像素层数据。
(3)池化
RuLU 后的像素层再经过池化运算,池化运算的尺寸为 3×3,步长为 2,则池化后图像的尺寸为 (55-3)/2+1=27,即池化后像素的规模为 27×27×96
(4)归一化
池化后的像素层再进行归一化处理,归一化运算的尺寸为 5×5,归一化后的像素规模不变,仍为 27×27×96,这 96 层像素层被分为两组,每组 48 个像素层,分别在一个独立的 GPU 上进行运算。

2、第二层(卷积层)

该层与第一层类似,处理流程为:卷积 -->ReLU--> 池化 --> 归一化,流程图如下:

(1)卷积
第二层的输入数据为第一层输出的 27×27×96 的像素层(被分成两组 27×27×48 的像素层放在两个不同 GPU 中进行运算),为方便后续处理,在这里每幅像素层的上下左右边缘都被填充了 2 个像素(填充 0),即图像的大小变为 (27+2+2) ×(27+2+2)。第二层的卷积核大小为 5×5,移动步长为 1 个像素,跟第一层第(1)点的计算公式一样,经卷积核计算后的像素层大小变为 (27+2+2-5)/1+1=27,即卷积后大小为 27×27。
本层使用了 256 个 5×5×48 的卷积核,同样也是被分成两组,每组为 128 个,分给两个 GPU 进行卷积运算,结果生成两组 27×27×128 个卷积后的像素层。
(2)ReLU
这些像素层经过 ReLU 单元的处理,生成激活像素层,尺寸仍为两组 27×27×128 的像素层。
(3)池化
再经过池化运算的处理,池化运算的尺寸为 3×3,步长为 2,池化后图像的尺寸为 (57-3)/2+1=13,即池化后像素的规模为 2 组 13×13×128 的像素层
(4)归一化
然后再经归一化处理,归一化运算的尺度为 5×5,归一化后的像素层的规模为 2 组 13×13×128 的像素层,分别由 2 个 GPU 进行运算。

3、第三层(卷积层)

 

第三层的处理流程为:卷积 -->ReLU

(1)卷积
第三层输入数据为第二层输出的 2 组 13×13×128 的像素层,为便于后续处理,每幅像素层的上下左右边缘都填充 1 个像素,填充后变为 (13+1+1)×(13+1+1)×128,分布在两个 GPU 中进行运算。
这一层中每个 GPU 都有 192 个卷积核,每个卷积核的尺寸是 3×3×256。因此,每个 GPU 中的卷积核都能对 2 组 13×13×128 的像素层的所有数据进行卷积运算。如该层的结构图所示,两个 GPU 有通过交叉的虚线连接,也就是说每个 GPU 要处理来自前一层的所有 GPU 的输入。
本层卷积的步长是 1 个像素,经过卷积运算后的尺寸为 (13+1+1-3)/1+1=13,即每个 GPU 中共 13×13×192 个卷积核,2 个 GPU 中共有 13×13×384 个卷积后的像素层。
(2)ReLU
卷积后的像素层经过 ReLU 单元的处理,生成激活像素层,尺寸仍为 2 组 13×13×192 的像素层,分配给两组 GPU 处理。

4、第四层(卷积层)

与第三层类似,第四层的处理流程为:卷积 -->ReLU

(1)卷积
第四层输入数据为第三层输出的 2 组 13×13×192 的像素层,类似于第三层,为便于后续处理,每幅像素层的上下左右边缘都填充 1 个像素,填充后的尺寸变为 (13+1+1)×(13+1+1)×192,分布在两个 GPU 中进行运算。
这一层中每个 GPU 都有 192 个卷积核,每个卷积核的尺寸是 3×3×192(与第三层不同,第四层的 GPU 之间没有虚线连接,也即 GPU 之间没有通信)。卷积的移动步长是 1 个像素,经卷积运算后的尺寸为 (13+1+1-3)/1+1=13,每个 GPU 中有 13×13×192 个卷积核,2 个 GPU 卷积后生成 13×13×384 的像素层。
(2)ReLU
卷积后的像素层经过 ReLU 单元处理,生成激活像素层,尺寸仍为 2 组 13×13×192 像素层,分配给两个 GPU 处理。

5、第五层(卷积层)

第五层的处理流程为:卷积 -->ReLU--> 池化

(1)卷积
第五层输入数据为第四层输出的 2 组 13×13×192 的像素层,为便于后续处理,每幅像素层的上下左右边缘都填充 1 个像素,填充后的尺寸变为 (13+1+1)×(13+1+1) ,2 组像素层数据被送至 2 个不同的 GPU 中进行运算。
这一层中每个 GPU 都有 128 个卷积核,每个卷积核的尺寸是 3×3×192,卷积的步长是 1 个像素,经卷积后的尺寸为 (13+1+1-3)/1+1=13,每个 GPU 中有 13×13×128 个卷积核,2 个 GPU 卷积后生成 13×13×256 的像素层。
(2)ReLU
卷积后的像素层经过 ReLU 单元处理,生成激活像素层,尺寸仍为 2 组 13×13×128 像素层,由两个 GPU 分别处理。
(3)池化
2 组 13×13×128 像素层分别在 2 个不同 GPU 中进行池化运算处理,池化运算的尺寸为 3×3,步长为 2,池化后图像的尺寸为 (13-3)/2+1=6,即池化后像素的规模为两组 6×6×128 的像素层数据,共有 6×6×256 的像素层数据。

6、第六层(全连接层)

第六层的处理流程为:卷积(全连接)-->ReLU-->Dropout

(1)卷积(全连接)
第六层输入数据是第五层的输出,尺寸为 6×6×256。本层共有 4096 个卷积核,每个卷积核的尺寸为 6×6×256,由于卷积核的尺寸刚好与待处理特征图(输入)的尺寸相同,即卷积核中的每个系数只与特征图(输入)尺寸的一个像素值相乘,一一对应,因此,该层被称为全连接层。由于卷积核与特征图的尺寸相同,卷积运算后只有一个值,因此,卷积后的像素层尺寸为 4096×1×1,即有 4096 个神经元。
(2)ReLU
这 4096 个运算结果通过 ReLU 激活函数生成 4096 个值。
(3)Dropout
然后再通过 Dropout 运算,输出 4096 个结果值。

7、第七层(全连接层)

第七层的处理流程为:全连接 -->ReLU-->Dropout

第六层输出的 4096 个数据与第七层的 4096 个神经元进行全连接,然后经 ReLU 进行处理后生成 4096 个数据,再经过 Dropout 处理后输出 4096 个数据。

8、第八层(全连接层)

第八层的处理流程为:全连接

第七层输出的 4096 个数据与第八层的 1000 个神经元进行全连接,经过训练后输出 1000 个 float 型的值,这就是预测结果。

总结图

 VGG-16

VGGNet 是由牛津大学视觉几何小组(Visual Geometry Group, VGG)提出的一种深层卷积网络结构,他们以 7.32% 的错误率赢得了 2014 年 ILSVRC 分类任务的亚军(冠军由 GoogLeNet 以 6.65% 的错误率夺得)和 25.32% 的错误率夺得定位任务(Localization)的第一名(GoogLeNet 错误率为 26.44%)。VGG可以看成是加深版本的AlexNet. 都是conv layer + FC layer。

论文地址:https://arxiv.org/pdf/1409.1556.pdf

VGG-16的这个数字16,就是指在这个网络中包含16个卷积层和全连接层(conv+fc的总层数是16,是不包括max pool的层数)

总共包含约1.38亿个参数,但VGG-16的结构并不复杂,而且这种网络结构很规整,整个网络都使用卷积核尺寸为 3×3 和最大池化尺寸 2×2,都是几个卷积层后面跟着可以压缩图像大小的池化层,池化层缩小图像的高度和宽度。同时,卷积层的过滤器数量变化存在一定的规律,由64翻倍变成128,再到256和512。每一步都进行翻倍,或者说在每一组卷积层进行过滤器翻倍操作,正是设计此种网络结构的另一个简单原则。这种相对一致的网络结构对研究者很有吸引力,而它的主要缺点是需要训练的特征数量非常巨大。 

架构图

VGG-16网络没有那么多超参数,这是一种只需要专注于构建卷积层的简单网络。

  • 假设这个小图是我们的输入图像,尺寸是224×224×3
  • 进行第一个卷积:用64个3×3的过滤器对输入图像进行卷积,输出结果是224×224×64,因为使用了same卷积,通道数量也一样,
  • 接着还有一层224×224×64,得到这样2个厚度为64的卷积层,意味着我们用64个过滤器进行了两次卷积

  • 接下来创建一个池化层,池化层将输入图像进行压缩,从224×224×64缩小到112×112×64。
  • 然后又是若干个卷积层,使用128个过滤器,以及一些same卷积,缩小到112×112×128
  • 然后进行池化,可以推导出池化后的结果是这样(56×56×128)。
  • 接着再用256个相同的过滤器进行三次卷积操作,
  • 再池化,得到28×28×256
  • 再卷积三次,使用512个过滤器,得到28×28×512
  • 再池化,得到14×14×512。如此进行几轮操作后,将最后得到的7×7×512的特征图进行全连接操作,得到4096个单元,然后进行softmax激活,输出从1000个对象中识别的结果。

参考文章:

吴恩达的深度学习-卷积神经网络,第四周

AlexNet - 知乎

卷积神经网络之VGG - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2W字-35页PDF谈谈自己对QT某些知识点的理解

2W字-35页PDF谈谈自己对QT某些知识点的理解 前言与总结总体知识点的概况一些笔记的概况笔记阅读清单 前言与总结 最近&#xff0c;也在对自己以前做的项目做一个知识点的梳理&#xff0c;发现可能自己以前更多的是用某个控件&#xff0c;以及看官方手册&#xff0c;但是没有更…

卷积神经网络(CNN)原理与实现

卷积神经网络(CNN) 卷积神经网络原理卷积神经网络的数学推导卷积层反向传播算法数学推导卷积层实现代码 卷积神经网络(CNN) 卷积神经网络原理 卷积神经网络是一种用于图像、语音、自然语言等数据的深度学习模型&#xff0c;其核心思想是使用卷积操作提取输入数据的特征&…

tmux 工具常用命令

Tmux 是一个终端复用器&#xff08;terminal multiplexer&#xff09;&#xff0c;类似于 GNU screen 非常有用&#xff0c;属于常用的运维管理工具。 安装步骤 Ubuntu apt install tmux centos yum install tmux常用命令 以下所有快捷键&#xff0c;均是 ctrlb 按完之后先…

SpringBoot+Vue全栈开发-刘老师教编程(b站)(二)

创建SpringBoot项目 1.配置maven 出现bug java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /D:/maven/repository/org/springframework/boot/spring-boot/3.0.0/spring-boot-3.0.0.jar!/org/springframework/boot/SpringApplication.class 类…

react-router 源码之matchPath方法

1. 基础依赖path-to-regexp react-router提供了专门的路由匹配方法matchPath(位于packages/react-router/modules/matchPath.js)&#xff0c;该方法背后依赖的其实是path-to-regexp包。 path-to-regexp输入是路径字符串&#xff08;也就是Route中定义的path的值&#xff09;&…

AI:145-智能监控系统下的行人安全预警与法律合规分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

vscode 设置打开终端的默认工作目录/路径

vscode 设置打开终端的默认工作目录/路径** 文章目录 vscode 设置打开终端的默认工作目录/路径**打开vscode&#xff0c;打开设置UI 或是设置JSON文件&#xff0c;找到相关设置项方式1&#xff1a;通过打开settings.json的UI界面 设置:方式2&#xff1a;通过打开设置settings.j…

应急响应靶机训练-Web1【题解】

前言 接上文&#xff0c;应急响应靶机训练-Web1。 此文为应急响应靶机训练-Web1【题解】篇 解题过程 视频版&#xff1a; 另外&#xff0c;师傅们可以关注一下我们的bilibili&#xff0c;以后跟应急响应相关的靶机都会在bilibili发布一份视频 应急响应靶机训练-Web1【题解…

【MySQL】主从同步原理、分库分表

主从同步原理 1. 主从同步原理 MySQL 经常先把命令拷入硬盘的日志&#xff0c;再执行日志的命令&#xff0c;这样的好处&#xff1a; 日志的位置固定&#xff0c;拷入硬盘的开销不大&#xff1b;将命令先准备好&#xff0c;而不是边读边执行&#xff0c;性能更好&#xff0c;…

TCGA临床及肿瘤信息解读

TCGA临床信息各英文列解读 地址&#xff1a;https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?viewtable-entity-list&anchorclinical 一些用药 Cisplatin&#xff1a;顺铂&#xff0c;顺铂的作用机制主要通过与DNA结合&#xff0c;形成DNA-顺铂加合物&#xff0…

练习 2 Web [ACTF2020 新生赛]BackupFile 1

[ACTF2020 新生赛]BackupFile 1 Web常规题目 首先尝试查找常见的前端页面index.php之类的&#xff0c;没找到 题目有个“BackupFile”——备份文件 尝试用工具遍历查找相关的文件 御剑没扫出来&#xff0c;搜索搭建好dirsearch后&#xff0c;扫出来的index.php.bak 扫描工…

【4.3计算机网络】网络规划与设计

目录 1.网络规划2.逻辑网络设计3.物理网络设计 1.网络规划 需求分析->通信规范分析->逻辑网络设计->物理网络设计->实施阶段 2.逻辑网络设计 3.物理网络设计 例题1&#xff1a; 解析&#xff1a;选A。 例题2&#xff1a; 解析&#xff1a;选A。 例题3. 解析&am…

2024年小程序云开发CMS内容管理无法使用,无法同步内容模型到云开发数据库的解决方案,回退老版本CMS内容管理的最新方法

一&#xff0c;问题描述 最近越来越多的同学找石头哥&#xff0c;说cms用不了&#xff0c;其实是小程序官方最近又搞大动作了&#xff0c;偷偷的升级的云开发cms&#xff08;内容管理&#xff09;以下都称cms&#xff0c;不升级不要紧&#xff0c;这一升级&#xff0c;就导致我…

uniapp:启动图 .9png 制作教程

1、工具安装&#xff1a;自行下载Android Studio 2、制作.9png 注意上图3条黑线的位置&#xff0c;意思是&#xff1a;标注黑线的位置可以进行缩放。 对其大多数启动图来说&#xff0c;标注以上3条黑线即可。

Sora的潜力与影响:对视频制作、广告、娱乐等行业的深度解析

随着技术的飞速发展&#xff0c;OpenAI推出的Sora模型已经引起了广泛关注。作为一款强大的视频生成工具&#xff0c;Sora不仅改变了视频制作的传统模式&#xff0c;更对广告、娱乐等多个行业产生了深远影响。本文将深度解析Sora的潜力与影响&#xff0c;探讨其在视频制作、广告…

JVM之CMS垃圾收集器详解

CMS垃圾收集器 CMS回收流程 官网&#xff1a; https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/cms.html#concurrent_mark_sweep_cms_collector CMS(Concurrent Mark Sweep)收集器是一种以获取 最短回收停顿时间为目标的收集器。 采用的是"标记-清除…

重拾前端基础知识:CSS3

重拾前端基础知识&#xff1a;CSS3 前言边框圆角阴影图片 背景渐变文本字体多列动画与过渡2D 转换3D 转换过渡动画 网格布局弹性盒子&#xff08;重点&#xff09;父元素设置子元素设置 响应式设计设置 Viewport构建响应式网格视图12栅格媒体查询 案例讲解图片按钮分页 浏览器支…

面试数据库篇(mysql)- 10事务中的隔离性是如何保证

锁:排他锁(如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁mvcc : 多版本并发控制MVCC 全称 Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突 MVCC的具体实现,主要依赖于数据库记录中的隐式字段…

进程间通信的常见方式

进程间通信是计算机系统中不同进程之间进行数据交换和共享信息的方式。 父子进程之间其他地址空间不一样&#xff0c;但共享同一块内核空间。进程间通信的本质还是通过内核开辟缓冲区&#xff0c;一个进程写&#xff0c;一个进程读这样的工作原理。 常见的通信方式包括&#x…

一键安装|卸载 mysql 8.2.0 shell脚本

场景&#xff1a;为了在无网、外网 mysql 安装方便&#xff0c;这里分享一个自己编写得 shell脚本 这里以当前最新版 mysql 8.2.0&#xff1b;centos-7 二进制包下载&#xff1a; 下载地址 mysql_install.sh #!/bin/bash # 解压安装包 tar -xf mysql-8.2.0-linux-glibc2.17-x8…