diff --git a/examples/00_quick_start/rbm_movielens.ipynb b/examples/00_quick_start/rbm_movielens.ipynb index 2f060759cb..8223c05b63 100644 --- a/examples/00_quick_start/rbm_movielens.ipynb +++ b/examples/00_quick_start/rbm_movielens.ipynb @@ -339,7 +339,6 @@ "source": [ "#First we initialize the model class\n", "model = RBM(\n", - " n_users=Xtr.shape[0],\n", " possible_ratings=np.setdiff1d(np.unique(Xtr), np.array([0])),\n", " visible_units=Xtr.shape[1],\n", " hidden_units=600,\n", @@ -372,12 +371,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Took 2.54 seconds for training.\n" + "Took 2.49 seconds for training.\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -488,62 +487,62 @@ " \n", " 0\n", " 1\n", - " 58\n", - " 4.747978\n", + " 100\n", + " 4.881824\n", " \n", " \n", " 1\n", " 1\n", - " 100\n", - " 4.699463\n", + " 65\n", + " 4.822650\n", " \n", " \n", " 2\n", " 1\n", - " 65\n", - " 4.760862\n", + " 129\n", + " 4.672100\n", " \n", " \n", " 3\n", " 1\n", - " 129\n", - " 4.737326\n", + " 1104\n", + " 4.898961\n", " \n", " \n", " 4\n", " 1\n", - " 82\n", - " 4.694553\n", + " 1123\n", + " 4.664860\n", " \n", " \n", " 5\n", " 1\n", - " 1104\n", - " 4.897794\n", + " 1418\n", + " 4.611925\n", " \n", " \n", " 6\n", " 1\n", - " 1177\n", - " 4.654001\n", + " 1427\n", + " 4.722356\n", " \n", " \n", " 7\n", " 1\n", - " 1261\n", - " 4.625767\n", + " 1521\n", + " 4.738353\n", " \n", " \n", " 8\n", " 1\n", - " 1589\n", - " 4.637730\n", + " 1583\n", + " 4.569103\n", " \n", " \n", " 9\n", " 1\n", " 1546\n", - " 4.779194\n", + " 4.890738\n", " \n", " \n", "\n", @@ -551,16 +550,16 @@ ], "text/plain": [ " userID movieID prediction\n", - "0 1 58 4.747978\n", - "1 1 100 4.699463\n", - "2 1 65 4.760862\n", - "3 1 129 4.737326\n", - "4 1 82 4.694553\n", - "5 1 1104 4.897794\n", - "6 1 1177 4.654001\n", - "7 1 1261 4.625767\n", - "8 1 1589 4.637730\n", - "9 1 1546 4.779194" + "0 1 100 4.881824\n", + "1 1 65 4.822650\n", + "2 1 129 4.672100\n", + "3 1 1104 4.898961\n", + "4 1 1123 4.664860\n", + "5 1 1418 4.611925\n", + "6 1 1427 4.722356\n", + "7 1 1521 4.738353\n", + "8 1 1583 4.569103\n", + "9 1 1546 4.890738" ] }, "execution_count": 11, @@ -670,10 +669,10 @@ " 0\n", " mv 100k\n", " 10\n", - " 0.144007\n", - " 0.415758\n", - " 0.341888\n", - " 0.214355\n", + " 0.140828\n", + " 0.411124\n", + " 0.336267\n", + " 0.212256\n", " \n", " \n", "\n", @@ -681,7 +680,7 @@ ], "text/plain": [ " Dataset K MAP nDCG@k Precision@k Recall@k\n", - "0 mv 100k 10 0.144007 0.415758 0.341888 0.214355" + "0 mv 100k 10 0.140828 0.411124 0.336267 0.212256" ] }, "execution_count": 13, @@ -708,7 +707,7 @@ { "data": { "application/scrapbook.scrap.json+json": { - "data": 0.14400724468650095, + "data": 0.14082811192026132, "encoder": "json", "name": "map", "version": 1 @@ -726,7 +725,7 @@ { "data": { "application/scrapbook.scrap.json+json": { - "data": 0.4157580596928511, + "data": 0.41112362614927883, "encoder": "json", "name": "ndcg", "version": 1 @@ -744,7 +743,7 @@ { "data": { "application/scrapbook.scrap.json+json": { - "data": 0.34188759278897135, + "data": 0.3362672322375398, "encoder": "json", "name": "precision", "version": 1 @@ -762,7 +761,7 @@ { "data": { "application/scrapbook.scrap.json+json": { - "data": 0.2143553881267369, + "data": 0.2122560190189148, "encoder": "json", "name": "recall", "version": 1 @@ -818,7 +817,6 @@ "source": [ "# Initialize the model class\n", "model = RBM(\n", - " n_users=Xtr.shape[0],\n", " possible_ratings=np.setdiff1d(np.unique(Xtr), np.array([0])),\n", " visible_units=Xtr.shape[1],\n", " hidden_units=600,\n", diff --git a/examples/02_model_collaborative_filtering/rbm_deep_dive.ipynb b/examples/02_model_collaborative_filtering/rbm_deep_dive.ipynb index 4c84aa5196..6eb76e620c 100644 --- a/examples/02_model_collaborative_filtering/rbm_deep_dive.ipynb +++ b/examples/02_model_collaborative_filtering/rbm_deep_dive.ipynb @@ -293,7 +293,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 4.81k/4.81k [00:00<00:00, 29.8kKB/s]\n" + "100%|██████████| 4.81k/4.81k [00:00<00:00, 30.6kKB/s]\n" ] }, { @@ -400,7 +400,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 5.78k/5.78k [00:00<00:00, 40.7kKB/s]\n" + "100%|██████████| 5.78k/5.78k [00:00<00:00, 43.3kKB/s]\n" ] }, { @@ -762,7 +762,6 @@ "source": [ "#First we initialize the model class\n", "model_1m = RBM(\n", - " n_users=Xtr_1m.shape[0],\n", " possible_ratings=np.setdiff1d(np.unique(Xtr_1m), np.array([0])),\n", " visible_units=Xtr_1m.shape[1],\n", " hidden_units=1200,\n", @@ -791,12 +790,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Took 14.08 seconds for training.\n" + "Took 14.37 seconds for training.\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -850,7 +849,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Took 2.47 seconds for prediction.\n" + "Took 2.39 seconds for prediction.\n" ] } ], @@ -921,18 +920,18 @@ " 0\n", " mv 1m\n", " 10\n", - " 0.271001\n", - " 0.676853\n", - " 0.571656\n", - " 0.309482\n", + " 0.27086\n", + " 0.677539\n", + " 0.572185\n", + " 0.309783\n", " \n", " \n", "\n", "" ], "text/plain": [ - " Dataset K MAP nDCG@k Precision@k Recall@k\n", - "0 mv 1m 10 0.271001 0.676853 0.571656 0.309482" + " Dataset K MAP nDCG@k Precision@k Recall@k\n", + "0 mv 1m 10 0.27086 0.677539 0.572185 0.309783" ] }, "execution_count": 15, @@ -966,13 +965,12 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "#100k\n", "model_100k = RBM(\n", - " n_users=Xtr_100k.shape[0],\n", " possible_ratings=np.setdiff1d(np.unique(Xtr_100k), np.array([0])),\n", " visible_units=Xtr_100k.shape[1],\n", " hidden_units=600,\n", @@ -985,19 +983,19 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Took 2.34 seconds for training.\n" + "Took 2.21 seconds for training.\n" ] }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVEAAAE9CAYAAACyQFFjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAuBUlEQVR4nO3deXiU9bn/8fedhUASCJCFJewJgiyyiKhAxbqCVVFbrVR7rLVaW9va01XPaavVX3tOq+05PVartlLUKta6191aRUFcwqLssu+QQNiXQJL798cMNECWmWQmTybzeV1XLpJnmbmZi3x4vs9yf83dERGRxkkJugARkUSmEBURaQKFqIhIEyhERUSaQCEqItIEClERkSZIC7qAWMrLy/M+ffoEXYaItDKzZ8/e6u75ta1rVSHap08fSkpKgi5DRFoZM1tT1zoN50VEmkAhKiLSBApREZEmUIiKiDRBXEPUzKaYWamZLahjfY6Z/d3MPjazhWZ2bY1115jZsvDXNfGsU0SkseJ9JDoVmFDP+puARe4+DDgT+I2ZtTGzzsBtwKnAaOA2M+sU51pFRKIW1xB193eA8vo2AdqbmQHZ4W0rgfOBN9y93N23A29QfxiLiAQi6PtEfw+8AGwE2gNfdPdqMysE1tXYbj1QGEB9IiL1CvrC0vnAPKA7MBz4vZl1iOYFzOwGMysxs5KysrLYVygiUo+gQ/Ra4BkPWQ6sAgYCG4CeNbbrEV52HHd/0N1Hufuo/Pxan8qqU0VlFZt27m9c5SIiBB+ia4GzAcysCzAAWAm8BpxnZp3CF5TOCy+LqbeWlPLjp+fH+mVFJInE9ZyomU0jdNU9z8zWE7ring7g7vcDdwJTzWw+YMCP3X1reN87gY/CL3WHu9d3gapRTu+Xx/ef/JiKyioy0lJj/fIikgTiGqLuPrmB9RsJHWXWtm4KMCUedR2Wk5lOcUE2c9bs4PSi3Hi+lYi0UkEP5wM3tjiPmcu3Bl2GiCSopA/RccV5zFCIikgjJX2IjuzdiWVbdrNz/6GgSxGRBJT0Ido2PZWRvTvx/sptQZciIgko6UMUdF5URBpPIYrOi4pI4ylEgUHdOrB970E9vSQiUVOIAikpxpiiPGYu13lREYmOQjRM50VFpDEUomGHz4u6e9CliEgCUYiG9crNpG16CstK9wRdiogkEIVoDeOK85ixTEN6EYmcQrQGnRcVkWgpRGs4vV8uH64q51BVddCliEiCUIjWkJudQc/OmXy8bkfQpYhIglCIHmNcfz29JCKRU4geQ+dFRSQaCtFjnNKnEws37mJPRWXQpYhIAlCIHiOzTRon9cjhw1V6BFREGqYQrUXoflGFqIg0TCFaC50XFZFIKURrMbQwh00791O6+0DQpYhIC6cQrUVaagqn9ctl1goN6UWkfgrROozrr+foRaRhCtE6HD4vqtZ4IlIfhWgd+uVl4cCqrXuDLkVEWjCFaB3MTFfpRaRBCtF6aBZQEWmIQrQeY4pDV+irqnVeVERqpxCtR0H7thR2ymT2mu1BlyIiLZRCtAETBnfllQWbgi5DRFoohWgDLhjalVcXbKZaQ3oRqYVCtAH9u7Qns00q89bvCLoUEWmBFKIRuGBoN15dsDnoMkSkBYpriJrZFDMrNbMFdaz/oZnNC38tMLMqM+scXvfvZrYwvHyambWNZ631mTCkKy/P36Snl0TkOPE+Ep0KTKhrpbvf5e7D3X04cCsw3d3LzawQ+A4wyt2HAKnAlXGutU6DunUgNcVYuHFXUCWISAsV1xB193eA8gg3nwxMq/FzGtDOzNKATGBjjMuLmJkxcUg3Xp6vq/QicrQWcU7UzDIJHbE+DeDuG4C7gbXAJmCnu78eXIUwcUhXXlmwWUN6ETlKiwhR4CJgpruXA5hZJ2AS0BfoDmSZ2dW17WhmN5hZiZmVlJWVxa3Ak3rkcLCymqVbdsftPUQk8bSUEL2So4fy5wCr3L3M3Q8BzwBjatvR3R9091HuPio/Pz9uBZoZE4Z05ZX5ukovIv8SeIiaWQ4wHni+xuK1wGlmlmlmBpwNLA6ivpouGKqnl0TkaGnxfHEzmwacCeSZ2XrgNiAdwN3vD292KfC6ux9p3OnuH5jZU8AcoBKYCzwYz1ojMaJnJ3buP8Ty0j0UF2QHXY6ItADWmi6UjBo1yktKSuL6Hrc9v4D89hl866z+cX0fEWk5zGy2u4+qbV3gw/lEM2FIN17R00siEqYQjdLovp3ZsusAa7ftC7oUEWkBFKJRSk0xzlN7PBEJU4g2wsQhXXlZQ3oRQSHaKKf1y2Xttr1s2LE/6FJEJGAK0UZIT03hnBO7qD2eiChEGyvUY1TnRUWSnUK0kcYU57J0825Kdx0IuhQRCZBCtJEy0lI5+8QuvLZQQ3qRZKYQbYJQx3uFqEgyU4g2wfgT8lmwcSfb9lQEXYqIBEQh2gRt01MZf0I+ry/aEnQpIhIQhWgTnXFCPh+s3BZ0GSISEIVoExUXZLOibG/DG4pIq6QQbaKi/GxWlu3R3EsiSUoh2kQ57dLJzEhj007dLyqSjBSiMVCcn82Ksj1BlyEiAVCIxkBRQRYrShWiIslIIRoDRfnZLNeRqEhSUojGQHFBNitKdYVeJBkpRGNAR6IiyUshGgPdctqyr6KSnfsPBV2KiDQzhWgMmBn9dIVeJCkpRGMkdF5UISqSbBSiMVKUn6XzoiJJSCEaI0X5ukIvkowUojESakSiI1GRZKMQjZHeuVls2LGfisqqoEsRkWakEI2RNmkp9OjYjrXb9gVdiog0I4VoDPXLz2a5rtCLJBWFaAzpvKhI8lGIxlBRfpaOREWSjEI0hjRViEjyUYjG0OFHP6urNVWISLKIa4ia2RQzKzWzBXWs/6GZzQt/LTCzKjPrHF7X0cyeMrMlZrbYzE6PZ62xkNMunayMNDbv0lQhIski3keiU4EJda1097vcfbi7DwduBaa7e3l49e+AV919IDAMWBznWmOiWFfoRZJKXEPU3d8ByhvcMGQyMA3AzHKAM4CHwq9z0N13xKPGWCsqyNIVepEk0iLOiZpZJqEj1qfDi/oCZcCfzWyumf3JzLICKzAKOhIVSS4tIkSBi4CZNYbyacBI4A/uPgLYC9xS245mdoOZlZhZSVlZWfNUW48i3SsqklRaSoheSXgoH7YeWO/uH4R/fopQqB7H3R9091HuPio/Pz/OZTZMtzmJJJfAQzR8/nM88PzhZe6+GVhnZgPCi84GFgVQXtS6dtBUISLJJC2eL25m04AzgTwzWw/cBqQDuPv94c0uBV5392MP374NPGZmbYCVwLXxrDVWak4VMrJXp6DLEZE4i2uIuvvkCLaZSuhWqGOXzwNGxbyoZlBcELq4pBAVaf0CH863RkX5us1JJFkoRONAk9aJJA+FaBwU5esKvUiyUIjGgaYKEUkeCtE4ODxVyBpNFSLS6ilE40RThYgkB4VonOjikkhyUIjGiW5zEkkOCtE4KS7IZrlCVKTVU4jGSVFBNivL9mqqEJFWTiEaJx3appOdkcYmTRUi0qpF/Oy8mWUAnwf61NzP3e+IfVmtQ1F+6OJSYcd2QZciInESzZHo88AkoJJQk+TDX1KHogLNQy/S2kXTxamHu9c56Zwcrzg/m2UKUZFWLZoj0ffMbGjcKmmFigoiu+He3XUBSiRBRROi44DZZrbUzD4xs/lm9km8CmsNIpkqpHTXAS65dyb3/HN5M1UlIrEUzXB+YtyqaKW6dmjL/oOV7Nx3iJzM9OPWL960i689XMJJPXJ4a2kpN5/TP4AqRaQpGjwSNbMO4W931/EldTCz0JC+lpvu31pSytV/+oAfTxzI/3xxOMu27GbXAc3LJJJoIjkSfRy4EJgNOGA11jnQLw51tRpF4fmWTu79r6lCHpm1mnv+uZwH/23UkeUjenXi/RXbOG9w16BKFZFGaDBE3f3C8J99419O61OUn3WkEUlVtXPni4uYsXwrT984hl65mUe2G1Ocy3sKUZGEE9VEdWbWCegPtD28zN3fiXVRrUlxQTZPzV7PnopKvjNtLhWVVTz9jTHktDv6HOnYojx+8LePA6pSRBormieWvgbcDPQA5gGnAbOAs+JSWStRlJ/Ngg27uPz+WQzrkcOdlwwhPfX4U9FDCnMo3V1B6a4DFHRoW8sriUhLFM0tTjcDpwBr3P2zwAhgRzyKak1652ax+8AhLhnenf+6bGitAQqQmmKc1q8zM1dsbeYKRaQpohnOH3D3A2aGmWW4+xIzGxC3ylqJNmkpzP7pubRNT21w27HFecxcvo1LR/RohspEJBaiORJdb2YdgeeAN8zseWBNPIpqbSIJUAiF6HvLt+Kup5dEEkXER6Lufmn429vN7C0gB3g1LlUlqX55WVQ7rN62j755WUGXIyIRiOhI1MxSzWzJ4Z/dfbq7v+DuB+NXWvIxM8YU5zJjuc6LiiSKiELU3auApWbWK871JL2xRaEhvYgkhmguLHUCFprZh9ToI+ruF8e8qiQ2tjiPO19aRHW1k5JiDe8gIoGKJkR/Grcq5IiuOW3JzWrDok27GFKYE3Q5ItKAaK7OXxA+F3rkC7ggXoUls7HFeTovKpIgognRc2tZpvZ4cTCmKI+ZClGRhBBJK7xvmNl8YEC4GfPhr1WAmjLHwen9cpm7dgcVlVVBlyIiDYi0Fd4rwH8Bt9RYvtvdyw//YGad3H17jOtLSjmZ6RTlZzF37Q5O65cbdDkiUo8Gj0Tdfae7r3b3ye6+psZX+TGbvnnsvmY2xcxKzWxBba9tZj80s3nhrwVmVmVmnWusTzWzuWb2YtR/swQ3plhDepFEEM050YbUdj/OVKDOGULd/S53H+7uw4FbgenHhPPNwOIY1pgwxkZ5XrR870EOHNLwX6S5xTJEj3vgO9xr9Ngj1rpMBqYd/sHMegCfA/4Uk+oSzKg+nVi6eTe7I5gyZPeBQ1x630xue35hM1QmIjXFMkQbzcwyCR2xPl1j8f8CPwKqg6gpaG3TUxnWsyMfrqr//yB355Zn5nNyr078c2kpn6zf0TwFiggQ/+F8pC4CZh4eypvZhUCpu89u8E3NbjCzEjMrKSsra0IJLU8k94s+9sFaVpTu4ZeXDeWH5w3g9hcWag57kWYUVYia2Tgzuzb8fb6Z1Zx36ewm1HElNYbywFjgYjNbDTwBnGVmf6ltR3d/0N1Hufuo/Pz8JpTQ8owpyuW95dvqXL9o4y5++8an3HvVSNqmp/KFk3tQWe08N29DM1YpktwiDlEzuw34MaELQADpwJFgq+VqfaSvmwOMB56v8Vq3unsPd+9DKGD/6e5XN+b1E9nQwhw27dxP2e6K49btqajkW4/P4WcXDqIoPxuAlBTj9osH86tXl7CnorK5yxVJStEciV4KXEy4+Yi7bwTa17eDmU0jNA/TADNbb2bXmdmNZnbjMa/7urvvrf1Vkldaagqn9svlvWOmDHF3fvLsfE7p05lLRhQetW5kr06MK87nnn8ua85SRZJWNCF60EMt1x3AzBrsGhy+t7Sbu6eHjywfcvf73f3+GttMdfcr63mNtw9P25yMxhblHner05Ml61i0aRe3Xzy41n1+PGEAT360jlVb9f+SSLxFE6JPmtkDQEczux74B/DH+JQlhx2ed+nwlCFLN+/mV68u5d4vjaRdm9qnHSno0JZvnFnEnS8uas5SRZJSxCHq7ncDTxG6DWkA8DN3vydehUlIcUE2h6qqWVu+j30HK7np8TncOnEg/bvUeyaFr4zpy+qte/nnki3NVKlIcopm3vksQhd43gjP8jnAzNLdveG7waXRzOzI0eictds5qUcOl4/q2eB+bdJS+NlFg/j53xcxtjiPjLTIJssTkehEM5x/B8gws0JCE9R9mdBjnRJnY4py+b83lzF37XbunDQk4v3OHFBAUX4Wf565On7FiSS5aELU3H0fcBnwB3e/HKj9yobE1Lj+eew/VMW9V40kKyOayQjgJ58bxAPTV7Bl14E4VSeS3KIKUTM7HbgKeCm8TGPEZtAtpx0lPzmHgV07RL1vn7wsJo/uxa9eWdLwxiIStWhC9LuEbrR/1t0Xmlk/4K24VCXHSU9t/BO6N322mPdWbGP2mkY9DyEi9Yjm6vx0d7/Y3X8V/nmlu38nfqVJrGRlpHHLxIH8v5eSsqugSFxF89jnKDN7xszm1JwmJJ7FSexcNKw7G3fsZ3np7qBLEWlVorlK8RjwQ2A+SdqeLpGlphgXndSd5+Zu5AfnDwi6HJFWI5oTbWXu/oK7r6o5TUjcKpOYu2REIc9/vOHI008i0nTRHIneZmZ/IjSX0pG2Qu7+TMyrkrgY3L0DbVJTmLN2Oyf37tzwDiLSoGhC9FpgIKEWeIeH8w4oRBOEmXHJ8EKem7tRISoSI9GE6CnurpNpCW7S8EIuvW8mP7toUJNumxKRkGh+i94zs0Fxq0SaRa/cTHrnZvLustY1lYpIUCIKUTMzQt3n55nZ0vDtTfN1i1NiumREIc/P2xh0GSKtQkTDeXd3MysA+se5HmkGnxvajbteW8reisqon8UXkaNFM5x/GiioeXuTbnFKTLnZGYzq3Yk3FqnXqEhTRROipwKzzGyFhvOJ75IRhZoVVCQGohnLnR+3KqTZnTuoCz95bgFb91SQl50RdDkiCSuaBiRravuKZ3ESP5lt0jh7YAEvfbIp6FJEEppuFExikzSkF2kyhWgS+0xxHuvK97Fmm6ZWFmkshWgSS0tN4XNDu+meUZEmUIgmuYuHh4b06uwk0jgK0SQ3sldHKqucBRt2BV2KSEJSiCY5M2PS8O66wCTSSApRYdLwQv7+8UaqqjWkF4mWQlQoLsimoEMGs1ZsC7oUkYSjEBWAULNmDelFoqYQFSA0G+jrCzdz4FBV0KWIJBSFqADQpUNbRvftzBUPzOLRWavZvvdg0CWJJAQ1k5Qj7r/6ZN5dvpVn5mzg168uZUxxLpeN7MFnBxTQJk3/34rUxlrTTdajRo3ykpKSoMtoFXYdOMQr8zfx9JwNLC/dw4UndeOykT0Y1iOH0EQHIsnDzGa7+6ha18UzRM1sCnAhUOruQ2pZ/0PgqvCPacCJQD6QBTwCdCE0o+iD7v67ht5PIRof68r38ezcDTwzZz3dO7bjka+OJk2T3EkSqS9E4/2bMBWYUNdKd7/L3Ye7+3DgVmC6u5cDlcD33X0QcBpwkybJC07Pzpl85+z+/PP7Z5KaYtz39oqgSxJpMeIaou7+DlAe4eaTgWnh/Ta5+5zw97uBxUBhXIqUiKWkGHd9YRiPzFrNx+t2BF2OSIvQIsZkZpZJ6Ij16VrW9QFGAB80c1lSi645bbn94sH8+1/nse9gZdDliASuRYQocBEwMzyUP8LMsgkF63fdvdYOGWZ2g5mVmFlJWZnmUm8OF57UnWE9O/LLlxcHXYpI4FpKiF5JeCh/mJmlEwrQx9z9mbp2dPcH3X2Uu4/Kz8+Pc5ly2M8nDeatJWW8tbQ06FJEAhV4iJpZDjAeeL7GMgMeAha7+2+Dqk3q1qFtOndfPoxbnv6Ect2YL0ksriFqZtOAWcAAM1tvZteZ2Y1mdmONzS4FXnf3mnNUjAW+DJxlZvPCXxfEs1aJ3ulFuUwaXsitz3yips6StHSzvTRJRWUVk34/k6+O68sVo3oGXY5IXAR5n6i0chlpqfzvlcP571eWsHbbvqDLEWl2ClFpsoFdO/CN8UV878l5auwsSUchKjFx3bi+pKemcP90Pc0kyUUhKjGRkmLcfcUwpsxYxZMfrdOFJkkaClGJmcKO7Xj0ulP5ywdr+NIfP2DV1r0N7ySS4BSiElODunfgmW+M4ewTC7jsvpnc+9ZyDlVVB12WSNwoRCXm0lJT+Npn+vHCt8bx4apyLrpnBnPXbg+6LJG4UIhK3PTsnMnUa0/hG2cWccOjs7n9hYXsqVDTEmldFKISV2bGpOGFvPHvZ7C3opLz/+edZpmaeee+Q3F/DxFQiEoz6ZjZhrsuH8aPJgzgv1+JX/enA4eq+PnfFzLiztd5b8XWuL2PyGEKUWlWE4d0Y0XZ3rgcKS7YsJOL7plB6e4KfnPFMH701Cc6fSBxpxCVZtUmLYVRfToxa2XsjhKrqp373l7ONVM+5KbPFvP7ySO4dEQPxhTl8ouX1PNU4kshKs1uXHEe7y6LTYiuK9/HlQ/O4p1Py3jh2+O4ZEThkdlIf3rhIN75tIy31fNU4kghKs1ubHEeM5c3LUTdnb+VrGPSvTM5b1BXHv/aaRR2bHfUNu3bpvPrL5zErc/M14UmiRuFqDS7gV3bs6eiinXljev6tHPfIW78y2wemrGKx68/levP6EdKitW67djiPM4d1IWf/31hU0oWqZNCVJqdmTG2OLfRR6P3vr2cjLRUnv/WWAZ27dDg9rdMHMjstdt5beHmRr2fSH0UohKIscV5zGhEiLo7L32yiW+cWURGWmpE+2S2SePuy4fxk+cWsG1PRdTvKVIfhagEYmxxHu+t2EZ1lP1HP1m/k4y0FAZ2bR/Vfqf06cylIwr56fMLYtZh6uN1O9i880BMXksSl0JUAlHYsR0d26WzeHOtM2HX6eX5m5g4tOuRK/DR+N65J/Dplj38/ZNNUe97rL0VlXztkRJ+oWmjk55CVAIzrn8eM6K41cndeXnBJi4Y2q1R79c2PZXfXD6MO/6+kNJdTTuCfOCdlQzv2ZEZy8oafYFMWgeFqAQm2vOiCzbsItWMQd0avphUl2E9OzJ5dC9ufWZ+o4f1m3ce4JFZq7ntokFcOboXD81Y1eh6JPEpRCUwp/XLZc6a7Rw4VBXR9i/N38TEod0aNZSv6dtn9WfjzgP89aN1jdr/rteWMnl0L3p0yuTaMX14du4GyvcebFJNkrgUohKYnHbp9O/SnjkR9Bp1d16ev4nPNXIoX1ObtBR+d+Vwfv3aUpZt2R3Vvgs27GT6p2V888wiAAo6tGXikK48OmtNk+uSxKQQlUB9JsLzogs3hi5ADe7e+KF8TSd0ac8tEwZy0+Nz2H8wsiNhd+cXLy3mu+f0p33b9CPLrz+jH4++vzri15HWRSEqgYr0EdCmXJWvy+WjejCoWwdue2FBRNu/ubiUrXsquPKUnkctL8rPZmSvTjw1u3GnBySxKUQlUCN6dWywNV4sh/I1mRn/79KhlKzezrNz19e77aGqan75ymL+44ITSUs9/tfm6+P78cd3V1Gp+aSSjkJUApWRlsrJvetvjbd4024qq52hhTkxf//sjDR+/6WR3PniYlaU7alzu2kfrqV7TjvOHJBf6/qTe3emoH0Gr+rR0qSjEJXAfaZ//a3xXp4fujc0lkP5mgZ178D3zj2Bmx6bU+udAjv3H+L/3lzGf1xwYr01fH18EQ9MXxnxrVMHK6v50VMf8+biLY2uXYKnEJXA1Xde9PBQvrE32EfqqlN7UVSQzZ0vLjpu3X1vLeesgQUMauCi1tkDC9h3sJJZKxueQ+pQVTXfmTaXteX7+NFTn7Bgw85G136syqpqtu2pYHnpHmavKecfi7ZEfReCRC4t6AJEBnRpz56KStaV76Nn58yj1i3dspuKymqG9Yj9UL4mM+O/LxvKhffM4MVPNnLhSd2BUNPnv5as47XvntHga6SkGF8/I3Q0OqYor87tqqqd7z35MQcqq3j4q6N5a0kp1z9SwjPfHEO3nHZ17leb/QeruOPFhSzauIvt+w6xfd9B9h2sokPbNDpmtqFjZjrpqSnsO1jJi9/+TFSvLZFRiErgUlKMMUV5vLdiK1/s3OuodS9/sokLYnxVvi7t26bz+8kjuebPHzK0MIfeuVn86tUlXDumL106tI3oNSaN6M5v3ljK4k27OLGWJ6uqq50fPfUJ5XsreOiaU8hIS2XCkG6s3raP66aW8LcbTycrI7Jfy537D/G1hz+isGM7br94MJ3CodmhbfpR/VUrq6oZ/cs3Wb99Hz06ZdbzitIYGs5LizCulvOi7n7kKaXmMrRHDt85q5ibHp/D+yu3UbJ6O9ef0Tfi/TPSUrl2bF8efGflcevcnf98bj7ryvfxx38bRdv0f7Xy+/oZ/TipRw43PzGXqgg6W5XtrmDyg+8zuHsOv71iOCN6daJPXhYdM9sc16A6LTWFc04s4LWFOvcaDwpRaRFqa4336ZY97D9YxYieHZu1lmvG9KGwYzuumfIh3z/vBDLbRDdg+9KpvXhraSnrt/+rMYm7c/sLC1myeTdTrj3luNc0M+68ZAj7DlY1OLneuvJ9XPHALM4b3IXbLhpUZ1f/miYM6cprC3TnQDwoRKVFqK013ssxelY+WmbGrz8/jK+f0Y/LRvaIev8ObdO5YlRPpsxYDYQC9JcvL2bO2h1MvXY02XUM19NTU/jDVScz/dNSHp21utZtlm3ZzRUPzOKa03vz3XNOiPizGVOUx+LNuyjbrabUsRbXEDWzKWZWama1PhJiZj80s3nhrwVmVmVmncPrJpjZUjNbbma3xLNOaRnGFh/9CGjoqnzXQGrJyUzne+cNIDWCo7zaXDu2D0/PWc/OfYf47RufMmP5Nh69bjQ57dLr3S8nM50/f2U0//fP5cfNUjpv3Q4m//EDfjxhIF8ZG/kpBgi1ARx/Qj7/0O1UMRfvI9GpwIS6Vrr7Xe4+3N2HA7cC09293MxSgXuBicAgYLKZDYpzrRKwcf3/1Rpv2Zbd7D5QyYienQKuqnG65bTj3EFduOqh93l1wWb+ct1oOma2iWjfXrmZ3H/1SL7/5McsCR+Zz1i2leumfsSvPj+US0YUNqqmCUO68qqG9DEX1xB193eA8gg3nwxMC38/Glju7ivd/SDwBDApDiVKC1KzNd7L8zczcWjXiM73tVQ3ji8iOyONx64/ldzsjKj2Pbl3Z3520SCum1rCYx+s4eYn5nLfVSM5+8Quja7nzAEFzF6znZ37g5k+urraYzY1S0vSIs6JmlkmoSPWp8OLCoGa3RzWh5dJK1azNV5z3GAfb8UF2Txxw+kUtI/s9qhjTRpeyBdP6cn/vPEpD391NKf2y21SPdkZaZzWrzNvLSlteOM4+OnzC/ivV5YE8t7x1CJCFLgImOnukR61HmFmN5hZiZmVlJWVxaE0aU7jivN4+L3V7Nh/kJN7JeZQPpa+c3Z/Zt5yFkNi1Dfg/MFdA5k6el35Pl78ZBN//WgdO/a1rgbWLSVEr+RfQ3mADUDNfmM9wsuO4+4Puvsodx+Vn197cwhJHOP65/Hawi1MHNItoYfysRTp1NCROOfELsxYtrXZe5/e9/YKrj6tF2efWMBjH6xt1veOt8BD1MxygPHA8zUWfwT0N7O+ZtaGUMi+EER90rxG9OpIZptUJg4J5qp8a9cpqw1De+TwzrLmG7Vt3LGfl+dv4rpx/bjhjH5MfW81FZWtp4F1vG9xmgbMAgaY2Xozu87MbjSzG2tsdinwurvvPbzA3SuBbwGvAYuBJ919YTxrlZYhIy2Vf3xvPKP7dg66lFaruW+8v3/6Cq48pSeds9owsGsHBnXrwHNzax1YJqS4Pjvv7pMj2GYqoVuhjl3+MvBy7KuSlq57x+iacEh0zhvUld+8/ikHK6tpkxbZcdTWPRXsraikd25WVO+1ZdcBnp+3kX98b/yRZTec0Y+fPb+Ay0/u2SpO2QQ+nBeR5tU1py1987J4P4KWfRDqOnXjo7O58sH3o74o9MD0lXx+ZA/y2//rFq8xRbm0TU/lraXB3CUQawpRkSQ0YUjkV+kfmrGS1BRjwpCu/PCpTyK+17NsdwVPz1nP18f3O2q5mXHDGf14oJYmLYlIISqShM4f3JXXF21psGPUsi27uX/6Su6+fBi3TBzI5p0HeCTC6aH/9O5KJg3vXmsbwQuGdmPD9v3MW7ejMeW3KApRkSTUNy+L3Kw2zF27vc5tDlVV8/2/fcwPzhtAz86ZZKSlcs/kEfzuzWUs3Fh/J/7yvQd54qN13Di+qNb16akpfHVcX/7YCo5GFaIiSer8wfU/S/+Ht1fQMbMNk0f/65btPnlZ3HbRIL49bS57Kyrr3PehGSu5YGi3ei8SfvGUnry3Yitrt+2rc5tEoBAVSVLnD+7Kqws313qOc8GGnTz83mp+9fmhx7XbmzS8kJG9OnHbC7Xfdbhz3yEe+2At3zyz9qPQw7Iz0rhydC8empHYR6MKUZEkdWK39qSYsWjTrqOWV1RW8YO/fcx/fu7EOud8+vnFg5mzdnut93tOmbmKc0/sctx8WbX5ypg+PDt3A9v3Ju6joApRkSRlZrXeeP+7fyyjV+dMLq2n5V5WRhr3TB7BHS8uYvXWI8/JsOvAIR59fw03fbY4ohq6dGjL+YO78pf3I7tY1RIpREWS2OEh/WFz1m7nyZL1/OLS44fxxxrcPYfvntOfb02bc+QxzkfeW834E/Lpkxf5TfnXn9GPh2et4cChxHwUVCEqksRG9OzIjn2HWFEWms/qB09+zB2TBh91c3x9vnxab7rntOPXry5lT0Ulf565OuKj0MNO6NKeoYUdeLaZHgV9beFm1pXH7mKWQlQkiaWkGOcN7sJrCzdz12tLGVKYE1UfVzPj1184iVcXbObmaXM5vSiX4oLsqOu44Ywi/vjuyqMmKoyHA4eq+M9n51NRWR2z11SIiiS5CYO7MXXmal6av5E7Jg2Oev+OmW343yuH8+6yrXz7rP6NquG0fp3JzkirdQ6oisoq1m/fx+w123lt4eYmdeZ/4eONDO6e06igr0tcG5CISMt3ar/OmMEvLx0a8TxQxzqlT2fm/OzcOmcybYiZcf1n+vGrV5fw2sItlO4+QOmuCkp3H2BPRSV52RkUtM+gstp5Y9EW7r58WNTv4e5MmbGKWy84sVE11kUhKpLk0lNTmPHjs0hPbdrAtLEBetjEIV3ZdeAQ6Skp5HfIoEv7thR0yKBzZpsj3Z527jvE+LvfYl35vohuoarp/ZXlHKqq5oz+eU2q81gKURFpcoDGQlpqCled2rvebXIy07nq1F7c9/YK/uuyoVG9/pSZq7h2bN8G7zqIVvCfnIhIFK4b14+X529i4479Ee+zZtteSlaXc9nI2M93qRAVkYTSOasNXzylJw9MXxHxPg+/t4YrTulJZpvYD74VoiKScL72mb48N28jpbsONLjt7gOHeHrOev7t9D5xqUUhKiIJp6B9Wy4dURhRY+enZq9nXHEehXGadkYhKiIJ6cbxRTw1ez1b91TUuU1VtTP1vdV8dVyfuNWhEBWRhNQ1py0XntSNP727qs5t3lpSSsd26Yzs1SludShERSRhfePMIp74aG2drfTidVtTTQpREUlYPTplcv6grvx55vFHo4s37WJF2Z6oegE0hkJURBLaNz9bxKPvr2HXgaOfqZ86czVXn9qbNmnxjTmFqIgktN65WXx2QAEPz1x9ZNm2PRW8smATXzq1V9zfXyEqIgnvm58tZup7q9kTnjxv2odrmTikG7nZkfVFbQqFqIgkvOKCbE4vyuUv76/hYGU1j76/hmvjeFtTTWpAIiKtwrfOKubqP31ITrt0ivKzGdi1Q7O8r45ERaRVGNi1Ayf37shtzy/kq2P7Ntv76khURFqNm88+gd0HKjlrYEGzvadCVERajUHdO/D49ac163tqOC8i0gQKURGRJlCIiog0QVxD1MymmFmpmS2oZ5szzWyemS00s+k1lv97eNkCM5tmZm3jWauISGPE+0h0KjChrpVm1hG4D7jY3QcDl4eXFwLfAUa5+xAgFbgyzrWKiEQtriHq7u8A5fVs8iXgGXdfG96+tMa6NKCdmaUBmcDGuBUqItJIQZ8TPQHoZGZvm9lsM/s3AHffANwNrAU2ATvd/fUA6xQRqVXQIZoGnAx8Djgf+KmZnWBmnYBJQF+gO5BlZlfX9gJmdoOZlZhZSVlZWXPVLSICBB+i64HX3H2vu28F3gGGAecAq9y9zN0PAc8AY2p7AXd/0N1Hufuo/Pz8ZitcRASCD9HngXFmlmZmmcCpwGJCw/jTzCzTQn39zw4vFxFpUeL62KeZTQPOBPLMbD1wG5AO4O73u/tiM3sV+ASoBv7k7gvC+z4FzAEqgbnAg/GsVUSkMczdg64hZsysDFgT5W55wNY4lBNriVInJE6tqjP2EqXWaOvs7e61ni9sVSHaGGZW4u6jgq6jIYlSJyROraoz9hKl1ljWGfQ5URGRhKYQFRFpAoVo4lywSpQ6IXFqVZ2xlyi1xqzOpD8nKiLSFDoSFRFpgqQOUTObYGZLzWy5md0SdD11MbPVZjY/3DKwJOh6aqqt3aGZdTazN8xsWfjPTkHWGK6ptjpvN7MN4c91npldEGSN4Zp6mtlbZrYo3Ary5vDyFvWZ1lNni/pMzaytmX1oZh+H6/x5eHlfM/sg/Lv/VzNr0+j3SNbhvJmlAp8C5xJ6/PQjYLK7Lwq0sFqY2WpCbQFb3P13ZnYGsAd4JNy2EDP7NVDu7v8d/s+pk7v/uAXWeTuwx93vDrK2msysG9DN3eeYWXtgNnAJ8BVa0GdaT51X0II+0/ATj1nuvsfM0oEZwM3A9wh1kHvCzO4HPnb3PzTmPZL5SHQ0sNzdV7r7QeAJQk1PJAp1tDucBDwc/v5hQr9cgYqgLWOL4O6b3H1O+PvdhB53LqSFfab11NmieMie8I/p4S8HzgKeCi9v0ueZzCFaCKyr8fN6WuA/gjAHXg+3C7wh6GIi0MXdN4W/3wx0CbKYBnzLzD4JD/cDP+1Qk5n1AUYAH9CCP9Nj6oQW9pmaWaqZzQNKgTeAFcAOd68Mb9Kk3/1kDtFEMs7dRwITgZvCQ9OE4KHzRS31nNEfgCJgOKG+tb8JtJoazCwbeBr4rrvvqrmuJX2mtdTZ4j5Td69y9+FAD0Ij0IGxfP1kDtENQM8aP/cIL2txwk2qD3f+f5bQP4SWbEv4nNnhc2elDWwfCHffEv4Fqwb+SAv5XMPn7p4GHnP3Z8KLW9xnWludLfUzBXD3HcBbwOlAx/CsGdDE3/1kDtGPgP7hq3RtCM3h9ELANR3HzLLCJ+4xsyzgPKDOif9aiBeAa8LfX0Oo5WGLcziUwi6lBXyu4QshDwGL3f23NVa1qM+0rjpb2mdqZvkWmssNM2tH6ELyYkJh+oXwZk36PJP26jxA+PaL/yU0Ed4Ud/9FsBUdz8z6ETr6hFDrwsdbUp012x0CWwi1O3wOeBLoRair1hXuHuhFnTrqPJPQsNOB1cDXa5x3DISZjQPeBeYTag8J8B+Ezje2mM+0njon04I+UzM7idCFo1RCB41Puvsd4d+rJ4DOhFptXu3uFY16j2QOURGRpkrm4byISJMpREVEmkAhKiLSBApREZEmUIiKiDSBQlSkDmZ2ppm9GHQd0rIpREVEmkAhKgnPzK4O94ycZ2YPhBtO7DGz/wn3kHzTzPLD2w43s/fDDTKePdwgw8yKzewf4b6Tc8ysKPzy2Wb2lJktMbPHwk/qiByhEJWEZmYnAl8ExoabTFQBVwFZQIm7DwamE3pCCeAR4MfufhKhp20OL38MuNfdhwFjCDXPgFB3ou8Cg4B+wNg4/5UkwaQ1vIlIi3Y2cDLwUfggsR2h5hzVwF/D2/wFeMbMcoCO7j49vPxh4G/h3gSF7v4sgLsfAAi/3ofuvj788zygD6HGviKAQlQSnwEPu/utRy00++kx2zX2+eaaz1NXod8ZOYaG85Lo3gS+YGYFcGQuot6E/m0f7tLzJWCGu+8EtpvZZ8LLvwxMD3dmX29ml4RfI8PMMpvzLyGJS/+rSkJz90Vm9hNCnf9TgEPATcBeYHR4XSmh86YQant2fzgkVwLXhpd/GXjAzO4Iv8blzfjXkASmLk7SKpnZHnfPDroOaf00nBcRaQIdiYqINIGOREVEmkAhKiLSBApREZEmUIiKiDSBQlREpAkUoiIiTfD/Ab6ZuC40oSk7AAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -1020,14 +1018,14 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Took 0.21 seconds for prediction.\n" + "Took 0.20 seconds for prediction.\n" ] } ], @@ -1052,7 +1050,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -1089,10 +1087,10 @@ " 0\n", " mv 100k\n", " 10\n", - " 0.145275\n", - " 0.414084\n", - " 0.338706\n", - " 0.215342\n", + " 0.143607\n", + " 0.412962\n", + " 0.338494\n", + " 0.214506\n", " \n", " \n", "\n", @@ -1100,10 +1098,10 @@ ], "text/plain": [ " Dataset K MAP nDCG@k Precision@k Recall@k\n", - "0 mv 100k 10 0.145275 0.414084 0.338706 0.215342" + "0 mv 100k 10 0.143607 0.412962 0.338494 0.214506" ] }, - "execution_count": 20, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } diff --git a/recommenders/models/rbm/rbm.py b/recommenders/models/rbm/rbm.py index 49aca7b500..0631ffbb4d 100644 --- a/recommenders/models/rbm/rbm.py +++ b/recommenders/models/rbm/rbm.py @@ -16,7 +16,6 @@ class RBM: def __init__( self, - n_users, possible_ratings, visible_units, hidden_units=500, @@ -107,7 +106,6 @@ def __init__( tf.compat.v1.set_random_seed(self.seed) self.n_visible = visible_units # number of items - self.n_users = n_users # number of users tf.compat.v1.reset_default_graph() @@ -571,7 +569,8 @@ def fit(self, xtr): # keep the position of the items in the train set so that they can be optionally exluded from recommendation self.seen_mask = np.not_equal(xtr, 0) - num_minibatches = int(self.n_users / self.minibatch) # number of minibatches + n_users = xtr.shape[0] + num_minibatches = int(n_users / self.minibatch) # number of minibatches self.init_training_session(xtr) diff --git a/tests/unit/recommenders/models/test_rbm.py b/tests/unit/recommenders/models/test_rbm.py index 31a171029a..248b132b65 100644 --- a/tests/unit/recommenders/models/test_rbm.py +++ b/tests/unit/recommenders/models/test_rbm.py @@ -13,7 +13,6 @@ @pytest.fixture(scope="module") def init_rbm(): return { - "n_users": 5000, "possible_ratings": [1, 2, 3, 4, 5], "n_visible": 500, "n_hidden": 100, @@ -30,7 +29,6 @@ def init_rbm(): @pytest.mark.gpu def test_class_init(init_rbm): model = RBM( - n_users=init_rbm["n_users"], possible_ratings=init_rbm["possible_ratings"], visible_units=init_rbm["n_visible"], hidden_units=init_rbm["n_hidden"], @@ -43,8 +41,6 @@ def test_class_init(init_rbm): display_epoch=init_rbm["display_epoch"], ) - # number of users - assert model.n_users == init_rbm["n_users"] # list of unique rating values assert np.array_equal(model.possible_ratings, init_rbm["possible_ratings"]) # number of visible units @@ -74,7 +70,6 @@ def test_train_param_init(init_rbm, affinity_matrix): # initialize the model model = RBM( - n_users=Xtr.shape[0], possible_ratings=np.setdiff1d(np.unique(Xtr), np.array([0])), visible_units=Xtr.shape[1], hidden_units=init_rbm["n_hidden"], @@ -101,7 +96,6 @@ def test_sampling_funct(init_rbm, affinity_matrix): # initialize the model model = RBM( - n_users=Xtr.shape[0], possible_ratings=np.setdiff1d(np.unique(Xtr), np.array([0])), visible_units=Xtr.shape[1], hidden_units=init_rbm["n_hidden"], @@ -159,7 +153,6 @@ def test_save_load(init_rbm, affinity_matrix): # initialize the model original_model = RBM( - n_users=Xtr.shape[0], possible_ratings=np.setdiff1d(np.unique(Xtr), np.array([0])), visible_units=Xtr.shape[1], hidden_units=init_rbm["n_hidden"], @@ -177,7 +170,6 @@ def test_save_load(init_rbm, affinity_matrix): # initialize another model saved_model = RBM( - n_users=Xtr.shape[0], possible_ratings=np.setdiff1d(np.unique(Xtr), np.array([0])), visible_units=Xtr.shape[1], hidden_units=init_rbm["n_hidden"], @@ -193,8 +185,6 @@ def test_save_load(init_rbm, affinity_matrix): # load the pretrained model saved_model.load() - # number of users - assert saved_model.n_users == original_model.n_users # list of unique rating values assert np.array_equal(saved_model.possible_ratings, original_model.possible_ratings) # number of visible units