def test_reset(self): root = Metric('test') root.reset = Mock() leaf = Metric('test') leaf.reset = Mock() tree = MetricTree(root) tree.add_child(leaf) tree.reset({}) root.reset.assert_called_once_with({}) leaf.reset.assert_called_once_with({})
def test_main_loop_metrics(self): metric = Metric('test') metric.process = Mock(return_value={'test': 0}) metric.process_final = Mock(return_value={'test': 0}) metric.reset = Mock(return_value=None) data = [(torch.Tensor([1]), torch.Tensor([1])), (torch.Tensor([2]), torch.Tensor([2])), (torch.Tensor([3]), torch.Tensor([3]))] generator = DataLoader(data) train_steps = len(data) epochs = 1 callback = MagicMock() torchmodel = MagicMock() torchmodel.forward = Mock(return_value=1) optimizer = MagicMock() loss = torch.tensor([2], requires_grad=True) criterion = Mock(return_value=loss) torchbearermodel = Model(torchmodel, optimizer, criterion, [metric]) torchbearerstate = torchbearermodel.fit_generator(generator, train_steps, epochs, 0, [callback], initial_epoch=0, pass_state=False) torchbearerstate[torchbearer.METRIC_LIST].metric_list[0].reset.assert_called_once() self.assertTrue(torchbearerstate[torchbearer.METRIC_LIST].metric_list[0].process.call_count == len(data)) torchbearerstate[torchbearer.METRIC_LIST].metric_list[0].process_final.assert_called_once() self.assertTrue(torchbearerstate[torchbearer.METRICS]['test'] == 0)
def test_test_loop_metrics(self): metric = Metric('test') metric.process = Mock(return_value={'test': 0}) metric.process_final = Mock(return_value={'test': 0}) metric.reset = Mock(return_value=None) metric_list = MetricList([metric]) data = [(torch.Tensor([1]), torch.Tensor([1])), (torch.Tensor([2]), torch.Tensor([2])), (torch.Tensor([3]), torch.Tensor([3]))] validation_generator = DataLoader(data) validation_steps = len(data) callback = MagicMock() callback_List = torchbearer.CallbackList([callback]) torchmodel = MagicMock() torchmodel.forward = Mock(return_value=1) optimizer = MagicMock() criterion = Mock(return_value=2) torchbearermodel = Model(torchmodel, optimizer, criterion, [metric]) state = torchbearermodel.main_state.copy() state.update({torchbearer.METRIC_LIST: metric_list, torchbearer.VALIDATION_GENERATOR: validation_generator, torchbearer.CallbackList: callback_List, torchbearer.MODEL: torchmodel, torchbearer.VALIDATION_STEPS: validation_steps, torchbearer.CRITERION: criterion, torchbearer.STOP_TRAINING: False, torchbearer.METRICS: {}}) torchbearerstate = torchbearermodel._test_loop(state, callback_List, False, Model._load_batch_standard, num_steps=None) torchbearerstate[torchbearer.METRIC_LIST].metric_list[0].reset.assert_called_once() self.assertTrue(torchbearerstate[torchbearer.METRIC_LIST].metric_list[0].process.call_count == len(data)) torchbearerstate[torchbearer.METRIC_LIST].metric_list[0].process_final.assert_called_once() self.assertTrue(torchbearerstate[torchbearer.METRICS]['test'] == 0)
def test_reset(self): my_mock = Metric('test') my_mock.reset = Mock(return_value=None) metric = MetricList([my_mock]) metric.reset({'state': -1}) my_mock.reset.assert_called_once_with({'state': -1})