def validation(validation_data_loader: torch.utils.data.DataLoader, model: SupervisedModel, local_rank: int) -> tuple: """ :param validation_data_loader: Validation data loader :param model: ResNet based classifier. :param local_rank: local rank. :return: validation loss, the number of corrected samples, and the size of samples on a local """ model.eval() sum_loss = torch.tensor([0.]).to(local_rank) num_corrects = torch.tensor([0.]).to(local_rank) with torch.no_grad(): for data, targets in validation_data_loader: data, targets = data.to(local_rank), targets.to(local_rank) unnormalized_features = model(data) loss = torch.nn.functional.cross_entropy(unnormalized_features, targets, reduction="sum") predicted = torch.max(unnormalized_features.data, 1)[1] sum_loss += loss.item() num_corrects += (predicted == targets).sum() return sum_loss, num_corrects
batch_size=64, num_batches=31000) # Create object to local contrast normalize a batch. # Note: Every batch must be normalized before use. normer = util.Normer3(filter_size=5, num_channels=1) module_list = [normer] preprocessor = util.Preprocessor(module_list) print('Training Model') for x_batch, y_batch in train_iterator: #x_batch = preprocessor.run(x_batch) x_batch = (x_batch - mean) / std # loop over batch for i in range(len(x_batch)): # hide patch for an image x_batch[i] = hide_patch(x_batch[i]) monitor.start() log_prob, accuracy = model.train(x_batch, y_batch) monitor.stop(1 - accuracy) # monitor takes error instead of accuracy if monitor.test: monitor.start() x_val_batch, y_val_batch = val_iterator.next() #x_val_batch = preprocessor.run(x_val_batch) x_val_batch = (x_val_batch - mean) / std val_accuracy = model.eval(x_val_batch, y_val_batch) monitor.stop_test(1 - val_accuracy)
X_test = numpy.float32(X_test) X_test /= 255.0 X_test *= 2.0 train_dataset = supervised_dataset.SupervisedDataset(X_train, y_train) val_dataset = supervised_dataset.SupervisedDataset(X_val, y_val) train_iterator = train_dataset.iterator( mode='random_uniform', batch_size=64, num_batches=31000) val_iterator = val_dataset.iterator( mode='random_uniform', batch_size=64, num_batches=31000) # Create object to local contrast normalize a batch. # Note: Every batch must be normalized before use. normer = util.Normer3(filter_size=5, num_channels=1) module_list = [normer] preprocessor = util.Preprocessor(module_list) print('Training Model') for x_batch, y_batch in train_iterator: x_batch = preprocessor.run(x_batch) monitor.start() log_prob, accuracy = model.train(x_batch, y_batch) monitor.stop(1-accuracy) if monitor.test: monitor.start() x_val_batch, y_val_batch = val_iterator.next() x_val_batch = preprocessor.run(x_val_batch) val_accuracy = model.eval(x_val_batch, y_val_batch) monitor.stop_test(1-val_accuracy)
y_test = test_data_container.y train_dataset = supervised_dataset.SupervisedDataset(X_train, y_train) test_dataset = supervised_dataset.SupervisedDataset(X_test, y_test) train_iterator = train_dataset.iterator(mode='random_uniform', batch_size=64, num_batches=31000) test_iterator = test_dataset.iterator(mode='random_uniform', batch_size=64, num_batches=31000) # Create object to local contrast normalize a batch. # Note: Every batch must be normalized before use. normer = util.Normer3(filter_size=5, num_channels=1) module_list = [normer] preprocessor = util.Preprocessor(module_list) print('Training Model') for x_batch, y_batch in train_iterator: x_batch = preprocessor.run(x_batch) monitor.start() log_prob, accuracy = model.train(x_batch, y_batch) monitor.stop(1 - accuracy) if monitor.test: monitor.start() x_test_batch, y_test_batch = test_iterator.next() x_test_batch = preprocessor.run(x_test_batch) test_accuracy = model.eval(x_test_batch, y_test_batch) monitor.stop_test(1 - test_accuracy)
X_test /= 255.0 X_test *= 2.0 y_test = test_data_container.y train_dataset = supervised_dataset.SupervisedDataset(X_train, y_train) test_dataset = supervised_dataset.SupervisedDataset(X_test, y_test) train_iterator = train_dataset.iterator( mode='random_uniform', batch_size=64, num_batches=31000) test_iterator = test_dataset.iterator( mode='random_uniform', batch_size=64, num_batches=31000) # Create object to local contrast normalize a batch. # Note: Every batch must be normalized before use. normer = util.Normer3(filter_size=5, num_channels=1) module_list = [normer] preprocessor = util.Preprocessor(module_list) print('Training Model') for x_batch, y_batch in train_iterator: x_batch = preprocessor.run(x_batch) monitor.start() log_prob, accuracy = model.train(x_batch, y_batch) monitor.stop(1-accuracy) if monitor.test: monitor.start() x_test_batch, y_test_batch = test_iterator.next() x_test_batch = preprocessor.run(x_test_batch) test_accuracy = model.eval(x_test_batch, y_test_batch) monitor.stop_test(1-test_accuracy)