如何在keras中输入形状张量(10000,299,299,1)到inceptionv3模型?

时间:2017-06-30 05:30:06

标签: tensorflow keras

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

我有10,000张大小(299,299)图像的训练数据集(它们是灰度)。我将它转换为张量流的输入形状为(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必须相等,但对于具有输入形状的“Assign_376”(op:'Assign'),它们是3和32:[3,3,1,32],[32,3,3 ,3]

有人可以帮我解决这个问题吗?我的数据集是灰度的。如何使用张量流后端在keras中输入灰度数据集到inceptionv3我很无能为力。

1 个答案:

答案 0 :(得分:1)

如果您正在使用预先训练过的砝码,则不能简单地将深度更改为1并期望它能够正常工作。这是因为你的第一层卷积滤波器的深度为3.你可以参考这个post来了解可以做些什么。

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

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