首页 文章

更改Keras中的输入大小

提问于
浏览
2

我用Keras训练了一个完全卷积的神经网络 . 我使用了Functional API,并将输入图层定义为 Input(shape=(128,128,3)) ,对应于训练集中图像的大小 .

但是,我想在 variable 尺寸的图像上使用经过训练的模型(这应该没问题,因为网络是完全卷积的) . 为此,我需要将输入图层更改为 Input(shape=(None,None,3)) . 解决问题的显而易见的方法是直接用输入形状 (None,None,3) 训练我的模型,但我使用自定义丢失函数,我需要指定训练图像的大小 .

我试图定义一个新的输入层并将其分配给我的模型,如下所示:

from keras.engine import InputLayer

input_layer = InputLayer(input_shape=(None, None, 3), name="input")
model.layers[0] = input_layer

这实际上相应地改变了输入层的大小,但是下面的层仍然期望 (128,128,filters) 输入 .

有没有办法一次更改所有输入值?

1 回答

  • 4

    除了新的输入形状外,创建一个完全相同的新模型;和转移重量:

    newModel.set_weights(oldModel.get_weights())
    

    如果出现任何问题,那么它可能不是完全卷积的(例如:包含Flatten图层) .

相关问题