I could understand why c is added 1 in cat_sz, which is to reserve for unknown levels as you mentioned. But when calculating emb_szs, another 1 is added. This I don’t understand why, and I suspect is just a hack to get half the embedding size. I originally thought the notebook contained a small mistake.