我只是希望澄清之前一篇文章的一些信息,该文章讨论了如何将 Keras 预训练模型(如 VGG 或 InceptionV3)扩展到不同大小的图像。我的问题是我有一些 8 波段的卫星图像。所以图像可能是650x650x8
而不是通常的 RBG 3 波段图像。我想知道是否可以在具有 8 个波段而不是 3 个波段的图像上使用 Keras 预训练模型。
现在有一篇原始文章涉及与此类似的内容。参考文章是关于将 Keras VGG 预训练模型应用于不同尺寸的图像。所以VGG接受了训练224x224x3
用户想要针对以下图像使用该模型160x320x3
.
这是原始帖子:更改 VGG16 应用程序的输入张量形状 https://stackoverflow.com/questions/41903051/change-input-tensor-shape-for-vgg16-application
这是原始帖子中的代码:
from keras.models import Model
from keras.layers import Dense,Flatten
from keras.applications import vgg16
from keras import backend as K
model = vgg16.VGG16(weights='imagenet', include_top=False, input_shape=(160,320,3))
model.summary(line_length=150)
flatten = Flatten()
new_layer2 = Dense(10, activation='softmax', name='my_dense_2')
inp2 = model.input
out2 = new_layer2(flatten(model.output))
model2 = Model(inp2, out2)
model2.summary(line_length=150)
因此,如果我将第 6 行替换为:
model = vgg16.VGG16(weights='imagenet', include_top=False, input_shape=(650,650,8))
这会起作用,还是预训练模型不会接受通道的增加,因为它会接受图像高度或宽度的变化?
此外,我还必须使用额外的通道对模型进行额外的训练。但我不清楚预训练模型如何实际实现此扩展。添加节点的权重是否只是设置为 0 或者某种初始化器确定的权重?我正在尝试估算我需要做多少额外训练。
感谢您的任何提示或建议。