神经网络的基本骨架
1 简介
本文就是简单介绍一下各个层次,并给出一个小demo,最后会以CIFAR10数据集为例构建一个简单的神经网络。
所有代码均放在我的仓库中,如果需要请访问:https://github.com/Guoxn1/ai
如果给到您帮助,请给我一个star,这将成为我持续创作的动力。
2 卷积层
卷积操作,对CIFAR10的测试集图片进行了卷积操作,另外使用tensorboard展示出来。
卷积层主要用来提取特征,比如轮廓,cv2中有很多操作,卷积层通常也会引入激活函数。
1 |
|
3 池化层
也称之为采样层,这里采用最大池化,池化层就是来保留原始输入的信息,但是又减少数据的维度。
1 |
|
可以看到图片确实模糊了。
4 非线性激活层(非必须最好有)
非线性的作用是使得神经网络能更具有鲁棒性,减少过拟合。
比较常用的Relu、sigmod等。
1 |
|
sigmod非线性激活:
5 全连接层(线性层)
输出最后结果的层。
1 |
|
6 其他层
只做简单介绍,比较进阶了。
6.1 归一化层
归一化数据。
6.2 正则化层
正则化层通过在损失函数中引入正则化项,限制模型的复杂性,从而提高模型的泛化能力,防止过拟合。
6.3 recurrent层
特定的网络结构,比如lstm。
6.4 transfrom层
特定的神经网络层。
6.5 dropout 层
失活层,防止过拟合。
7 使用sequential搭建一个完整的神经网络
使用CIFAR10 model的结构。
可以看到先进行5*5卷积,从3通道换成了32通道,再进行2*2池化,再进行5*5卷积,再进行2*2池化,再进行5*5卷积,再进行2*2池化,最后把64*4*4转换为64向量,在转换为10向量输出。
1 |
|
8 反向传播和优化器
反向传播计算损失值并反向传播计算梯度,优化器利用损失值,使其逼近targets。
1 |
|
可见损失值一直在减小,符合我们的预期。
神经网络的基本骨架
http://example.com/2023/10/21/神经网络的基本骨架/