{"record":{"id":"245969b77477d413","repo":"WZMIAOMIAO/deep-learning-for-image-processing","slug":"please-run-accumulate-first-245969","errorCode":null,"errorMessage":"Please run accumulate() first","messagePattern":"Please run accumulate\\(\\) first","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"pytorch_object_detection/faster_rcnn/validation.py","lineNumber":87,"sourceCode":"\n    stats, print_list = [0] * 12, [\"\"] * 12\n    stats[0], print_list[0] = _summarize(1)\n    stats[1], print_list[1] = _summarize(1, iouThr=.5, maxDets=self.params.maxDets[2])\n    stats[2], print_list[2] = _summarize(1, iouThr=.75, maxDets=self.params.maxDets[2])\n    stats[3], print_list[3] = _summarize(1, areaRng='small', maxDets=self.params.maxDets[2])\n    stats[4], print_list[4] = _summarize(1, areaRng='medium', maxDets=self.params.maxDets[2])\n    stats[5], print_list[5] = _summarize(1, areaRng='large', maxDets=self.params.maxDets[2])\n    stats[6], print_list[6] = _summarize(0, maxDets=self.params.maxDets[0])\n    stats[7], print_list[7] = _summarize(0, maxDets=self.params.maxDets[1])\n    stats[8], print_list[8] = _summarize(0, maxDets=self.params.maxDets[2])\n    stats[9], print_list[9] = _summarize(0, areaRng='small', maxDets=self.params.maxDets[2])\n    stats[10], print_list[10] = _summarize(0, areaRng='medium', maxDets=self.params.maxDets[2])\n    stats[11], print_list[11] = _summarize(0, areaRng='large', maxDets=self.params.maxDets[2])\n\n    print_info = \"\\n\".join(print_list)\n\n    if not self.eval:\n        raise Exception('Please run accumulate() first')\n\n    return stats, print_info\n\n\ndef main(parser_data):\n    device = torch.device(parser_data.device if torch.cuda.is_available() else \"cpu\")\n    print(\"Using {} device training.\".format(device.type))\n\n    data_transform = {\n        \"val\": transforms.Compose([transforms.ToTensor()])\n    }\n\n    # read class_indict\n    label_json_path = './pascal_voc_classes.json'\n    assert os.path.exists(label_json_path), \"json file {} dose not exist.\".format(label_json_path)\n    with open(label_json_path, 'r') as f:\n        class_dict = json.load(f)\n","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/blob/1ec3fe6f374fc9969973a61f819de25658595afa/pytorch_object_detection/faster_rcnn/validation.py#L69-L105","documentation":"The COCO-style summarizer raises 'Please run accumulate() first' when summarize() is called before evaluate()/accumulate() has populated self.eval. self.eval holds the accumulated detection results needed to compute stats.","triggerScenarios":"Calling summarize() on a freshly constructed evaluator without first running evaluate()/accumulate(), or when accumulation produced no results (e.g. empty predictions).","commonSituations":"Validation loop that forgets to call accumulate after updating; early exit before any batches processed so self.eval stays None.","solutions":["Call accumulate() (or the full evaluate -> accumulate sequence) before summarize()","Ensure the dataloader yielded at least one batch and update() was called so self.eval is populated","Guard summarize with a check: if evaluator.eval is None: run accumulate first"],"exampleFix":"// before\nstats, info = evaluator.summarize()\n// after\nevaluator.accumulate()\nstats, info = evaluator.summarize()","handlingStrategy":"try-catch","validationCode":"if evaluator.eval is None:\n    evaluator.accumulate()\nstats, info = evaluator.summarize()","typeGuard":null,"tryCatchPattern":"try:\n    stats, info = evaluator.summarize()\nexcept Exception as e:\n    if \"accumulate()\" in str(e):\n        evaluator.accumulate()\n        stats, info = evaluator.summarize()","preventionTips":["Always follow the evaluate -> accumulate -> summarize sequence","Ensure at least one batch is processed before summarizing","Wrap summarize behind a helper that lazily calls accumulate"],"tags":["python","runtimeerror","evaluation","lifecycle"],"backgroundTag":"method-called-out-of-order","analyzedSha":"1ec3fe6f374fc9969973a61f819de25658595afa","analyzedAt":"2026-08-30T09:19:11.901Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}