Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何单独运行多输入keras模型?_Python_Tensorflow_Keras_Cnn - Fatal编程技术网

Python 如何单独运行多输入keras模型?

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))

我有一个多输入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))
           
    # 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个)?