Python 如何单独运行多输入keras模型?
我有一个多输入keras模型,看起来像下图中的那个。输入是(244,244,3)。由于内存不足,我无法在计算机上运行它。是否有办法分别运行每个通道,然后连接它们的输出并继续培训 下面是我用来创建模型的代码:Python 如何单独运行多输入keras模型?,python,tensorflow,keras,cnn,Python,Tensorflow,Keras,Cnn,我有一个多输入keras模型,看起来像下图中的那个。输入是(244,244,3)。由于内存不足,我无法在计算机上运行它。是否有办法分别运行每个通道,然后连接它们的输出并继续培训 下面是我用来创建模型的代码: def create_multi_channel_cnn(): channel_1 = create_model(input_shape=(244, 244, 3)) channel_2 = create_model(input_shape=(244, 244, 3))
def create_multi_channel_cnn():
channel_1 = create_model(input_shape=(244, 244, 3))
channel_2 = create_model(input_shape=(244, 244, 3))
# combine the output of the two branches
combined = concatenate([channel_1.output, channel_2.output])
x = Dense(64, activation="relu")(combined)
x = Dense(2, activation="softmax")(x)
model = Model(inputs=[channel_1.input, channel_2.input], outputs=x)
return model
每个通道都有以下层:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) [(None, 224, 224, 3)] 0
_________________________________________________________________
block1_conv1 (Conv2D) (None, 224, 224, 64) 1792
_________________________________________________________________
block1_conv2 (Conv2D) (None, 224, 224, 64) 36928
_________________________________________________________________
block1_pool (MaxPooling2D) (None, 112, 112, 64) 0
_________________________________________________________________
block2_conv1 (Conv2D) (None, 112, 112, 128) 73856
_________________________________________________________________
block2_conv2 (Conv2D) (None, 112, 112, 128) 147584
_________________________________________________________________
block2_pool (MaxPooling2D) (None, 56, 56, 128) 0
_________________________________________________________________
block3_conv1 (Conv2D) (None, 56, 56, 256) 295168
_________________________________________________________________
block3_conv2 (Conv2D) (None, 56, 56, 256) 590080
_________________________________________________________________
block3_conv3 (Conv2D) (None, 56, 56, 256) 590080
_________________________________________________________________
block3_conv4 (Conv2D) (None, 56, 56, 256) 590080
_________________________________________________________________
block3_pool (MaxPooling2D) (None, 28, 28, 256) 0
_________________________________________________________________
如果你分开频道,你必须训练3种不同的CNN模式。但是他们最终会得到三组不同的权重,因为多输入CNN的权重需要在所有通道上一起训练。否则,每个通道都会有不同的模型。你可以试着转换成灰度,看看你的记忆是否能处理它,你是否能获得很好的精确度。如果内存不足——请购买GPU:如果运行,你可以考虑为每个通道训练3种不同的模型,并进行某种[StudioLeopy]()-JasoLali,所以我需要单独训练每个通道作为一个模型来保存它们,然后加载它们并将它们叠加在一起。您可以阅读有关model Enseming的信息,以找到您最喜欢的套件。但是,请再次记住,此过程并不等同于在3通道图像集上训练多输入CNN,您将获得不同的性能/结果(不一定更糟;)ML是一门非常经验性的科学,因此尝试不同的方法没有错,嗯,这听起来很奇怪,你不能在GPU上加载244x244 rgb图像(看起来很好,很新)。我在更大的图像上使用了类似的硬件,没有问题。也许你的代码/设置有问题。您在培训中使用的批量大小是多少?您是否尝试过使用较小的批量大小(例如5个)?