def create_joint_model(input_dim, init_w, init_b, gamma, weight_hinge, learning_rate, decay, regulariser=None):
image_input = Input(shape=(input_dim,), dtype='float32', name='image_input')
db_input = Input(shape=(input_dim,), dtype='float32', name="db_input")
shared_layer = Dense(1, input_dim=input_dim, kernel_regularizer=regulariser, kernel_initializer='uniform',
activation="linear", use_bias=True, name='shared_layer')
_ = shared_layer(image_input)
_ = shared_layer(db_input)
model = Model(inputs=[image_input, db_input], outputs=[shared_layer.get_output_at(0), shared_layer.get_output_at(1)])
adam = Adam(lr=learning_rate) # SGD should also work because convex loss function, but Adam converges faster.
model.compile(optimizer=adam, loss=['hinge', 'mse'], loss_weights=[weight_hinge, gamma],
metrics=[my_accuracy, 'mse'])
return model
评论列表
文章目录