def load_12ECG_model(model_input): """Load Physionet2017 Model model_input: This is an argument from running driver.py on command line. I think we just ignore it and hard-code out model path. """ models_list = [ 'ecgnet_0_fold_0.631593191670484', 'ecgnet_1_fold_0.6370736239012214', 'ecgnet_2_fold_0.6444454717434089', 'ecgnet_3_fold_0.6195938932528102', 'ecgnet_4_fold_0.6149398148500164', 'ecgnet_5_fold_0.6409127451470004' ] os.makedirs(model_input + '/pretrained/', exist_ok=True) # load the model models = [] for i in models_list: model_stack = Model(input_size=19000, n_channels=15, hparams=hparams, gpu=[], inference=True) model_stack.model_load("./inference_models/" + i + ".pt") model_stack.model_save(model_input + '/pretrained/' + i + ".pt") models.append(model_stack) return models
def __init__(self): #load the model self.model = Model() self.model.model_load("./inference_models/ecgnet_0_fold_0.6078759902401878.pt") #load preprocessng pipeline #load thresholds self.postptocessing = PostProcessing(0)
def __init__(self) -> None: RefreshProgramLogs() super().__init__() self.video = cv2.VideoCapture(self.source) self.model = Model(utilsdir=c.UTILSDIR, modeldir=c.MODELDIR, weights=c.WEIGHTS, cfg=c.CFG, labelsdir=c.LABELSDIR, coco=c.COCONAMES, cuda=False) self.active_thread_count: int = None self.p_time: float = 0 self.frame_counter: int = 0
def draw_feature(path='train_log/models/best-accuracy', scale=1, data_set='fashion_mnist'): device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") print(device) checkpoint = torch.load(path, map_location=device) data_loader_train, data_loader_test, data_train, data_test = load_dataset( data_set=data_set) net = Model(n_feature) net.load_state_dict(checkpoint['model_state_dict']) exact_list = ['feature'] feature_extractor = FeatureExtractor(net, exact_list) feature_extractor.to(device) # get weight weight = checkpoint['model_state_dict']['pred.weight'].to('cpu').data weight_norm = weight / torch.norm(weight, dim=1, keepdim=True) print("weight_norm: ", torch.norm(weight, dim=1)) # get feature features = [] labels = [] for data in data_loader_train: X_train, y_train = data X_train = Variable(X_train).to(device) outputs = feature_extractor(X_train)['feature'].data features.append(outputs) labels.append(y_train) features = torch.cat(features, dim=0).to('cpu').data features_norm = features / torch.norm(features, dim=1, keepdim=True) features = features.numpy() features_norm = features_norm.numpy() labels = torch.cat(labels, dim=0).to('cpu').data.numpy() # draw features label_list = get_label_list(data_set) plt.figure(1, figsize=(20, 20)) plt.subplot(221) for i in range(10): plt.plot([0, scale * weight[i, 0]], [0, scale * weight[i, 1]], color=color_list[i]) feature = features[labels == i] plt.scatter(feature[:, 0], feature[:, 1], c=color_list[i], marker='.', label=label_list[i], s=1) plt.legend() plt.subplot(223) for i in range(10): plt.plot([0, weight_norm[i, 0]], [0, weight_norm[i, 1]], color=color_list[i]) feature = features_norm[labels == i] plt.scatter(feature[:, 0], feature[:, 1], c=color_list[i], marker='.', label=label_list[i], s=1) plt.legend() # get feature features = [] labels = [] for data in data_loader_test: X_test, y_test = data X_test = Variable(X_test).to(device) outputs = feature_extractor(X_test)['feature'].data features.append(outputs) labels.append(y_test) features = torch.cat(features, dim=0).to('cpu').data features_norm = features / torch.norm(features, dim=1, keepdim=True) features = features.numpy() features_norm = features_norm.numpy() labels = torch.cat(labels, dim=0).to('cpu').data.numpy() plt.subplot(222) for i in range(10): plt.plot([0, scale * weight[i, 0]], [0, scale * weight[i, 1]], color=color_list[i]) feature = features[labels == i] plt.scatter(feature[:, 0], feature[:, 1], c=color_list[i], marker='.', label=label_list[i], s=1) plt.legend() plt.subplot(224) for i in range(10): plt.plot([0, weight_norm[i, 0]], [0, weight_norm[i, 1]], color=color_list[i]) feature = features_norm[labels == i] plt.scatter(feature[:, 0], feature[:, 1], c=color_list[i], marker='.', label=label_list[i], s=1) plt.legend() title = os.path.basename(os.getcwd()) + '-' + os.path.basename(path) plt.suptitle(title) fname = 'train_log/feature-{}'.format(os.path.basename(path)) figname = 'train_log/{}.png'.format(fname) os.remove(figname) if os.path.exists(figname) else None plt.savefig(fname) plt.close('all')