如何重构/重新格式化包含要输入到 Tensorflow 的 model.fit() 中的图像的 Pandas 数据帧?
Posted
技术标签:
【中文标题】如何重构/重新格式化包含要输入到 Tensorflow 的 model.fit() 中的图像的 Pandas 数据帧?【英文标题】:How to restructure/reformat Pandas dataframe containing images to be fed into Tensorflow's model.fit()? 【发布时间】:2020-10-09 05:25:08 【问题描述】:在预处理要输入到 Tensorflow 卷积神经网络的一组图像时,我创建了一个包含两列的 Pandas 数据框。
第一个包含 13200、1/255 重新缩放的图像(特别是它们各自的训练/测试和类目录的文件路径)填充到数据框中,这样,除非我将要显示的错误,否则应该准备好传统的 sklearn test_train_split。第二列包含与每个图像关联的类标签。这是数据框的样子:
(the dataframe)
现在,错误。在检查单个图像的形状时,我得到了正确的 (-,-,-) 尺寸,在检查整个 X_train 数据帧的形状时,我收到的输出是 (10560, )。与 CIFAR-10 数据集一样,我期望 (10560, 150, 150, 3) 的形状能够完全表示我的数据集的维度。无论我输入什么作为我的 Conv2D 层的 input_shape,我都会收到以下错误:
ValueError: Input 0 of layer sequential is incompatible with the layer: expected ndim=4, found ndim=2. Full shape received: [32, 1]
因此,我认为解决此错误的正确问题是如何重组和/或更改第 1 列中的图像输入,以便产生正确的数据集形状以符合模型拟合?
【问题讨论】:
【参考方案1】:tf.keras.layers.Conv2D 层期望输入形状为4+D
张量,形状为:batch_shape + (channels, rows, cols)
,如果 data_format='channels_first' 或4+D
张量,形状:batch_shape + (rows, cols, channels)
,如果 data_format='channels_last'。
确保您的 X_train 是 4D 形状。
【讨论】:
以上是关于如何重构/重新格式化包含要输入到 Tensorflow 的 model.fit() 中的图像的 Pandas 数据帧?的主要内容,如果未能解决你的问题,请参考以下文章