在Keras中更改输入大小

Nat*_*ens 3 python neural-network deep-learning keras

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

但是,我想在可变大小的图像上使用经过训练的模型(应该可以,因为网络是完全卷积的)。为此,我需要将输入层更改为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
Run Code Online (Sandbox Code Playgroud)

实际上,这实际上会更改输入层的大小,但随后的层仍然需要(128,128,filters)输入。

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

Dan*_*ler 5

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

newModel.set_weights(oldModel.get_weights())
Run Code Online (Sandbox Code Playgroud)

如果出现任何问题,则可能不是完全卷积(例如:包含Flatten层)。