{"record":{"id":"2e6ebb808de534dd","repo":"tensorflow/models","slug":"eval-batch-size-is-not-divisible-by","errorCode":null,"errorMessage":"Eval batch size {} is not divisible by {}","messagePattern":"Eval batch size (.+?) is not divisible by (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/recommendation/data_pipeline.py","lineNumber":425,"sourceCode":"    self.eval_batch_size = eval_batch_size\n    self.num_train_epochs = num_train_epochs\n    self.create_data_offline = create_data_offline\n\n    # Training\n    if self._train_pos_users.shape != self._train_pos_items.shape:\n      raise ValueError(\n          \"User positives ({}) is different from item positives ({})\".format(\n              self._train_pos_users.shape, self._train_pos_items.shape))\n\n    (self._train_pos_count,) = self._train_pos_users.shape\n    self._elements_in_epoch = (1 + num_train_negatives) * self._train_pos_count\n    self.train_batches_per_epoch = self._count_batches(self._elements_in_epoch,\n                                                       train_batch_size,\n                                                       batches_per_train_step)\n\n    # Evaluation\n    if eval_batch_size % (1 + rconst.NUM_EVAL_NEGATIVES):\n      raise ValueError(\"Eval batch size {} is not divisible by {}\".format(\n          eval_batch_size, 1 + rconst.NUM_EVAL_NEGATIVES))\n    self._eval_users_per_batch = int(eval_batch_size //\n                                     (1 + rconst.NUM_EVAL_NEGATIVES))\n    self._eval_elements_in_epoch = num_users * (1 + rconst.NUM_EVAL_NEGATIVES)\n    self.eval_batches_per_epoch = self._count_batches(\n        self._eval_elements_in_epoch, eval_batch_size, batches_per_eval_step)\n\n    # Intermediate artifacts\n    self._current_epoch_order = np.empty(shape=(0,))\n    self._shuffle_iterator = None\n\n    self._shuffle_with_forkpool = not stream_files\n    if stream_files:\n      self._shard_root = epoch_dir or tempfile.mkdtemp(prefix=\"ncf_\")\n      if not create_data_offline:\n        atexit.register(tf.io.gfile.rmtree, self._shard_root)\n    else:\n      self._shard_root = None","sourceCodeStart":407,"sourceCodeEnd":443,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/recommendation/data_pipeline.py#L407-L443","documentation":"Error \"Eval batch size {} is not divisible by {}\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/recommendation/data_pipeline.py:425 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e006f5f0d534913e49c1f1dae87364039fa607e2","analyzedAt":"2026-08-24T14:09:15.576Z","schemaVersion":2},"datasetVersion":"2026-08-24T17:17:21.512Z"}