diff --git a/notebooks/save_and_load_data.ipynb b/notebooks/save_and_load_data.ipynb index 1d2f5fe..9dfae5e 100644 --- a/notebooks/save_and_load_data.ipynb +++ b/notebooks/save_and_load_data.ipynb @@ -45,7 +45,7 @@ "metadata": {}, "outputs": [], "source": [ - "from src.scripts.io import DataLoader, ModelLoader" + "from scripts.io import DataLoader, ModelLoader" ] }, { @@ -92,8 +92,6 @@ "metadata": {}, "outputs": [], "source": [ - "num_dim = 2\n", - "\n", "low_bounds = torch.tensor([0, -10])\n", "high_bounds = torch.tensor([10, 10])\n", "\n", @@ -118,40 +116,45 @@ "name": "stdout", "output_type": "stream", "text": [ - "$\\theta$s tensor([[ 2.8840, -7.0975],\n", - " [ 6.8337, -5.9733],\n", - " [ 2.4926, -5.7297],\n", + "$\\theta$s tensor([[ 3.0800, -4.7952],\n", + " [ 1.8481, 6.3294],\n", + " [ 4.0461, 2.8588],\n", " ...,\n", - " [ 7.2979, -0.9311],\n", - " [ 6.3926, -0.3290],\n", - " [ 6.3816, 3.8464]]) xs tensor([[-11.4556, 9.8369, 4.9505, ..., 277.5564, 291.7433, 285.3736],\n", - " [-12.3848, 7.0872, 19.9406, ..., 663.7286, 663.2328, 674.7347],\n", - " [ 0.8212, 1.4636, -7.0082, ..., 242.6000, 236.7188, 244.5201],\n", + " [ 8.1919, -1.6658],\n", + " [ 5.0935, 0.3070],\n", + " [ 4.0631, 9.8509]]) xs tensor([[-8.5266e+00, -1.8273e+00, -1.1451e+00, ..., 2.9787e+02,\n", + " 3.0003e+02, 3.1156e+02],\n", + " [ 1.1926e+01, 6.5993e+00, 5.1448e+00, ..., 1.8203e+02,\n", + " 1.8708e+02, 1.8575e+02],\n", + " [-4.1232e-01, 1.1292e+01, 1.0386e+01, ..., 3.9838e+02,\n", + " 4.0421e+02, 4.0578e+02],\n", " ...,\n", - " [ -3.1995, 6.4203, 21.6573, ..., 712.5668, 715.9341, 730.9291],\n", - " [ -3.1645, 6.0377, 15.8926, ..., 622.5889, 629.9952, 634.9966],\n", - " [ 12.4576, 13.1750, 17.9107, ..., 628.2657, 635.1102, 644.2883]])\n" + " [-1.4934e+00, 1.5889e+01, 1.6708e+01, ..., 8.0203e+02,\n", + " 8.0764e+02, 8.1931e+02],\n", + " [ 1.0923e+01, 6.6249e+00, 1.7376e+01, ..., 5.0127e+02,\n", + " 5.0772e+02, 5.1401e+02],\n", + " [ 9.2832e+00, 1.3263e+01, 2.0634e+01, ..., 4.1520e+02,\n", + " 4.1219e+02, 4.0914e+02]])\n" ] } ], "source": [ "params = prior.sample((10000,))\n", "xs = simulator(params)\n", - "print(r'$\\theta$s', params, 'xs', xs)\n" + "print(r'$\\theta$s', params, 'xs', xs)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "5b6fff5d-87a0-4456-a915-2ffec3c0812d", "metadata": {}, "outputs": [], "source": [ "# Save both params and xs to a .pkl file\n", "data_to_save = {'thetas': params, 'xs': xs}\n", - "\n", "dataloader = DataLoader()\n", - "dataloader.save_data_pkl('data_train',\n", + "dataloader.save_data_h5('data_train',\n", " data_to_save,\n", " path = '../saveddata/')" ] @@ -166,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "8275530a-bc1b-46e1-99aa-5d5ddbba0bfe", "metadata": {}, "outputs": [ @@ -174,25 +177,25 @@ "name": "stdout", "output_type": "stream", "text": [ - "$\\theta$s tensor([[ 8.3111, -3.2867],\n", - " [ 1.7166, -3.1525],\n", - " [ 7.9723, -0.7460],\n", + "$\\theta$s tensor([[ 8.6844, -7.0421],\n", + " [ 3.0001, -5.9178],\n", + " [ 8.5659, -7.1641],\n", " ...,\n", - " [ 2.2330, 0.8710],\n", - " [ 1.7741, 2.2013],\n", - " [ 8.7931, -1.1207]]) xs tensor([[-6.5503e-01, -1.4921e+00, 4.9110e+00, ..., 8.1405e+02,\n", - " 8.2206e+02, 8.2703e+02],\n", - " [ 2.4441e+00, -6.9449e+00, 6.2681e+00, ..., 1.7136e+02,\n", - " 1.7441e+02, 1.7407e+02],\n", - " [-3.1070e+00, -8.2457e-01, 1.3257e+01, ..., 7.7915e+02,\n", - " 7.8097e+02, 7.9491e+02],\n", + " [ 4.7512, -6.2531],\n", + " [ 8.1654, -1.4571],\n", + " [ 1.2068, 3.5740]]) xs tensor([[-1.6683e+00, 5.4582e+00, 1.9455e+01, ..., 8.4058e+02,\n", + " 8.4980e+02, 8.6225e+02],\n", + " [-2.8954e+00, -1.2797e+01, 1.1486e+00, ..., 2.9071e+02,\n", + " 2.8894e+02, 2.9775e+02],\n", + " [-1.0352e+00, -1.2929e+00, 1.2169e+01, ..., 8.3395e+02,\n", + " 8.3806e+02, 8.4531e+02],\n", " ...,\n", - " [-8.7920e-01, -3.1205e-01, 1.3718e+00, ..., 2.1731e+02,\n", - " 2.2758e+02, 2.3235e+02],\n", - " [ 5.3797e+00, 3.6299e+00, 1.3066e+01, ..., 1.7667e+02,\n", - " 1.8707e+02, 1.7228e+02],\n", - " [-3.1299e+00, 6.9778e+00, 1.9069e+01, ..., 8.6182e+02,\n", - " 8.7560e+02, 8.7489e+02]])\n" + " [-3.2291e-01, -1.4686e+01, 9.0462e+00, ..., 4.5691e+02,\n", + " 4.6361e+02, 4.6903e+02],\n", + " [-7.1130e+00, 5.8362e+00, 8.4475e+00, ..., 8.0142e+02,\n", + " 8.1157e+02, 8.0876e+02],\n", + " [-4.1383e+00, -4.4619e+00, 1.4715e+01, ..., 1.2880e+02,\n", + " 1.3755e+02, 1.1952e+02]])\n" ] } ], @@ -204,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "fc9f3c22-8317-4f76-b860-43cac495d529", "metadata": {}, "outputs": [], @@ -212,7 +215,7 @@ "# Save both params and xs to a .pkl file\n", "data_to_save_valid = {'thetas': params_valid, 'xs': xs_valid}\n", "\n", - "dataloader.save_data_pkl('data_validation',\n", + "dataloader.save_data_h5('data_validation',\n", " data_to_save_valid,\n", " path = '../saveddata/')" ] @@ -227,27 +230,19 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "7c2dfe9f-d2e2-4a9e-8fd8-ad7aff7bd228", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "../saveddata/\n" - ] - } - ], + "outputs": [], "source": [ - "train_pkl = dataloader.load_data_pkl(\n", + "train_h5 = dataloader.load_data_h5(\n", " 'data_train',\n", " '../saveddata/',)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "3bcc3421-25f7-4cd6-bf64-d05fa0df1c25", "metadata": {}, "outputs": [ @@ -255,29 +250,35 @@ "name": "stdout", "output_type": "stream", "text": [ - "{'thetas': tensor([[ 2.8840, -7.0975],\n", - " [ 6.8337, -5.9733],\n", - " [ 2.4926, -5.7297],\n", + "{'thetas': tensor([[ 3.0800, -4.7952],\n", + " [ 1.8481, 6.3294],\n", + " [ 4.0461, 2.8588],\n", " ...,\n", - " [ 7.2979, -0.9311],\n", - " [ 6.3926, -0.3290],\n", - " [ 6.3816, 3.8464]]), 'xs': tensor([[-11.4556, 9.8369, 4.9505, ..., 277.5564, 291.7433, 285.3736],\n", - " [-12.3848, 7.0872, 19.9406, ..., 663.7286, 663.2328, 674.7347],\n", - " [ 0.8212, 1.4636, -7.0082, ..., 242.6000, 236.7188, 244.5201],\n", + " [ 8.1919, -1.6658],\n", + " [ 5.0935, 0.3070],\n", + " [ 4.0631, 9.8509]]), 'xs': tensor([[-8.5266e+00, -1.8273e+00, -1.1451e+00, ..., 2.9787e+02,\n", + " 3.0003e+02, 3.1156e+02],\n", + " [ 1.1926e+01, 6.5993e+00, 5.1448e+00, ..., 1.8203e+02,\n", + " 1.8708e+02, 1.8575e+02],\n", + " [-4.1232e-01, 1.1292e+01, 1.0386e+01, ..., 3.9838e+02,\n", + " 4.0421e+02, 4.0578e+02],\n", " ...,\n", - " [ -3.1995, 6.4203, 21.6573, ..., 712.5668, 715.9341, 730.9291],\n", - " [ -3.1645, 6.0377, 15.8926, ..., 622.5889, 629.9952, 634.9966],\n", - " [ 12.4576, 13.1750, 17.9107, ..., 628.2657, 635.1102, 644.2883]])}\n" + " [-1.4934e+00, 1.5889e+01, 1.6708e+01, ..., 8.0203e+02,\n", + " 8.0764e+02, 8.1931e+02],\n", + " [ 1.0923e+01, 6.6249e+00, 1.7376e+01, ..., 5.0127e+02,\n", + " 5.0772e+02, 5.1401e+02],\n", + " [ 9.2832e+00, 1.3263e+01, 2.0634e+01, ..., 4.1520e+02,\n", + " 4.1219e+02, 4.0914e+02]])}\n" ] } ], "source": [ - "print(train_pkl)" + "print(train_h5)" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "835b93f4-6f7d-4b18-82b2-3d74213fc532", "metadata": {}, "outputs": [ @@ -285,7 +286,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " Neural network successfully converged after 58 epochs." + " Neural network successfully converged after 104 epochs." ] } ], @@ -312,13 +313,14 @@ "inference = SNPE(prior=prior, density_estimator=neural_posterior, device=\"cpu\")\n", "\n", "\n", - "density_estimator = inference.append_simulations(train_pkl['thetas'],train_pkl['xs']).train()\n", + "density_estimator = inference.append_simulations(train_h5['thetas'],\n", + " train_h5['xs']).train()\n", "posterior = inference.build_posterior(density_estimator)" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "ef901ae9-d074-472d-a99f-e2afd8ec1a05", "metadata": {}, "outputs": [], @@ -331,21 +333,10 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "f8803927-2642-42ec-abc2-6871869dbeda", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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/v2Rax599FGNjo5q6dKl6X+otJc8wzCMd4+el5SUGHfffbfx0ksvGVdffbUxe/Zso7+/P9ePVrCuueYao7S01AgGg8ahQ4ciX3/7298i13zpS18yFi1aZDz66KPG008/bSxbtsxYtmxZDp+68I09jWUYfMbp8tRTTxlTp041tmzZYnR3dxs7duww3ve+9xk//elPI9fccsstxuzZs41du3YZ//M//2PU19dzJNqilStXGgsXLowcPff7/cbcuXONr3/965Fr+JytO3r0qPHss88azz77rCHJ2LZtm/Hss88af/rTnwzDMPeZXnTRRcZZZ51l7N2713j88ceN6upqjp4Xoh/84AfGokWLjGnTphmf+MQnjN/97ne5fqSCJinm149//OPINX//+9+Na6+91jjllFOM973vfca//uu/GocOHcrdQ9vA+LDDZ5w+//3f/22cfvrpRklJibF48WLjrrvuivr+6OiosWHDBqOiosIoKSkxLrjgAuPAgQM5etrCNDIyYvh8PmPRokXG9OnTjX/4h38w1q9fbxw7dixyDZ+zdYFAIOZ/j1euXGkYhrnP9M033zSampqMmTNnGrNmzTKuvPJK4+jRoxl5XodhjGkjCQAAYDPU7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7ACwncHBQVVWVurmm2+OvPbkk09q2rRp2r17dw6fDEAuMAgUgC394he/0KWXXqonn3xSH/7wh3XmmWeqvr5e27Zty/WjAcgywg4A21q1apV+85vfaMmSJXrhhRe0b98+lZSU5PqxAGQZYQeAbf3973/X6aefrt7eXu3fv19nnHFGrh8JQA5QswPAtv74xz/qz3/+s0ZHR3Xw4MFcPw6AHGFlB4AtHT9+XJ/4xCd05pln6sMf/rBaW1v1wgsvaN68ebl+NABZRtgBYEtf+9rX1NnZqeeff14zZ87U+eefr9LSUj388MO5fjQAWcY2FgDbCQaDam1t1U9+8hPNmjVLU6ZM0U9+8hN1dXXpjjvuyPXjAcgyVnYAAICtsbIDAABsjbADAABsjbADAABsjbADAABsjbADAABsjbADAABsjbADAABsjbADAABsjbADAABsjbADAABsjbADAABs7f8DFlzJfW6k9pQAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# generate a true dataset\n", "theta_true = [1, 5]\n", @@ -362,45 +353,10 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "b86aeb37-d8cf-4354-b441-45b0294268bb", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "09753364ed6247fca293e3efbe3d8a90", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Drawing 10000 posterior samples: 0%| | 0/10000 [00:00]" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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tddeKzfddFPWxwThs8+H//5UAEzYiy++qN1/6qmnpKWlRXbs2CH/8A//kPVxkUhEpk+fXujhTUhZWZnvxzh16lTt/ne/+12ZN2+erFixIutjgvDZ54O0GFACent7RURk8uTJruf19/fLnDlzZNasWXL99dfLrl27ijG8vOzdu1daW1vloosuks9//vNy6NAhr4fkanBwUJ555hm54447XK9GgvDZ54NFlEDIJZNJ+cxnPiM9PT2ybdu2rOe9/vrrsnfvXlm0aJH09vbK9773PXn11Vdl165dMnPmzCKOOLsXXnhB+vv75eKLL5Zjx47Jt7/9beno6JB3331X6urqvB7eqH71q1/JrbfeKocOHZLW1tZRzwnCZ58vggsQcnfddZe88MILsm3btry+qIaGhmThwoVyyy23yHe+850CjnD8enp6ZM6cOfLoo4/Kl770Ja+HM6rVq1dLRUWF/Pa3v835MUH47MdCzQUIsfXr18vvfvc7efXVV/P+Dbi8vFw+8pGPyL59+wo0uolrbGyUBQsW+HaMBw8elC1btsizzz6b1+OC8NmPhZoLEEKpVErWr18vzz33nPzhD3+QD33oQ3k/RyKRkHfeeUdmzJhRgBHa0d/fL++9955vx/jkk09KS0uLfOpTn8rrcUH47MdCcAFCaN26dfLMM8/IL37xC6mrq5POzk7p7OyUeDyeOee2226TBx54IHP/4Ycflt///vfy/vvvy9tvvy1f+MIX5ODBg/LlL3/Zi7cwqq997WuydetWOXDggLz22mty4403SiwWk1tuucXroY2QTCblySeflLVr146YLh3Ezz5fpMWAEPrhD38oIiIrV67Ufv7kk0/KF7/4RREROXTokESjzu+X3d3d8pWvfEU6OzulqalJli5dKq+99ppceumlxRr2mI4cOSK33HKLnDp1SqZOnSrXXHONvPHGGyOm/vrBli1b5NChQ3LHHXeMOBbEzz5fFPQBANaRFgMAWEdwAQBYR3ABAFhHcAEAWEdwAQBYR3ABAFhHcAEAWEdwARB4K1eulA0bNng9DCgILgAA6wguAADrCC4AQmF4eFjWr18vDQ0NMmXKFPnWt74ldLfyDsEFQCg8/fTTUlZWJtu3b5fHHntMHn30UfnpT3/q9bBKFo0rAQTeypUrpaurS3bt2pXZp/7++++X3/zmN7J7926PR1eauHIBEApXXXVVJrCIiFx99dWyd+9eSSQSHo6qdBFcAADWEVwAhMKbb76p3X/jjTdk/vz5EovFPBpRaSO4AAiFQ4cOyb333it79uyRX/7yl/L444/LPffc4/WwShbbHAMIhdtuu03i8bgsX75cYrGY3HPPPfLVr37V62GVLGaLAQCsIy0GALCO4AIAsI7gAgCwjuACALCO4AIAsI7gAgCwjuACALCO4AIAsI7gAgCwjuACALCO4AIAsI7gAgCw7v8DEp5nbwyhmvUAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# sample from the posterior\n", "posterior_samples_1 = posterior.sample((10000,), x = y_true)\n",