卷积层和全连接层的一些过程简单总结

学了一学期,发现我连最基本的一些过程都说不上来,最近在调试结课作业,为了能顺利的将整个过程讲解下来,这里总结一下简单实现。

一、卷积网络

1、卷积层

        卷积层是卷积神经网络(CNN)中的核心组件之一,用于提取输入数据中的特征并创建特征映射。在卷积层中,会定义多个卷积核(也称为滤波器),每个卷积核都会在输入数据上进行滑动并执行卷积操作,从而生成输出特征图。

        具体来说,卷积操作可以有效地捕获输入数据中的局部模式和特征,因为卷积核的参数共享机制可以减少模型的参数数量并提高特征提取的效率。此外,卷积操作还可以保留空间结构信息,有助于对图像、文本等数据进行处理。

        卷积层通常涉及一些重要的超参数,如卷积核的大小、步长(stride)、填充(padding)等,这些超参数会影响着卷积操作的输出尺寸以及特征提取的效果。

        卷积过程实质上就是两个矩阵做乘法,在卷积过程后,原始输入矩阵会有一定程度的缩小,比如自定义卷积核大小为3*3,步长为1时,矩阵长宽会缩小2,所以在一些应用场合下,为了保持输入矩阵的大小,我们在卷积操作前需要对数据进行扩充,常见的扩充方法为0填充方式,即设置padding的值。

例如:

nn.Conv2d(in_channels=1, out_channels=16, kernel_size=3, stride=1, padding=1)

这里面的参数用于创建一个二维卷积层的,下面是各个参数的详细介绍:

in_channels:输入的通道数,对于灰度图像来说,通道数为1;对于RGB彩色图像来说,通道数为3。这里in_channels=1,表示输入的是灰度图像。

out_channels:输出的通道数,也就是卷积核的数量,每个卷积核都会产生一张特征图作为输出。因此,这个参数指定了卷积层输出的特征图数量。

kernel_size:卷积核的大小,可以是一个整数或者是一个元组,如果是一个整数,表示卷积核的高和宽相同;如果是一个元组,表示分别指定卷积核的高和宽。

stride:卷积核的步长,指定在输入上卷积核的滑动步长,用于计算输出特征图的尺寸。默认值为1,表示逐个像素地遍历输入,也可以指定为一个整数或者是一个元组。

padding:填充的大小,指定在输入的四周填充0的层数,可以是一个整数或者是一个元组,用于控制卷积操作的输出尺寸。默认值为0,表示不进行填充。

综合来说,nn.Conv2d(in_channels=1, out_channels=16, kernel_size=3, stride=1, padding=1)表示创建了一个输入通道数为1、输出通道数为16的二维卷积层,卷积核的大小为3x3,步长为1,填充为1。这样的卷积层将会对输入数据进行卷积操作并输出16张特征图,其中卷积核的大小为3x3,并且在卷积操作中进行了填充以保持输出特征图的尺寸。

具体的内容可以看这个视频:

 【深度学习概述】卷积层_哔哩哔哩_bilibili

2、ReLU激活函数

作用:在神经网络中引入非线性,以增强网络的表示能力和学习复杂模式。

inplace=True 表示在原地进行操作,即将激活函数ReLU的计算结果直接覆盖到输入变量中,而不是创建一个新的变量来存储计算结果。

如果输入 x 大于 0,那么输出 y 就等于 x;如果输入 x 小于等于 0,那么输出 y 就等于 0。这就是 ReLU 函数的计算过程,它的形式非常简单,但在神经网络中具有重要的作用,能够引入非线性并且解决梯度消失问题。

【官方双语】一个例子彻底理解ReLU激活函数_哔哩哔哩_bilibili

3、池化层

作用是通过降采样来减少特征图的尺寸,提取主要特征并且减少模型对位置的敏感性。

有最大池化和平均池化两种形式。

2.12 定义池化层_哔哩哔哩_bilibili

二、全连接网络

全连接层

作用:将神经网络中的所有神经元都连接到上一层的每一个神经元上,用于学习输入数据的复杂特征和进行最终的分类或回归。

【深度学习概述】全连接层_哔哩哔哩_bilibili

学习率

学习率是指在训练神经网络时用来更新模型参数的步长大小,即每次参数更新时的调整幅度,过大会导致震荡,过小会导致收敛缓慢。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VGG19卷积网络的实现需要使用TensorFlow或Keras等深度学习框架。可以参考一些网上的教程,比如TensorFlow官网上的教程:https://www.tensorflow.org/tutorials/images/deep_cnn ### 回答2: 要实现VGG19卷积网络,首先需要了解VGG19的结构和参数设置。VGG19是一种经典的卷积神经网络,由19个卷积层和3个全连接层组成。其主要特点是深度较深,网络结构简单。 我们可以使用Python中的深度学习库,如TensorFlow或PyTorch,来实现VGG19。 首先,我们需要引入所需的库和模块。然后,创建一个空的神经网络模型。 接下来,我们定义VGG19的网络结构。可以使用不同的函数或层来构建不同的卷积层全连接层。在VGG19中,卷积层的核大小通常为3x3,激活函数为ReLU。在每两个卷积层之间,我们可以添加一个池化层,如最大池化或平均池化。 在实现网络结构时,需要根据VGG19的定义添加适当数量的卷积层、池化层和全连接层。最后一层的输出根据问题的要求可以是不同的,如分类、回归等。 在定义网络结构后,我们需要在训练数据上训练该模型。可以使用反向传播算法和优化器来更新网络的权重和偏置。训练过程中,我们可以定义合适的损失函数和评估指标。 最后,我们可以使用训练好的VGG19网络来进行预测。将测试数据输入网络,得到输出结果。 总之,实现VGG19卷积网络的步骤包括定义网络结构、训练模型和进行预测。通过合理选择网络层和参数设置,我们可以根据具体问题进行适当的调整和优化。 ### 回答3: 实现VGG19卷积网络的编写过程包括以下几个步骤: 1.导入所需的Python库和模块,如tensorflow和keras等。 2.定义VGG19网络结构,根据VGG19网络的特点,可以采用堆叠多个卷积层和池化层的方式来构建。 3.构建卷积层,可以通过调用keras中的Conv2D函数来实现。设置卷积核数目、卷积核大小、填充方式和激活函数等参数。 4.构建池化层,通过调用keras中的MaxPooling2D函数来实现。设置池化核大小和步长等参数。 5.按照VGG19网络的结构,逐层添加卷积层和池化层。 6.添加全连接层,将卷积层输出的高维特征降维,并连接到输出层以得出最终的分类结果。 7.设置损失函数,选择适当的优化算法和学习率,并编译模型。 8.通过调用keras中的fit函数对模型进行训练,设置合适的训练参数。 9.评估模型的性能,可以调用keras中的evaluate函数来计算模型在测试集上的准确率等指标。 10.保存模型参数,将训练得到的模型权重保存到文件中,以备后续使用。 总结起来,实现VGG19卷积网络的编写过程主要包括导入所需库和模块、定义网络结构、构建卷积层和池化层、添加全连接层、设置损失函数和优化算法、进行模型训练和评估、保存模型参数等步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值