Keras 常用层类型概述
Keras 提供了多种层类型,用于构建深度学习模型。这些层可以分为核心层、卷积层、循环层、嵌入层等。以下将详细介绍常用层类型及其代码示例。
Dense 全连接层
Dense 层是最基本的层类型,用于实现全连接神经网络。每个神经元与上一层的所有神经元相连。
from keras.layers import Dense
# 添加一个具有 64 个神经元和 ReLU 激活函数的全连接层
model.add(Dense(64, activation='relu'))
Conv2D 二维卷积层
Conv2D 层用于处理图像数据,通过卷积核提取特征。
from keras.layers import Conv2D
# 添加一个 3x3 卷积核,输出 32 个特征图的卷积层
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
MaxPooling2D 二维最大池化层
MaxPooling2D 层用于降低特征图的空间维度,减少计算量。
from keras.layers import MaxPooling2D
# 添加一个 2x2 的最大池化层
model.add(MaxPooling2D(pool_size=(2, 2)))
LSTM 长短期记忆网络层
LSTM 层用于处理序列数据,如时间序列或自然语言。
from keras.layers import LSTM
# 添加一个具有 128 个神经元的 LSTM 层
model.add(LSTM(128, input_shape=(100, 1)))
Embedding 嵌入层
Embedding 层用于将离散的整数(如单词索引)映射到连续的向量空间。
from keras.layers import Embedding
# 添加一个嵌入层,将 1000 个单词映射到 64 维向量空间
model.add(Embedding(1000, 64, input_length=10))
Dropout 随机失活层
Dropout 层用于防止过拟合,随机丢弃一部分神经元的输出。
from keras.layers import Dropout
# 添加一个丢弃率为 0.5 的 Dropout 层
model.add(Dropout(0.5))
BatchNormalization 批量归一化层
BatchNormalization 层用于加速训练并提高模型稳定性。
from keras.layers import BatchNormalization
# 添加一个批量归一化层
model.add(BatchNormalization())
Flatten 展平层
Flatten 层用于将多维输入展平为一维,常用于从卷积层过渡到全连接层。
from keras.layers import Flatten
# 添加一个展平层
model.add(Flatten())
示例:构建一个完整的 CNN 模型
以下是一个使用多种层类型的完整 CNN 模型示例:
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
总结
Keras 提供了丰富的层类型,支持各种深度学习模型的构建。通过组合不同的层,可以灵活地设计出适合特定任务的神经网络结构。
9万+

被折叠的 条评论
为什么被折叠?



