如何使用 Tensorflow 训练和编译增强模型?

tensorflowserver side programmingprogramming

可以使用‘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’方法获取模型的完整架构。

相关文章