我正在尝试训练具有两个输入分支的CNN。并且这两个分支(b1,b2)将合并为256个神经元的密集连接层,其丢失率为0.25。这是我到目前为止所拥有的:

batch_size, epochs = 32, 3
ksize = 2
l2_lambda = 0.0001


### My first model(b1)
b1 = Sequential()
b1.add(Conv1D(128*2, kernel_size=ksize,
             activation='relu',
             input_shape=( xtest.shape[1], xtest.shape[2]),
             kernel_regularizer=keras.regularizers.l2(l2_lambda)))
b1.add(Conv1D(128*2, kernel_size=ksize, activation='relu',kernel_regularizer=keras.regularizers.l2(l2_lambda)))
b1.add(MaxPooling1D(pool_size=ksize))
b1.add(Dropout(0.2))

b1.add(Conv1D(128*2, kernel_size=ksize, activation='relu',kernel_regularizer=keras.regularizers.l2(l2_lambda)))
b1.add(MaxPooling1D(pool_size=ksize))
b1.add(Dropout(0.2))

b1.add(Flatten())

###My second model (b2)

b2 = Sequential()
b2.add(Dense(64, input_shape = (5000,), activation='relu',kernel_regularizer=keras.regularizers.l2(l2_lambda)))
b2.add(Dropout(0.1))


##Merging the two models
model = Sequential()
model.add(concatenate([b1, b2],axis = -1))
model.add(Dense(256, activation='relu', kernel_initializer='normal',kernel_regularizer=keras.regularizers.l2(l2_lambda)))
model.add(Dropout(0.25))
model.add(Dense(num_classes, activation='softmax'))


但是,当我串联时,会出现以下错误:

python - Keras.layers.concatenate产生错误'-LMLPHP

我首先尝试使用以下命令:

  model.add(Merge([b1, b2], mode = 'concat'))


但是我收到了“ ImportError:无法导入名称”“ Merge”的错误。我正在使用keras 2.2.2和python 3.6。

最佳答案

您需要使用functional API来实现所需的功能。您可以使用Concatenate层或其等效功能的API concatenate

concat = Concatenate(axis=-1)([b1.output, b2.output])
# or you can use the functional api as follows:
#concat = concatenate([b1.output, b2.output], axis=-1)

x = Dense(256, activation='relu', kernel_initializer='normal',
          kernel_regularizer=keras.regularizers.l2(l2_lambda))(concat)
x = Dropout(0.25)(x)
output = Dense(num_classes, activation='softmax')(x)

model = Model([b1.input, b2.input], [output])


请注意,我仅将模型的最后一部分转换为功能形式。您可以对其他两个模型b1b2做同样的事情(实际上,您似乎要定义的体系结构是一个包含两个合并在一起的分支的单一模型)。最后,使用model.summary()查看并重新检查模型的体系结构。

关于python - Keras.layers.concatenate产生错误',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52328130/

10-09 19:08