{"record":{"id":"1fc0d96af6d0ce60","repo":"tensorflow/models","slug":"the-first-layer-size-should-be-multiple-of-2","errorCode":null,"errorMessage":"The first layer size should be multiple of 2!","messagePattern":"The first layer size should be multiple of 2!","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/recommendation/neumf_model.py","lineNumber":163,"sourceCode":"    params: Dict of hyperparameters.\n\n  Raises:\n    ValueError: if the first model layer is not even.\n  Returns:\n    model:  a keras Model for computing the logits\n  \"\"\"\n  num_users = params[\"num_users\"]\n  num_items = params[\"num_items\"]\n\n  model_layers = params[\"model_layers\"]\n\n  mf_regularization = params[\"mf_regularization\"]\n  mlp_reg_layers = params[\"mlp_reg_layers\"]\n\n  mf_dim = params[\"mf_dim\"]\n\n  if model_layers[0] % 2 != 0:\n    raise ValueError(\"The first layer size should be multiple of 2!\")\n\n  # Initializer for embedding layers\n  embedding_initializer = \"glorot_uniform\"\n\n  def mf_slice_fn(x):\n    x = tf.squeeze(x, [1])\n    return x[:, :mf_dim]\n\n  def mlp_slice_fn(x):\n    x = tf.squeeze(x, [1])\n    return x[:, mf_dim:]\n\n  # It turns out to be significantly more effecient to store the MF and MLP\n  # embedding portions in the same table, and then slice as needed.\n  embedding_user = tf_keras.layers.Embedding(\n      num_users,\n      mf_dim + model_layers[0] // 2,\n      embeddings_initializer=embedding_initializer,","sourceCodeStart":145,"sourceCodeEnd":181,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/recommendation/neumf_model.py#L145-L181","documentation":"Error \"The first layer size should be multiple of 2!\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/recommendation/neumf_model.py:163 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"}