【发布时间】:2021-10-21 04:14:17
【问题描述】:
我有一个包含灰度图像的数据集,我想在它们上训练一个最先进的 CNN。我非常想微调一个预训练模型(比如here)。
问题是我能找到权重的几乎所有模型都在包含 RGB 图像的 ImageNet 数据集上进行了训练。
我不能使用其中一个模型,因为在我的情况下,它们的输入层需要一批形状 (batch_size, height, width, 3) 或 (64, 224, 224, 3),但我的图像批是 (64, 224, 224)。
有什么方法可以让我使用其中一种模型吗?在加载权重并添加自己的权重后,我曾考虑删除输入层(就像我们对顶层所做的那样)。这种方法正确吗?
【问题讨论】:
-
您可以尝试删除输入层并添加自己的。然后您可以尝试仅训练该层。如果在锁定所有其他层的情况下您没有看到损失减少,那么这种方式对您来说是行不通的。
-
不要问我们这种做法是否正确:问电脑!试试吧!另一种方法是将输入向量增加三倍:将灰度值提供给所有三个颜色层。
-
我个人的感觉是,这对你来说是行不通的。这些分类网络肯定是使用颜色之间的相互关系来对物体进行分类,而这些信息在中间层的权重中根深蒂固
-
@Prune 训练这些模型可能需要几天时间,如果有人之前遇到过这个问题,我会很感激......
-
正如其他人所提到的,堆叠 3 个相同的灰度数组作为输入是可行的——但我会将此作为实现更多数据增强的机会——将图像过滤器应用于原始灰度图像并随机将它们分配给 3 个通道。
标签: python tensorflow machine-learning keras deep-learning