如何使用Tensorflow数据集进行CNN模型训练
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Tensorflow数据集进行CNN模型训练相关的知识,希望对你有一定的参考价值。
我想使用tf.data.Dataset
类来填充数据
from tensorflow_core.python.keras.datasets import cifar10
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()
train_dataset = tf.data.Dataset.from_tensor_slices((train_images, train_labels))
test_dataset = tf.data.Dataset.from_tensor_slices((test_images, test_labels))
我这样做是为了在管道中使用
Dataset
。进一步使用
Dataset
的其他功能。
我正在这样定义我的模型
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPool2D((2, 2)))
# more layers
但是当我打电话训练模型时
model.fit(train_dataset, epochs=10, validation_data=test_dataset, callbacks=[ cp_callback])
我收到错误
ValueError:检查输入时出错:预期conv2d_input具有4维,但数组的形状为(32,32,3)
- 真正发生了什么?如何在Conv2D图层中使用input_shape =(32,32,3)的
DataSet
?
Tensorflow教程(https://www.tensorflow.org/tutorials/load_data/numpy)没有涵盖这种情况,我无法找到可以帮助我解决问题的解释。
答案
将此数据集的连续元素合并为批。结果元素的组件将具有一个额外的外部尺寸,将是batch_size
(或最后一个N % batch_size
如果batch_size
不除以输入元素N
的数量且drop_remainder
为False
。如果您的程序取决于具有相同外部尺寸的批次,应设置drop_remainder
True
的参数以防止生成较小的批次。
以上是关于如何使用Tensorflow数据集进行CNN模型训练的主要内容,如果未能解决你的问题,请参考以下文章