本篇技术博文摘要 🌟
- 文章首先回顾了Keras的基础知识,继而将层分为"常用层"与"核心层"两大类进行深度剖析:在"核心层"部分,依次详解了Dense全连接层、Conv2D二维卷积层、LSTM长短期记忆网络层、Dropout随机失活层的原理、关键参数、代码示例及典型应用场景。
- 随后,文章介绍了BatchNormalization、MaxPooling2D、Flatten、Embedding等其他重要层类型。
- 最后,文章的核心实战部分聚焦于"层组合",以构建一个简单的CNN模型为例,阐述了根据输入数据类型、模型深度、任务类型、计算资源选择层的指导原则,并提供了完整的层组合代码示例,旨在帮助读者从理解单个"积木"到掌握"搭建成品"的完整能力,从而灵活高效地构建各类深度学习模型。」
引言 📘
- 在这个变幻莫测、快速发展的技术时代,与时俱进是每个IT工程师的必修课。
- 我是盛透侧视攻城狮,一个"什么都会一丢丢"的网络安全工程师,目前正全力转向AI大模型安全开发新战场。作为活跃于各大技术社区的探索者与布道者,期待与大家交流碰撞,一起应对智能时代的安全挑战和机遇潮流。

上节回顾
目录
[本篇技术博文摘要 🌟](#本篇技术博文摘要 🌟)
[引言 📘](#引言 📘)
[1.Keras 常用层类型](#1.Keras 常用层类型)
[2.1Dense 全连接层及示例](#2.1Dense 全连接层及示例)
[2.2Conv2D 二维卷积层及示例](#2.2Conv2D 二维卷积层及示例)
[2.3LSTM 长短期记忆网络层及示例](#2.3LSTM 长短期记忆网络层及示例)
[2.4Dropout 随机失活层及示例](#2.4Dropout 随机失活层及示例)
[3.1BatchNormalization 批量归一化层](#3.1BatchNormalization 批量归一化层)
[3.2MaxPooling2D 二维最大池化层及示例](#3.2MaxPooling2D 二维最大池化层及示例)
[3.3Flatten 展平层及示例](#3.3Flatten 展平层及示例)
[3.4Embedding 嵌入层及示例](#3.4Embedding 嵌入层及示例)

1.Keras 常用层类型
Keras 是一个高级神经网络 API,它提供了丰富的层类型来构建深度学习模型。
层(Layer)是 Keras 的基本构建块,每个层接收输入数据,进行特定变换后输出结果。
本文将详细介绍 Keras 中最常用的层类型及其使用方法。

2.Keras核心层类型
2.1Dense 全连接层及示例
- 全连接层是最基础的神经网络层,每个输入节点都与输出节点相连。
python
from keras.layers import Dense
# 创建一个具有64个神经元,使用ReLU激活函数的全连接层
dense_layer = Dense(units=64, activation='relu')
2.1.1参数说明
units:正整数,输出空间的维度activation:激活函数,如 'relu', 'sigmoid', 'tanh', 'softmax' 等use_bias:布尔值,是否使用偏置向量(默认True)kernel_initializer:权重矩阵的初始化方法
2.1.2应用场景
- 用于多层感知机(MLP)
- 作为分类器的最后一层
- 特征变换和非线性映射

2.2Conv2D 二维卷积层及示例
- 主要用于图像处理的卷积操作,能够提取局部特征
python
from keras.layers import Conv2D
# 创建一个具有32个3x3卷积核的卷积层
conv_layer = Conv2D(filters=32, kernel_size=(3, 3), activation='relu')
2.2.1参数说明
filters:整数,输出空间的维度(卷积核的数量)kernel_size:整数或元组,卷积窗口的宽和高strides:卷积步长,默认为(1, 1)padding:'valid'(不填充)或 'same'(填充使输出与输入尺寸相同)
2.2.2应用场景
- 图像分类
- 目标检测
- 图像分割

2.3LSTM 长短期记忆网络层及示例
- 用于处理序列数据的循环神经网络层,能够学习长期依赖关系
python
from keras.layers import LSTM
# 创建一个具有128个单元的LSTM层
lstm_layer = LSTM(units=128, return_sequences=True)
2.3.1参数说明
units:正整数,输出空间的维度return_sequences:布尔值,是否返回完整序列(默认False)dropout:0到1之间的浮点数,输入线性变换的丢弃率recurrent_dropout:0到1之间的浮点数,循环状态的丢弃率
2.3.2应用场景
- 自然语言处理
- 时间序列预测
- 语音识别

2.4Dropout 随机失活层及示例
- 在训练过程中随机将部分神经元输出设为0,防止过拟合
python
from keras.layers import Dropout
# 创建一个丢弃率为0.5的Dropout层
dropout_layer = Dropout(rate=0.5)
2.4.1参数说明
rate:0到1之间的浮点数,丢弃比例noise_shape:整数张量,表示将与输入相乘的二进制丢弃掩层的形状seed:随机数种子
2.4.2应用场景
- 防止神经网络过拟合
- 提高模型泛化能力
- 通常在全连接层后使用

3.其他重要层类型及示例
3.1BatchNormalization 批量归一化层
- 对前一层的输出进行批量归一化,加速训练并提高模型稳定性
python
from keras.layers import BatchNormalization
# 创建批量归一化层
bn_layer = BatchNormalization()

3.2MaxPooling2D 二维最大池化层及示例
- 通过取窗口内的最大值来下采样特征图
python
from keras.layers import MaxPooling2D
# 创建2x2的最大池化层
pool_layer = MaxPooling2D(pool_size=(2, 2))
3.3Flatten 展平层及示例
- 将多维输入展平为一维,常用于从卷积层过渡到全连接层
python
from keras.layers import Flatten
# 创建展平层
flatten_layer = Flatten()
3.4Embedding 嵌入层及示例
- 将正整数(索引)转换为固定大小的密集向量
python
from keras.layers import Embedding
# 创建嵌入层,词汇表大小为1000,输出维度为64
embedding_layer = Embedding(input_dim=1000, output_dim=64)

4.层组合示例-创建一个简单的CNN模型
4.1选择层的指导原则
4.1.1输入数据类型
- 图像数据:Conv2D + 池化层
- 序列数据:LSTM/GRU
- 结构化数据:Dense层
4.1.2模型深度
- 深层网络需要配合BatchNormalization和Dropout
4.1.3任务类型
- 分类任务:最后一层使用softmax激活
- 回归任务:最后一层不使用激活函数或使用线性激活
4.1.4计算资源
- 大尺寸输入考虑使用池化层减少参数
- 资源有限时减少层数和单元数

4.2层组合代码如下
python
from keras.models import Sequential
from keras.layers import Dense, Dropout, Conv2D, MaxPooling2D, Flatten
# 创建一个简单的CNN模型
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
MaxPooling2D((2, 2)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Flatten(),
Dense(64, activation='relu'),
Dropout(0.5),
Dense(10, activation='softmax')
])

欢迎各位彦祖与热巴畅游本人专栏与技术博客
你的三连是我最大的动力
点击➡️指向的专栏名即可闪现
➡️计算机组成原理****
➡️操作系统
➡️****渗透终极之红队攻击行动********
➡️ 动画可视化数据结构与算法
➡️ 永恒之心蓝队联纵合横防御
➡️****华为高级网络工程师********
➡️****华为高级防火墙防御集成部署********
➡️ 未授权访问漏洞横向渗透利用
➡️****逆向软件破解工程********
➡️****MYSQL REDIS 进阶实操********
➡️****红帽高级工程师
➡️红帽系统管理员********
➡️****HVV 全国各地面试题汇总********
