TensorFlow中的卷积神经网络(CNN)的训练
在这篇文章中,我们将使用TensorFlow这个大规模的机器学习库来实现和训练一个卷积神经网络CNN。
在这篇文章中,我们将在一个名为 “石头剪刀布 “的数据集上工作,我们需要将手势简单地分类为石头和剪刀。
一步一步实现
第1步:导入库
我们将从导入一些重要的库开始。它们是TensorFlow、NumPy、Matplotlib,最后从TensorFlow中,我们需要TensorFlow数据集和Keras
第2步:加载数据集
在选择数据集之前,请自由探索TensorFlow中所有可用的数据集。
输出:
在加载数据集之前,我们将看到关于我们的数据集的一些信息,这样我们就可以很容易地处理数据并收集一些非常重要的信息。
输出:
最后加载数据集。
输出:
部分例子
第3步:分析和预处理图像
首先,为了保持干净,我们要对数据进行迭代,并将其存储为NumPy数组,取消图像的尺寸,并将其存储为train_images,以及带有标签的测试图像。
然后,现在我们要重塑图像,然后将数据类型从uint8转换为float32,然后我们要将所有的值降到0到1,以使模型更容易从中学习。
第4步:一个基本的卷积神经网络
现在我们要创建一个基本的CNN,只有2个卷积层,有一个relu激活函数和64和32内核,内核大小为3,并将图像平铺为一维数组,卷积层直接连接到输出层。
对于编译,我们使用Adam优化器,对于损失,我们使用SparseCategoricalCrossentropy(),对于度量,我们使用准确性和去适应数据。
输出:
并对该模型进行评估
正如你所看到的,在未见过的数据中,准确率非常低,这被称为模型过拟合,这意味着模型被训练数据过拟合,所以它不能处理未见过的数据,为了解决这个问题,我们可以稍微修改一下模型。
更好的卷积神经网络
我们可以通过增加以下内容来改进这个模型。
- Dropout nodes
- Pooling
- 完全连接的密集层
现在,如果我们评估我们的模型,你可以看到模型已经改善了很多。
这些是训练卷积神经网络的步骤。
注意:你仍然可以对模型进行一些调整和转向,以提高准确性。IT是一个不断学习的过程。