【问题标题】:how to input a tensor of shape (10000,299,299,1) to inceptionv3 model in keras?如何在 keras 中将形状 (10000,299,299,1) 的张量输入到 inceptionv3 模型?
【发布时间】:2017-06-30 19:09:20
【问题描述】:

我正在尝试在带有 tensorflow 后端的 keras 中训练一个预训练的 inceptionv3 模型。

我有一个包含 10,000 张大小 (299,299) 图像的训练数据集(它们是灰度图像)。我将它转换为 tensorflow 的输入形状为 (10000,299,299,1)。当我尝试拟合 inceptionv3 模型时,我收到一个错误,因为

ValueError: 检查输入时出错:预期 input_1 的形状为 (None, none, none, 3) 但得到的数组的形状为 (10000, 299, 299, 1)

我尝试通过使用改变张量的输入形状

input_tensor = Input(shape=(299,299,1))
base_model = InceptionV3(weights='imagenet',include_top=False,input_tensor = input_tensor)

我收到以下错误:

ValueError:两个形状中的维度 0 必须相等,但对于输入形状为 [3,3,1,32]、[32,3,3 ,3]。

有人可以帮我解决这个问题吗?我的数据集是灰度的。我不知道如何使用 tensorflow 后端将灰度数据集输入到 keras 中的 inceptionv3。

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    如果您使用的是预训练的权重,您不能简单地将深度更改为 1 并期望它起作用。这是因为您的第一层卷积过滤器的深度为 3。您可以参考此post 了解可以做什么。

    这个错误的意思是你编辑后的第一层权重的形状为[3, 3, 1, 32],这意味着一个深度为 1 的 3x3 卷积滤波器和 32 组这些滤波器。但是,原始模型是[32, 3, 3, 3],这意味着一个深度为 3 的 3x3 卷积过滤器和 32 组这些过滤器。您必须在这里解决 2 个问题:

    1. 将深度更改为 3 并在此之前添加另一层以处理深度 1,或者参考我上面引用的帖子以获取解决此问题的一些选项。
    2. 确保权重的形状以相同的方式编入索引。您的 ValueError 存在一些索引问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-30
      • 2023-03-22
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 2019-01-26
      • 2019-12-12
      • 2020-09-26
      相关资源
      最近更新 更多