def train_model(x_tr, y_tr, conv_f_n):
save_name = 'shape_match_model_endo.h5'
tr_epoch = 15
input_dim = x_tr.shape[2:]
input_a = Input(shape=input_dim)
input_b = Input(shape=input_dim)
base_network = create_cnn_network(input_dim, conv_f_n)
processed_a = base_network(input_a)
processed_b = base_network(input_b)
distance = Lambda(euclidean_distance, output_shape=eucl_dist_output_shape)([processed_a, processed_b])
model_tr = Model(input=[input_a, input_b], output=distance)
# train
# opt_func = RMSprop(lr=.0005, clipnorm=1)
opt_func = RMSprop()
model_tr.compile(loss=contrastive_loss, optimizer=opt_func)
model_tr.fit([x_tr[:, 0], x_tr[:, 1]], y_tr, validation_split=.25,
batch_size=32, verbose=2, nb_epoch=tr_epoch, callbacks=[EarlyStopping(monitor='val_loss', patience=2)])
model_tr.save(save_name)
return model_tr
# test, also provide info on which pair it was trained on and which it was tested on
评论列表
文章目录