print("[*] Training") best_avg_acc = 0 for epoch in range(args.epochs): # Train tag = '' # tag = '*' if the model was saved in the last epoch train_total_loss = 0 running_acc_flickr, running_acc_sketches = 0, 0 for i, (first, second, first_label, second_label, similarity) in enumerate(train_loader): # first: flickr, second: sketches first, second, similarity = first.to(args.device), second.to( args.device), similarity.to(args.device) first_label, second_label = first_label.to( args.device), second_label.to(args.device) pred = contrastive_net.forward((first, second, None), include_negative=False) pred_feats_first = pred['feats']['anchor'] pred_feats_second = pred['feats']['positive'] pred_logits_first = pred['logits']['anchor'] pred_logits_second = pred['logits']['positive'] # region: optimization step optimizer.zero_grad() loss_contrastive = contrastive_loss(pred_feats_first, pred_feats_second, similarity) loss_classifier_sketches = cross_entropy_loss( pred_logits_first, first_label) loss_classifier_flickr = cross_entropy_loss( pred_logits_second, second_label) loss = 0.6 * (0.5 * (loss_classifier_flickr +
config.learning_rate = args.lr print("[*] Training") best_avg_acc = 0 for epoch in range(args.epochs): # Train tag = '' # tag = '*' if the model was saved in the last epoch train_total_loss = 0 running_acc_anchor, running_acc_positive, running_acc_negative = 0, 0, 0 for i, (a, p, n, a_l, p_l, n_l) in enumerate(train_loader): # first: flickr, second: sketches a, p, n = a.to(args.device), p.to(args.device), n.to(args.device) a_l, p_l, n_l = a_l.to(args.device), p_l.to(args.device), n_l.to( args.device) pred = siamese_net.forward((a, p, n), include_negative=True) pred_feats_anchor = pred['feats']['anchor'] pred_feats_positive = pred['feats']['positive'] pred_feats_negative = pred['feats']['negative'] pred_logits_anchor = pred['logits']['anchor'] pred_logits_positive = pred['logits']['positive'] pred_logits_negative = pred['logits']['negative'] # region: optimization step optimizer.zero_grad() loss_triplet = triplet_loss(pred_feats_anchor, pred_feats_positive, pred_feats_negative) loss_classifier_anchor = cross_entropy_loss( pred_logits_anchor, a_l)