【问题标题】:InvalidArgumentError : input depth must be evenly divisible by filter depth: 4 vs 3InvalidArgumentError:输入深度必须能被过滤器深度整除:4 vs 3
【发布时间】:2020-02-11 18:05:11
【问题描述】:

我是初学者。我尝试通过 Tensorflow 进行图像分类,并得到以下错误。我在网上找到了类似的问题,但我无法理解。错误是什么意思?我该怎么做呢?请给我一些建议。我使用 100 个文件(png/15pix、15pix)作为示例图像。 Tensorflow ver.2.0.0 / python ver.3.8.1 / Jupyter notebook。

    num_epochs = 30
    steps_per_epoch = round(num_train)//BATCH_SIZE
    val_steps = 20
    history = model.fit(train_data.repeat(),
                epochs=num_epochs,
                steps_per_epoch = steps_per_epoch,
                validation_data=val_data.repeat(), 
                validation_steps=val_steps)

InvalidArgumentError:输入深度必须能被过滤器深度整除:4 vs 3 [[nodesequential_2/mobilenetv2_1.00_96/Conv1/Conv2D(定义在 C:\Users\XXXXX\Anaconda3\lib\site-packages\tensorflow_core\python\framework\ops.py:1751)]] [Op:__inference_distributed_function_42611] 函数调用栈: 分布式函数

【问题讨论】:

  • 在没有看到实际代码的情况下,我们无法告诉您代码出了什么问题——仅仅错误信息是不够的。
  • 对不起...我上传了。

标签: python tensorflow error-handling image-comparison


【解决方案1】:

如果您的模型如下所示:

model = tf.keras.Sequential([
tf.keras.layers.Conv2D(16, (3, 3), activation = 'relu', input_shape = (150, 150, 3)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(32, (3, 3), activation = 'relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation = 'relu'),
tf.keras.layers.Dense(10, activation = 'softmax')
])

input_shape(在第一个卷积层)的值从(150, 150, 3)更改为(150, 150, 4)

仅将元组中的最后一项(此处为 3)替换为 4。 那应该可以正常工作。

【讨论】:

    【解决方案2】:

    我找到了答案!就我而言,以下程序对其有所帮助。

    XXX = tf.convert_to_tensor(XXX[:,:,:3])
    

    我希望它也能帮助你。谢谢。

    【讨论】:

      【解决方案3】:

      错误是由于所提供输入的尺寸不匹配造成的。该模型要求输入的深度为“3”,但给出的深度为“4”。

      【讨论】:

        【解决方案4】:

        我遇到了这个错误,因为我使用已转换为灰度的图像作为我的数据。如果有人这样做,您可以从灰度转换为彩色格式,或者在不转换为灰度的情况下重新准备数据,这就是我所做的。

        根据我找到的解决方案: “也许你正试图将灰度图像输入 CNN,它需要彩色图像。找到输入的形状,例如 Keras 中的 print(model.input.shape),你会得到例如 (None, 224, 224, 3) 和你的输入blob 必须具有相应的形状,因此对于灰度图像,您必须将其转换为(正式)彩色图像(所有三个通道都将相同)。但是,不要忘记您还需要了解输入 blob 的其他方面- 均值,范围,偏差,......有一个好的形状,它计算了一些东西,但不考虑这些方面,计算的结果不好”

        【讨论】:

        • 请发布答案而不是添加链接..
        【解决方案5】:

        我认为您阅读的是 4 通道格式的图像。您应该在转发之前将输入图像转换为“RGB”。

        【讨论】:

          猜你喜欢
          • 2020-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-13
          • 1970-01-01
          • 2022-10-02
          • 2020-05-05
          • 1970-01-01
          相关资源
          最近更新 更多