当前位置:   article > 正文

【kears】keras中的常用包datasets、models、layers、optimizers_keras.datasets

keras.datasets


一. keras.datasets

1.1 作用

包含多种常用数据集,实现自动下载和解析等。

2.1 Keras 中常用的数据集

1)MNIST 手写数字数据集:
MNIST 是一个包含手写数字图片的数据集,常用于图像分类任务。

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
  • 1
  • 2

2)Fashion-MNIST 时尚商品图片数据集:
Fashion-MNIST 是一个包含时尚商品图片的数据集,与 MNIST 类似,用于图像分类任务。

from keras.datasets import fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
  • 1
  • 2

3)CIFAR-10 数据集:
CIFAR-10 包含 10 个类别的彩色图片数据集,常用于图像分类任务。

from keras.datasets import cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
  • 1
  • 2

4)CIFAR-100 数据集:
CIFAR-100 包含 100 个类别的彩色图片数据集,与 CIFAR-10 类似但类别更多。

from keras.datasets import cifar100
(x_train, y_train), (x_test, y_test) = cifar100.load_data()
  • 1
  • 2

5)IMDB 电影评论情感分类数据集
IMDB 包含了来自 Internet Movie Database 的电影评论,用于情感分类任务。

from keras.datasets import imdb
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=10000)
  • 1
  • 2

二. keras.models

2.1 作用

包含各种模型结构。

2.2 Keras 中常用的模型结构

1)顺序模型(Sequential)
Sequential 是最简单的模型结构,它按顺序堆叠层来构建模型,适用于简单的线性堆叠网络。

2)函数式 API 模型(Functional API)
函数式 API 允许构建具有复杂拓扑结构的模型,例如多输入或多输出模型、具有共享层的模型等。
通过 tf.keras.Model 类和 tf.keras.layers 模块中的层来构建模型,然后将层连接起来以定义计算图。

3)子类 API 模型(Model Subclassing API)
子类 API 允许创建自定义的模型结构,这些模型结构可能无法通过顺序模型或函数式 API 实现。
需要继承 tf.keras.Model 类,并重写 init 方法和 call 方法来定义模型的结构和计算过程。

4)模型集成(Model ensembling)
模型集成是将多个模型的预测结果进行组合以提高性能的技术。
可以使用顺序模型、函数式 API 模型或子类 API 模型来构建单个基本模型,然后通过投票、加权平均等方式对多个模型的预测结果进行集成。

三. keras.layers

3.1 作用

包含常用的层结构

3.2 Keras 中常用的层结构

1)全连接层(Dense):
全连接层是最基本的神经网络层,其中每个输入节点都与每个输出节点相连。

2)卷积层(Convolutional):
卷积层用于处理图像数据,通过卷积操作提取图像中的特征。
【Conv2D 层】
Conv2D 层是二维卷积层,用于处理二维图像数据。它通过在输入数据上滑动卷积核并执行卷积操作来提取图像的特征。可以设置卷积核的数量、大小、步幅等参数。

3)池化层(Pooling):
池化层用于减少图像数据的维度,提取图像中的主要特征并减少计算量。
【MaxPooling2D 层】
MaxPooling2D 层是二维最大池化层,用于减少图像数据的维度并保留主要特征。它通过在输入数据上滑动池化窗口并选择每个窗口中的最大值来执行池化操作。常用于降低计算量和提取主要特征。

4)Flatten 层:
Flatten 层用于将输入展平为一维张量,常用于连接卷积层和全连接层。例如,将卷积层输出的特征图展平为一维向量,以便输入到全连接层进行分类或回归任务。

5)循环层(Recurrent):
循环层用于处理序列数据,如文本或时间序列数据,其中每个时间步都与前一个时间步的输出相关联。

6)嵌入层(Embedding):
嵌入层将高维的离散特征映射到低维的连续向量空间中,通常用于处理文本数据。

6)批量归一化层(BatchNormalization):

批量归一化层用于加速训练过程并增强模型的泛化能力,通过标准化输入数据的分布来减少内部协变量偏移。

7)激活函数层(Activation):
激活函数层对输入数据进行非线性变换,常见的激活函数包括 ReLU、Sigmoid 和 Tanh 等。

8)Dropout 层:
Dropout 层用于随机丢弃网络中的部分神经元,以减少过拟合。

9)全局池化层(GlobalPooling):
全局池化层将整个特征图进行池化,生成固定大小的输出,常见的全局池化操作包括全局平均池化和全局最大池化。

以下是使用 Keras 中各种常见层的简单代码示例:

from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPooling2D, Flatten, Dropout, Activation, BatchNormalization, Embedding, LSTM, GlobalAveragePooling2D

# 创建一个序贯模型
model = Sequential()

# 添加全连接层
model.add(Dense(64, input_shape=(input_dim,)))

# 添加卷积层
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(img_height, img_width, channels)))

# 添加池化层
model.add(MaxPooling2D(pool_size=(2, 2)))

# 添加循环层(LSTM)
model.add(LSTM(128, return_sequences=True))

# 添加嵌入层
model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=max_sequence_length))

# 添加批量归一化层
model.add(BatchNormalization())

# 添加激活函数层(ReLU)
model.add(Activation('relu'))

# 添加 Dropout 层
model.add(Dropout(0.5))

# 添加全局池化层
model.add(GlobalAveragePooling2D())

# 添加 Flatten 层
model.add(Flatten())

# 添加二维卷积层
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))

# 添加二维最大池化层
model.add(MaxPooling2D(pool_size=(2, 2)))

# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 打印模型结构
model.summary()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

四. kears.optimizers

4.1 作用

包含优化函数

4.2 Keras 中常用的优化函数

1)随机梯度下降(SGD):
SGD 是最基本的优化算法之一,它在每次迭代中随机选择一小批样本来更新模型参数。其中,通过设置 SGD 优化器的 momentum 参数来使用动量法。通常将动量参数设置为 0.9 或类似的值。

动量法是一种优化算法,用于训练神经网络时加速收敛并减少震荡。它的基本思想是在更新参数时,不仅考虑当前梯度的方向,还考虑之前梯度更新的方向。这样可以在参数更新过程中增加惯性,有助于快速穿过平坦区域并减少震荡。

from keras.optimizers import SGD
sgd = SGD(learning_rate=0.01, momentum=0.9)
  • 1
  • 2

2)Adam 优化器:
Adam 是一种自适应学习率的优化算法,它结合了动量法和 RMSProp 算法。

from keras.optimizers import Adam
adam = Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999)
  • 1
  • 2

3)RMSProp 优化器:
RMSProp 是一种自适应学习率的优化算法,它根据参数的历史梯度大小来调整学习率。

from keras.optimizers import RMSprop
rmsprop = RMSprop(learning_rate=0.001, rho=0.9)
  • 1
  • 2

4)Adagrad 优化器:
Adagrad 是一种自适应学习率的优化算法,它根据参数的历史梯度大小来调整学习率,但与 RMSProp 不同,它在更新参数时将学习率除以梯度的平方的累积。

from keras.optimizers import Adagrad
adagrad = Adagrad(learning_rate=0.01)
  • 1
  • 2

5)Adadelta 优化器:
Adadelta 是一种自适应学习率的优化算法,它类似于 RMSProp,但不需要手动设置全局学习率。

from keras.optimizers import Adadelta
adadelta = Adadelta(learning_rate=1.0, rho=0.95)
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/552384
推荐阅读
相关标签
  

闽ICP备14008679号