from siamese import SiameseNetwork # Construct Siamese network model, base_network = SiameseNetwork() model.load_weights('/book/working/models/siamese.h5') def intermediate(embs): return base_network.predict(embs)
siamese_callbacks = [ EarlyStopping(monitor='val_acc', patience=10, verbose=0), ModelCheckpoint(siamese_checkpoint_path, monitor='val_acc', save_best_only=True, verbose=0) ] siamese_network.fit(x_train, y_train, validation_data=(x_test, y_test), batch_size=1000, epochs=epochs, callbacks=siamese_callbacks) siamese_network.load_weights(siamese_checkpoint_path) embedding = base_model.outputs[-1] y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes) # Add softmax layer to the pre-trained embedding network embedding = Dense(num_classes)(embedding) embedding = BatchNormalization()(embedding) embedding = Activation(activation='sigmoid')(embedding) model = Model(base_model.inputs[0], embedding) model.compile(loss=keras.losses.binary_crossentropy, optimizer=keras.optimizers.adam(), metrics=['accuracy'])