如何使用 Tensorflow 训练和编译增强模型?
可以使用‘compile’方法编译增强模型,该方法还采用‘SparseCategoricalCrossentropy’作为参数来计算与训练相关的损失。
阅读更多: 什么是 TensorFlow,以及 Keras 如何与 TensorFlow 配合使用来创建神经网络?
我们将使用 Keras Sequential API,它有助于构建用于处理普通层堆栈的顺序模型,其中每个层都有一个输入张量和一个输出张量。
包含至少一个层的神经网络称为卷积层。我们可以使用卷积神经网络构建学习模型。
我们使用 Google Colaboratory 运行以下代码。Google Colab 或 Colaboratory 有助于在浏览器上运行 Python 代码,无需配置,可以免费访问 GPU(图形处理单元)。Colaboratory 建立在 Jupyter Notebook 之上。
由于过度拟合,模型无法在新数据集上很好地概括。有很多方法可以避免过度拟合。我们可以使用 drop out 技术来克服过度拟合。通过在网络中引入 dropout 可以减少过度拟合。这被认为是一种正则化形式。这有助于将模型暴露给数据的更多方面,从而帮助模型更好地泛化。
当将 dropout 应用于某个层时,它会在训练过程中随机从该层中删除一些输出单元。这是通过将激活函数设置为 0 来实现的。Dropout 技术将分数作为输入值(如 0.1、0.2、0.4 等)。这个数字 0.1 或 0.2 基本上表示 10% 或 20% 的输出单元是随机来自应用层。
数据增强通过借助随机变换对现有示例进行增强,从现有示例中生成额外的训练数据,从而产生看起来可信的图像。以下是一个例子:
示例
print("Compiling the model") model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) print("The complete architecture of the model") model.summary()
代码来源 −https://www.tensorflow.org/tutorials/images/classification
输出
Compiling the model The complete architecture of the model Model: "sequential_2" Layer (type) Output Shape Param # ================================================================= sequential_1 (Sequential) (None, 180, 180, 3) 0 _________________________________________________________________ rescaling_2 (Rescaling) (None, 180, 180, 3) 0 _________________________________________________________________ conv2d_3 (Conv2D) (None, 180, 180, 16) 448 _________________________________________________________________ max_pooling2d_3 (MaxPooling2 (None, 90, 90, 16) 0 _________________________________________________________________ conv2d_4 (Conv2D) (None, 90, 90, 32) 4640 _________________________________________________________________ max_pooling2d_4 (MaxPooling2 (None, 45, 45, 32) 0 _________________________________________________________________ conv2d_5 (Conv2D) (None, 45, 45, 64) 18496 _________________________________________________________________ max_pooling2d_5 (MaxPooling2 (None, 22, 22, 64) 0 _________________________________________________________________ dropout (Dropout) (None, 22, 22, 64) 0 _________________________________________________________________ flatten_1 (Flatten) (None, 30976) 0 _________________________________________________________________ dense_2 (Dense) (None, 128) 3965056 _________________________________________________________________ dense_3 (Dense) (None, 5) 645 ================================================================= Total params: 3,989,285 Trainable params: 3,989,285 Non-trainable params: 0 _________________________________________________________________
解释
- 使用‘fit’方法编译模型。
- 使用‘summary’方法获取模型的完整架构。