|
691 | 691 | "id": "53f1e714", |
692 | 692 | "metadata": { |
693 | 693 | "collapsed": false, |
694 | | - "editable": true |
| 694 | + "editable": true, |
| 695 | + "jupyter": { |
| 696 | + "outputs_hidden": false |
| 697 | + } |
695 | 698 | }, |
696 | 699 | "outputs": [], |
697 | 700 | "source": [ |
|
722 | 725 | "id": "e1c56c04", |
723 | 726 | "metadata": { |
724 | 727 | "collapsed": false, |
725 | | - "editable": true |
| 728 | + "editable": true, |
| 729 | + "jupyter": { |
| 730 | + "outputs_hidden": false |
| 731 | + } |
726 | 732 | }, |
727 | 733 | "outputs": [], |
728 | 734 | "source": [ |
|
759 | 765 | "id": "21777496", |
760 | 766 | "metadata": { |
761 | 767 | "collapsed": false, |
762 | | - "editable": true |
| 768 | + "editable": true, |
| 769 | + "jupyter": { |
| 770 | + "outputs_hidden": false |
| 771 | + } |
763 | 772 | }, |
764 | 773 | "outputs": [], |
765 | 774 | "source": [ |
|
790 | 799 | "id": "769872cf", |
791 | 800 | "metadata": { |
792 | 801 | "collapsed": false, |
793 | | - "editable": true |
| 802 | + "editable": true, |
| 803 | + "jupyter": { |
| 804 | + "outputs_hidden": false |
| 805 | + } |
794 | 806 | }, |
795 | 807 | "outputs": [], |
796 | 808 | "source": [ |
|
838 | 850 | "id": "34b144b0", |
839 | 851 | "metadata": { |
840 | 852 | "collapsed": false, |
841 | | - "editable": true |
| 853 | + "editable": true, |
| 854 | + "jupyter": { |
| 855 | + "outputs_hidden": false |
| 856 | + } |
842 | 857 | }, |
843 | 858 | "outputs": [], |
844 | 859 | "source": [ |
|
867 | 882 | "id": "468b3848", |
868 | 883 | "metadata": { |
869 | 884 | "collapsed": false, |
870 | | - "editable": true |
| 885 | + "editable": true, |
| 886 | + "jupyter": { |
| 887 | + "outputs_hidden": false |
| 888 | + } |
871 | 889 | }, |
872 | 890 | "outputs": [], |
873 | 891 | "source": [ |
|
897 | 915 | "id": "2b837425", |
898 | 916 | "metadata": { |
899 | 917 | "collapsed": false, |
900 | | - "editable": true |
| 918 | + "editable": true, |
| 919 | + "jupyter": { |
| 920 | + "outputs_hidden": false |
| 921 | + } |
901 | 922 | }, |
902 | | - "outputs": [], |
| 923 | + "outputs": [ |
| 924 | + { |
| 925 | + "ename": "RuntimeError", |
| 926 | + "evalue": "The size of tensor a (128) must match the size of tensor b (64) at non-singleton dimension 1", |
| 927 | + "output_type": "error", |
| 928 | + "traceback": [ |
| 929 | + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
| 930 | + "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", |
| 931 | + "Cell \u001b[0;32mIn[7], line 8\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m x, _ \u001b[38;5;129;01min\u001b[39;00m train_loader:\n\u001b[1;32m 7\u001b[0m x \u001b[38;5;241m=\u001b[39m x\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[0;32m----> 8\u001b[0m loss \u001b[38;5;241m=\u001b[39m \u001b[43mdiffusion_loss\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m opt\u001b[38;5;241m.\u001b[39mzero_grad()\n\u001b[1;32m 10\u001b[0m loss\u001b[38;5;241m.\u001b[39mbackward()\n", |
| 932 | + "Cell \u001b[0;32mIn[6], line 7\u001b[0m, in \u001b[0;36mdiffusion_loss\u001b[0;34m(model, x0)\u001b[0m\n\u001b[1;32m 5\u001b[0m noise \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mrandn_like(x0)\n\u001b[1;32m 6\u001b[0m x_noisy \u001b[38;5;241m=\u001b[39m q_sample(x0, t, noise)\n\u001b[0;32m----> 7\u001b[0m pred_noise \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx_noisy\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfloat\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[43mT\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m F\u001b[38;5;241m.\u001b[39mmse_loss(pred_noise, noise)\n", |
| 933 | + "File \u001b[0;32m~/miniforge3/envs/myenv/lib/python3.9/site-packages/torch/nn/modules/module.py:1532\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1530\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[1;32m 1531\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 1532\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", |
| 934 | + "File \u001b[0;32m~/miniforge3/envs/myenv/lib/python3.9/site-packages/torch/nn/modules/module.py:1541\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1536\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1537\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1538\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m 1539\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1540\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1541\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1543\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1544\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", |
| 935 | + "Cell \u001b[0;32mIn[4], line 24\u001b[0m, in \u001b[0;36mSimpleUNet.forward\u001b[0;34m(self, x, t)\u001b[0m\n\u001b[1;32m 22\u001b[0m temb \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtime_mlp(t) \u001b[38;5;66;03m# [oai_citation:8‡GitHub](https://github.com/tonyduan/diffusion?utm_source=chatgpt.com)\u001b[39;00m\n\u001b[1;32m 23\u001b[0m temb \u001b[38;5;241m=\u001b[39m temb\u001b[38;5;241m.\u001b[39mview(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m64\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m---> 24\u001b[0m h \u001b[38;5;241m=\u001b[39m \u001b[43mh\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mtemb\u001b[49m\n\u001b[1;32m 25\u001b[0m h \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mact(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdec1(h))\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdec2(h)\n", |
| 936 | + "\u001b[0;31mRuntimeError\u001b[0m: The size of tensor a (128) must match the size of tensor b (64) at non-singleton dimension 1" |
| 937 | + ] |
| 938 | + } |
| 939 | + ], |
903 | 940 | "source": [ |
904 | 941 | "model = SimpleUNet(channels).to(device)\n", |
905 | 942 | "opt = torch.optim.Adam(model.parameters(), lr=lr)\n", |
|
932 | 969 | "id": "62e04251", |
933 | 970 | "metadata": { |
934 | 971 | "collapsed": false, |
935 | | - "editable": true |
| 972 | + "editable": true, |
| 973 | + "jupyter": { |
| 974 | + "outputs_hidden": false |
| 975 | + } |
936 | 976 | }, |
937 | | - "outputs": [], |
| 977 | + "outputs": [ |
| 978 | + { |
| 979 | + "ename": "RuntimeError", |
| 980 | + "evalue": "The size of tensor a (128) must match the size of tensor b (64) at non-singleton dimension 1", |
| 981 | + "output_type": "error", |
| 982 | + "traceback": [ |
| 983 | + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
| 984 | + "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", |
| 985 | + "Cell \u001b[0;32mIn[8], line 20\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m x\n\u001b[1;32m 19\u001b[0m \u001b[38;5;66;03m# Generate samples\u001b[39;00m\n\u001b[0;32m---> 20\u001b[0m samples \u001b[38;5;241m=\u001b[39m \u001b[43mp_sample_loop\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m16\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchannels\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mimg_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mimg_size\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 21\u001b[0m samples \u001b[38;5;241m=\u001b[39m samples\u001b[38;5;241m.\u001b[39mclamp(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m,\u001b[38;5;241m1\u001b[39m)\u001b[38;5;241m.\u001b[39mcpu()\n\u001b[1;32m 22\u001b[0m grid \u001b[38;5;241m=\u001b[39m torchvision\u001b[38;5;241m.\u001b[39mutils\u001b[38;5;241m.\u001b[39mmake_grid(samples, nrow\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m, normalize\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", |
| 986 | + "File \u001b[0;32m~/miniforge3/envs/myenv/lib/python3.9/site-packages/torch/utils/_contextlib.py:115\u001b[0m, in \u001b[0;36mcontext_decorator.<locals>.decorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 113\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecorate_context\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m ctx_factory():\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", |
| 987 | + "Cell \u001b[0;32mIn[8], line 6\u001b[0m, in \u001b[0;36mp_sample_loop\u001b[0;34m(model, shape)\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mreversed\u001b[39m(\u001b[38;5;28mrange\u001b[39m(T)):\n\u001b[1;32m 5\u001b[0m t \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mfull((shape[\u001b[38;5;241m0\u001b[39m],), i, device\u001b[38;5;241m=\u001b[39mdevice)\u001b[38;5;241m.\u001b[39mfloat()\u001b[38;5;241m/\u001b[39mT\n\u001b[0;32m----> 6\u001b[0m eps_pred \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m beta_t \u001b[38;5;241m=\u001b[39m betas[i]\n\u001b[1;32m 8\u001b[0m alpha_t \u001b[38;5;241m=\u001b[39m alphas[i]\n", |
| 988 | + "File \u001b[0;32m~/miniforge3/envs/myenv/lib/python3.9/site-packages/torch/nn/modules/module.py:1532\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1530\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[1;32m 1531\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 1532\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", |
| 989 | + "File \u001b[0;32m~/miniforge3/envs/myenv/lib/python3.9/site-packages/torch/nn/modules/module.py:1541\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1536\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1537\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1538\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m 1539\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1540\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1541\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1543\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1544\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", |
| 990 | + "Cell \u001b[0;32mIn[4], line 24\u001b[0m, in \u001b[0;36mSimpleUNet.forward\u001b[0;34m(self, x, t)\u001b[0m\n\u001b[1;32m 22\u001b[0m temb \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtime_mlp(t) \u001b[38;5;66;03m# [oai_citation:8‡GitHub](https://github.com/tonyduan/diffusion?utm_source=chatgpt.com)\u001b[39;00m\n\u001b[1;32m 23\u001b[0m temb \u001b[38;5;241m=\u001b[39m temb\u001b[38;5;241m.\u001b[39mview(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m64\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m---> 24\u001b[0m h \u001b[38;5;241m=\u001b[39m \u001b[43mh\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mtemb\u001b[49m\n\u001b[1;32m 25\u001b[0m h \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mact(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdec1(h))\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdec2(h)\n", |
| 991 | + "\u001b[0;31mRuntimeError\u001b[0m: The size of tensor a (128) must match the size of tensor b (64) at non-singleton dimension 1" |
| 992 | + ] |
| 993 | + } |
| 994 | + ], |
938 | 995 | "source": [ |
939 | 996 | "@torch.no_grad()\n", |
940 | 997 | "def p_sample_loop(model, shape):\n", |
|
978 | 1035 | ] |
979 | 1036 | } |
980 | 1037 | ], |
981 | | - "metadata": {}, |
| 1038 | + "metadata": { |
| 1039 | + "kernelspec": { |
| 1040 | + "display_name": "Python 3 (ipykernel)", |
| 1041 | + "language": "python", |
| 1042 | + "name": "python3" |
| 1043 | + }, |
| 1044 | + "language_info": { |
| 1045 | + "codemirror_mode": { |
| 1046 | + "name": "ipython", |
| 1047 | + "version": 3 |
| 1048 | + }, |
| 1049 | + "file_extension": ".py", |
| 1050 | + "mimetype": "text/x-python", |
| 1051 | + "name": "python", |
| 1052 | + "nbconvert_exporter": "python", |
| 1053 | + "pygments_lexer": "ipython3", |
| 1054 | + "version": "3.9.15" |
| 1055 | + } |
| 1056 | + }, |
982 | 1057 | "nbformat": 4, |
983 | 1058 | "nbformat_minor": 5 |
984 | 1059 | } |
0 commit comments