我正在使用Python 3.7和TensorFlow来创建一个基于CIFAR-100的图像分类器。我尽量避免使用Keras,因为它可用的数据集非常有限。以下是我的代码:
我猜测for features in train
循环可能有问题。当我打印训练图像/标签的len
时,得到的是16。因此,我的模型训练准确率为0%,损失为16.1181%。有谁能帮我解决这个问题吗?
回答:
要直接在Keras模型中使用CIFAR-100数据集,您应该在调用tfds.load
函数时使用as_supervised=True
参数。这样会加载仅包含’图像’和’标签’键的数据集。您可以看到CIFAR-100数据集包含三个键:
FeaturesDict({ 'coarse_label': ClassLabel(shape=(), dtype=tf.int64, num_classes=20), 'image': Image(shape=(32, 32, 3), dtype=tf.uint8), 'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=100),})
因此它不能直接输入到model.fit()
中。将as_supervised
设为True后,返回的数据集将仅包含(u'image', u'label')
键。
总结如下,
注意:如果不将as_supervised
设为True,您可以使用model.train_on_batch
函数来使用数据集。例如,