更改Keras中的输入大小

时间:2018-04-27 13:14:29

标签: 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

这实际上会相应地改变输入图层的大小,但以下图层仍然需要(128,128,filters)个输入。

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

1 个答案:

答案 0 :(得分:4)

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

newModel.set_weights(oldModel.get_weights())

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