如何用Tensorflow加载花的数据集并进行处理
Tensorflow花卉数据集是一个大型的花卉图像数据集。在这篇文章中,我们将看到,我们如何使用Tensorflow来加载花卉数据集并与之合作。
让我们从导入必要的库开始。在这里,我们将使用tensorflow_dataset库来加载数据集。它是一个公共数据集库,可以随时与TensorFlow一起使用。如果你没有下面提到的任何一个库,你可以使用pip命令来安装它们,例如,要安装tensorflow_datasets库,你需要编写以下命令。
为了导入花数据集,我们要使用tfds.load()方法。它用于将使用name参数提供的命名数据集加载到tf.data.Dataset中。花卉数据集的名称是 tf_flowers 。在该方法中,我们还使用split参数来分割数据集,training_set占数据集的70%,其余的归入test_set。
如果我们使用print命令打印Tensorflow为数据集提供的信息,我们将得到以下输出。
输出:
花卉数据集包含3670张花卉图像,它们以如下方式分布在training_set和test_set中。
Output:
花卉数据集由5种不同花卉的图像组成。
输出:
现在让我们把数据集中的一些图像可视化。下面的代码显示了数据集中的前5张图片。
输出:
如果你仔细观察,不同的图像并没有相同的尺寸,而是有不同的尺寸。我们可以通过打印我们刚才可视化的图像的尺寸来验证这一点。下面的代码实现了这个目标:
输出:
正如你可能观察到的,各种图像的形状是不同的。
然而,为了将这个数据集输入机器学习模型,我们需要让所有的图像都具有相同的尺寸。为此,我们将对图像进行一些预处理。也就是说,我们将把所有的图像调整到一个固定的尺寸,在这种情况下是224,并对图像进行标准化处理,使每个像素的值都在0到1的范围内。
打印这两个数据集可以看到,数据集中的每张图片都被调整了大小,每张图片的大小为(224,224,3)。
输出:
现在你可以把这个数据集输入任何适当的机器学习模型。
为了演示的目的,我们将使用一个修改过的MobileNet版本来训练这个数据集。以下是描述模型、优化器、损失函数和训练模型时使用的指标的代码。
输出:
该模型现在在数据集上的表现很差。你可以对模型进行更长时间的训练,也可以对输出变量使用单次编码来提高准确率。