如何使用Tensorflow训练和编译增强模型?
增强模型可以使用'compile'方法进行编译,该方法也采用'SparseCategoricalCrossentropy'作为参数来计算与训练相关的损失。
阅读更多: 什么是TensorFlow以及Keras如何与TensorFlow一起创建神经网络?
我们将使用Keras Sequential API,它有助于构建一个用于处理层堆栈的顺序模型,其中每一层都只有一个输入张量和一个输出张量。
包含至少一层卷积层的神经网络称为卷积神经网络。我们可以使用卷积神经网络构建学习模型。
我们正在使用Google Colaboratory来运行以下代码。Google Colab或Colaboratory帮助在浏览器上运行Python代码,无需任何配置,并且可以免费访问GPU(图形处理单元)。Colaboratory构建在Jupyter Notebook之上。
由于过拟合,模型将无法在新数据集上很好地泛化。有很多方法可以避免过拟合。我们可以使用dropout技术来克服过拟合。通过在网络中引入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://tensorflowcn.cn/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’方法用于获取模型的完整架构。
广告