{ "cells": [ { "cell_type": "markdown", "id": "530feebe", "metadata": {}, "source": [ "`NeuralODE.reference.ipynb` \n", "---" ] }, { "cell_type": "code", "execution_count": 1, "id": "bd0a3fa6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Version: 0.3.2\n" ] }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 1;\n", " var nbb_unformatted_code = \"%load_ext nb_black\\n# pip install neural-diffeqs\\n\\nimport neural_diffeqs\\n\\nprint(f\\\"Version: {neural_diffeqs.__version__}\\\")\\nimport torch\";\n", " var nbb_formatted_code = \"%load_ext nb_black\\n# pip install neural-diffeqs\\n\\nimport neural_diffeqs\\n\\nprint(f\\\"Version: {neural_diffeqs.__version__}\\\")\\nimport torch\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# %load_ext nb_black\n", "# pip install neural-diffeqs\n", "\n", "import neural_diffeqs\n", "\n", "print(f\"Version: {neural_diffeqs.__version__}\")\n", "import torch" ] }, { "cell_type": "markdown", "id": "763caa74", "metadata": {}, "source": [ "### Default `NeuralODE`\n", "\n", "The only required parameter is:\n", "\n", "* `state_size`" ] }, { "cell_type": "code", "execution_count": 2, "id": "5b650fd1", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NeuralODE(\n", " (mu): TorchNet(\n", " (hidden_1): Sequential(\n", " (linear): Linear(in_features=50, out_features=512, bias=True)\n", " (activation): LeakyReLU(negative_slope=0.01)\n", " )\n", " (hidden_2): Sequential(\n", " (linear): Linear(in_features=512, out_features=512, bias=True)\n", " (activation): LeakyReLU(negative_slope=0.01)\n", " )\n", " (output): Sequential(\n", " (linear): Linear(in_features=512, out_features=50, bias=True)\n", " )\n", " )\n", ")\n" ] }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 2;\n", " var nbb_unformatted_code = \"ODE = neural_diffeqs.NeuralODE(state_size=50)\\nprint(ODE)\";\n", " var nbb_formatted_code = \"ODE = neural_diffeqs.NeuralODE(state_size=50)\\nprint(ODE)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ODE = neural_diffeqs.NeuralODE(state_size=50)\n", "print(ODE)" ] }, { "cell_type": "markdown", "id": "49615c08", "metadata": {}, "source": [ "### Changing some parameters\n", "\n", "For example, specify the hidden state size for each network" ] }, { "cell_type": "code", "execution_count": 3, "id": "ed36e1dd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NeuralODE(\n", " (mu): TorchNet(\n", " (hidden_1): Sequential(\n", " (linear): Linear(in_features=50, out_features=64, bias=True)\n", " (activation): LeakyReLU(negative_slope=0.01)\n", " )\n", " (hidden_2): Sequential(\n", " (linear): Linear(in_features=64, out_features=128, bias=True)\n", " (activation): LeakyReLU(negative_slope=0.01)\n", " )\n", " (hidden_3): Sequential(\n", " (linear): Linear(in_features=128, out_features=64, bias=True)\n", " (activation): LeakyReLU(negative_slope=0.01)\n", " )\n", " (output): Sequential(\n", " (linear): Linear(in_features=64, out_features=50, bias=True)\n", " )\n", " )\n", ")\n" ] }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 3;\n", " var nbb_unformatted_code = \"ODE = neural_diffeqs.NeuralODE(\\n state_size=50, mu_hidden=[64, 128, 64]\\n)\\nprint(ODE)\";\n", " var nbb_formatted_code = \"ODE = neural_diffeqs.NeuralODE(state_size=50, mu_hidden=[64, 128, 64])\\nprint(ODE)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ODE = neural_diffeqs.NeuralODE(state_size=50, mu_hidden=[64, 128, 64])\n", "print(ODE)" ] }, { "cell_type": "markdown", "id": "66dcbecc", "metadata": {}, "source": [ "### Activation functions, dropout, and bias" ] }, { "cell_type": "code", "execution_count": 4, "id": "1c822988", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NeuralODE(\n", " (mu): TorchNet(\n", " (hidden_1): Sequential(\n", " (linear): Linear(in_features=50, out_features=64, bias=True)\n", " (activation): Softmax(dim=None)\n", " )\n", " (hidden_2): Sequential(\n", " (linear): Linear(in_features=64, out_features=128, bias=True)\n", " (dropout): Dropout(p=0.2, inplace=False)\n", " (activation): Tanh()\n", " )\n", " (hidden_3): Sequential(\n", " (linear): Linear(in_features=128, out_features=128, bias=True)\n", " (activation): Tanh()\n", " )\n", " (hidden_4): Sequential(\n", " (linear): Linear(in_features=128, out_features=64, bias=True)\n", " (activation): Tanh()\n", " )\n", " (output): Sequential(\n", " (linear): Linear(in_features=64, out_features=50, bias=True)\n", " )\n", " )\n", ")\n" ] }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 4;\n", " var nbb_unformatted_code = \"ODE = neural_diffeqs.NeuralODE(\\n state_size=50,\\n mu_hidden=[64, 128, 128, 64],\\n mu_activation=[torch.nn.Softmax, torch.nn.Tanh],\\n mu_dropout=[0, 0.2, 0]\\n)\\nprint(ODE)\";\n", " var nbb_formatted_code = \"ODE = neural_diffeqs.NeuralODE(\\n state_size=50,\\n mu_hidden=[64, 128, 128, 64],\\n mu_activation=[torch.nn.Softmax, torch.nn.Tanh],\\n mu_dropout=[0, 0.2, 0],\\n)\\nprint(ODE)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ODE = neural_diffeqs.NeuralODE(\n", " state_size=50,\n", " mu_hidden=[64, 128, 128, 64],\n", " mu_activation=[torch.nn.Softmax, torch.nn.Tanh],\n", " mu_dropout=[0, 0.2, 0],\n", ")\n", "print(ODE)" ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:sdq]", "language": "python", "name": "conda-env-sdq-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" } }, "nbformat": 4, "nbformat_minor": 5 }