ax.yaxis.set_ticklabels(['FAKE', 'REAL']) print(cm) return count_success / count_total if count_total > 0 else 0 def display_accuracy_graph(probability_threshold_list, accuracy_list, image_output_file=""): plt.plot(probability_threshold_list, accuracy_list, label='p / accuracy') plt.xlabel('Probability Threshold') plt.ylabel('Loss') plt.legend() plt.title("Accuracy for given threshold") if len(image_output_file) > 0: plt.savefig(image_output_file) plt.show() model_location = join(Parameters.OUTPUT_4_FOLDER, Parameters.MODEL_FILE_NAME) model = BERT() model = model.to(Parameters.DEVICE) SaveLoad.load_checkpoint(model_location, model) output_image_file = join(model_location, "accuracies.png") dataset = { "data_file": join(Parameters.SOURCE_4_FOLDER, "output.tsv"), "output_dir": join(Parameters.SOURCE_4_FOLDER, "output") } iterator = DatasetPrepare.create_iterators(dataset["data_file"], split_to_train_and_test=False) thresholds = [t / 100 for t in range(50, 100, 2)] accuracies = [evaluate_with_probability(model=model, test_loader=iterator, p=p) for p in thresholds] display_accuracy_graph(thresholds, accuracies, image_output_file=output_image_file)
from flask import Flask, request, jsonify, json from BERT import BERT import DatasetPrepare import Parameters import SaveLoad import os model = BERT().to(Parameters.DEVICE) model_load_path = os.path.join("Data", "Dataset4", "output", "model.pt") SaveLoad.load_checkpoint(load_path=model_load_path, model=model) app = Flask(__name__) @app.route('/patternModel', methods=["POST"]) def index(): body = request.get_json() titles = body['titles'] tokenized_titles = DatasetPrepare.encode_bert(titles) prediction_tensor = model(tokenized_titles) prediction_of_true_label = [ pred_tensor[Parameters.TRUE_LABEL_INDEX] for pred_tensor in prediction_tensor.squeeze().tolist() ] return {"prediction": prediction_of_true_label} if __name__ == "__main__": app.run()