在Keras的合并层上进行培训

在Keras的合并层上进行培训,第1张

在Keras的合并层上进行培训
from keras.layers import *from keras.models import Modelprint 'Compiling two-path model...'# Input of the modelinput_model = Input(shape=(4,33,33))# Local pathway#Add first convolutionmodel_l = Convolution2D(64,7,7,      border_mode='valid',       activation='relu',       W_regularizer=l1l2(l1=0.01, l2=0.01))(input_model)model_l = BatchNormalization(mode=0,axis=1)(model_l)model_l = MaxPooling2D(pool_size=(2,2),strides=(1,1))(model_l)model_l = Dropout(0.5)(model_l)#Add second convolutionmodel_l = Convolution2D(64,3,3,  border_mode='valid',  W_regularizer=l1l2(l1=0.01, l2=0.01),  input_shape=(4,33,33))(model_l)model_l = BatchNormalization(mode=0,axis=1)(model_l)model_l = MaxPooling2D(pool_size=(4,4),strides=(1,1))(model_l)model_l = Dropout(0.5)(model_l)#global pathwaymodel_g = Convolution2D(160,12,12,  border_mode='valid',   activation='relu',  W_regularizer=l1l2(l1=0.01, l2=0.01))(input_model)model_g = BatchNormalization(mode=0,axis=1)(model_g)model_g = MaxPooling2D(pool_size=(2,2), strides=(1,1))(model_g)model_g = Dropout(0.5)(model_g)# merge local and global pathwaysmerge = Merge(mode='concat', concat_axis=1)([model_l,model_g])merge = Convolution2D(5,21,21,border_mode='valid',W_regularizer=l1l2(l1=0.01, l2=0.01))(merge)merge = Flatten()(merge)predictions = Dense(5, activation='softmax')(merge)model_merged = Model(input=input_model,output=predictions)sgd = SGD(lr=0.001, decay=0.01, momentum=0.9)model_merged.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])print('Done')return model_merged

这等效于您发布但通过Functional API定义的网络

如您所见,只有1个Input图层,使用了两次。然后,您可以像说的那样训练它:

model_merged.fit(X_train, Y_train, batch_size=self.batch_size, nb_epoch=self.n_epoch, validation_split=0.1, verbose=1)

这有帮助吗?



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5667613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存