diff --git a/docs/source/_tutorial.rst b/docs/source/_tutorial.rst index 612320a..4c05472 100644 --- a/docs/source/_tutorial.rst +++ b/docs/source/_tutorial.rst @@ -38,6 +38,6 @@ Supervised Learning ------------------- - `Introductory Tutorial: Supervised Learning with PINA `_ -- `Chemical Properties Prediction with Graph Neural Networks `_ +- `Chemical Properties Prediction with Graph Neural Networks `_ - `Unstructured Convolutional Autoencoders with Continuous Convolution `_ - `Reduced Order Modeling with POD-RBF and POD-NN Approaches for Fluid Dynamics `_ diff --git a/tutorials/tutorial16/tutorial.ipynb b/tutorials/tutorial16/tutorial.ipynb index ac30c64..872f6b6 100644 --- a/tutorials/tutorial16/tutorial.ipynb +++ b/tutorials/tutorial16/tutorial.ipynb @@ -28,7 +28,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "014bbd86", "metadata": {}, "outputs": [], @@ -68,7 +68,7 @@ "\n", "We can have two types of problems:\n", "1. ***Data-Driven Problems***: The model is trained using data, such as in classification networks or autoencoders.\n", - "2. **&Physics-Driven Problems***: The model is trained using physical laws representing the problem, such as in **PINNs**.\n", + "2. ***Physics-Driven Problems***: The model is trained using physical laws representing the problem, such as in **PINNs**.\n", "Let's start by building the first type, the data driven type. \n", "\n", "### Data driven modelling\n", @@ -95,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "464d4ab2", "metadata": {}, "outputs": [], @@ -131,7 +131,7 @@ "source": [ "You can define as many conditions as needed, and the model will attempt to minimize all of them simultaneously! You can access the data in various ways:\n", "\n", - "- `problem.conditions[''].input`, `problem.conditions[''].output` – Access the input and output data for the specified condition ``.\n", + "- `problem.conditions[''].input`, `problem.conditions[''].target` – Access the input and output data for the specified condition ``.\n", "- `problem.input_pts` – Access the input points for all conditions.\n", "\n", "To ensure that the problem is ready, you can check if all domains have been discretized, meaning all conditions have input points available to pass to the model:" @@ -139,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "5bd8397e", "metadata": {}, "outputs": [ @@ -149,7 +149,7 @@ "True" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -236,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "f2608e2e", "metadata": {}, "outputs": [], @@ -290,7 +290,7 @@ "As you can see, we implemented the `ode_equation` function which given the model ouput and input returns the equation residual. These residuals are the ones minimized during PINN optimization (for more on PINN see [the related tutorials](https://mathlab.github.io/PINA/_tutorial.html#physics-informed-neural-networks)). \n", "\n", "How are the residuals computed?\n", - "Givem the output we perform differential operation using the [operator modulus](https://mathlab.github.io/PINA/_rst/operator.html). It is pretty intuitive, each differential operator takes the following inputs: \n", + "Given the output we perform differential operation using the [operator modulus](https://mathlab.github.io/PINA/_rst/operator.html). It is pretty intuitive, each differential operator takes the following inputs: \n", "- A tensor on which the operator is applied. \n", "- A tensor with respect to which the operator is computed. \n", "- The names of the output variables for which the operator is evaluated. \n", @@ -317,7 +317,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 5, "id": "a561b984", "metadata": {}, "outputs": [ @@ -327,7 +327,7 @@ "False" ] }, - "execution_count": 16, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -373,7 +373,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 6, "id": "09ce5c3a", "metadata": {}, "outputs": [], @@ -399,7 +399,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 7, "id": "329962b6", "metadata": {}, "outputs": [], @@ -419,7 +419,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 8, "id": "d6ed9aaf", "metadata": {}, "outputs": [ @@ -427,16 +427,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Input points: {'bound_cond': LabelTensor([[0.]]), 'phys_cond': LabelTensor([[0.5744],\n", - " [0.0416],\n", - " [0.6890],\n", - " [0.9406],\n", - " [0.3500]])}\n", - "Input points labels: {'x0': LabelTensor([[0.]]), 'D': LabelTensor([[0.5744],\n", - " [0.0416],\n", - " [0.6890],\n", - " [0.9406],\n", - " [0.3500]])}\n" + "Input points: {'bound_cond': LabelTensor([[0.]]), 'phys_cond': LabelTensor([[0.9117],\n", + " [0.6416],\n", + " [0.3171],\n", + " [0.4330],\n", + " [0.1810]])}\n", + "Input points labels: {'x0': LabelTensor([[0.]]), 'D': LabelTensor([[0.9117],\n", + " [0.6416],\n", + " [0.3171],\n", + " [0.4330],\n", + " [0.1810]])}\n" ] } ], @@ -455,23 +455,23 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 9, "id": "3802e22a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 28, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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61DvFi1aSPfu3U2t0lNPPeXuT3PttdfKO++8I4sWLTJDxMeOHSvjx483I7QKq1y5crJs2TIz2kqHg48aNUqef/558YUg7VUsASYjI8PcmyA9PV3Cw8P9fTgAEJC0uUJrDPQeLTk7nSKwnS7ge1HY329qbgAAgFUINwAAWGbBggWmWSivSYeY2y7E3wcAAACK1p133pnrXjsFDd+2EeEGAADLlC9f3kyBimYpAABgFcINAACwCuEGAABYhXADAACsQrgBAABWIdwAAFCE6tSpI9OmTZNAUqeYnTPhBgAAWIVwAwAArEK4AQDAAzfeeKMMGjTITPoQxypVqsiYMWPM079dTp48KQ888IC5kV6tWrVk3rx57mU33XST2Tanw4cPS2hoqKxevdrM61PD69evbx4cWbVqVenatWuhji07O1smTZokf/jDHyQsLMy897PPPuterk/o1vcvW7asREREmCeJHz9+3L1cn/rduXNnmTx5slSvXt2so089P3v2rHudQ4cOyR133GH2oQ+31Ec9FDeEGwBAybdvs8jXi3579YE33nhDQkJCZOPGjfLSSy/Jiy++KK+88op7+ZQpUyQ2Nla2bdsmAwYMkEcffVRSUlLMsgcffFAWLlwoZ86cca//1ltvSY0aNUzw2Lx5s/ztb3+T8ePHm20SExPlhhtuKNRxjRgxQiZOnGjCVlJSknkfDUfqxIkT0qFDB6lUqZJs2rRJlixZIh9//PHvgtYnn3wiP/zwg3nV85w/f76ZcgagvXv3muVLly41QUwDT7HiBKD09HSN1+YVAOAfp06dcpKSkszrJfn3WMdJCP/fpPNe1K5dOycmJsbJzs52lw0fPtyUqdq1azu9evVyL9P1IiMjnTlz5ph5Pd9KlSo5ixcvdq/TpEkTZ9y4cebf7777rhMeHu5kZGR4dFy6flhYmPPyyy/nuXzevHnmfY8fP+4uW7FihRMcHOykpaWZ+T59+pjjz8rKcq9z9913O926dTP/TklJMb+fGzdudC9PTk42ZVOnTnW8/b0o7O83NTcAgJJLa2rWnjdKR+e9XIPTqlUrCQoKcs+3bt1adu3aJefOnTPzTZo0cS/T9apVq+au3dCmpt69e8trr71m5rdu3So7d+40NSLqlltukdq1a0vdunXNetrso81cF5KcnGxqg26++eZ8lzdt2lQuv/xyd1nbtm1N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JUuWSIMGDcz6jRs3lpUrV+Za7jiOjB07VqpXry5ly5aV9u3by65du7x8FgAAoCTwerhZvHixDB06VBISEmTr1q3StGlT6dChgxw6dCjP9detWyfdu3eXfv36ybZt26Rz585m2rlzp3udSZMmyfTp02Xu3LmyYcMGufzyy80+T58+Lf62LfVXeW/rPvN6yfZtFvl60W+vwKXi+1Sy2Px52XxukOLw+QY5Wg3iRVpT06JFC5k5c6aZz87OlujoaBk8eLDEx8f/bv1u3brJiRMnZPny5e6yVq1aSbNmzUyY0cONioqSYcOGyRNPPGGWp6enS9WqVWX+/Ply7733XvCYMjIypEKFCma78PDwIjvXif9Klrmf/eief6RdXYm/LebidrYqQWTttP/Nt31c5Ja/F8FRIiDxfSpZbP68bD43iLc/38L+fnu15iYzM1O2bNlimo3cbxgcbObXr1+f5zZannN9pbUyrvV3794taWlpudbRE9UQld8+z5w5Yy5IzqmoaU1NzmCjdP6ianA07eb8ciid579ycDH4PpUsNn9eNp8bpDh9vl4NN0eOHJFz586ZWpWcdF4DSl60vKD1Xa+e7HPChAkmALkmrTkqaruPnPCovEA//8ezcqAgfJ9KFps/L5vPDVKcPt+AGC01YsQIU4Xlmvbu3Vvk73Fllcs9Ki9QxB88KwcKwvepZLH587L53CDF6fP1aripUqWKlCpVSg4ePJirXOerVauW5zZaXtD6rldP9hkWFmba5nJORe2PtSqZPjY5Pdqurin3WM3Y39opc2o75LdywFN8n0oWmz8vm88NUpw+X590KG7ZsqXMmDHD3aG4Vq1aMmjQoHw7FJ88eVKWLVvmLmvTpo00adIkV4di7UysnYqV9qGJjIz0e4dipX1stClKa2wuKtjkpO2UWp2nqZf/8+NS8X0qWWz+vGw+N4g3P99C/347XrZo0SInLCzMmT9/vpOUlOT079/fqVixopOWlmaW9+7d24mPj3evv3btWickJMSZPHmyk5yc7CQkJDilS5d2duzY4V5n4sSJZh///Oc/nW+++cbp1KmTc+WVVzqnTp0q1DGlp6droDOvAACgZCjs73eIeJnWxBw+fNjcdE87/OqQ7sTERHeH4NTUVDOCKmctzcKFC2X06NEycuRIqV+/vnzwwQfSqFEj9zpPPfWUGS7ev39/OXr0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", + "image/png": "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2rRpk3JzczVmzJhqH5Hp37+/fv3rX2vw4MFau3at9uzZo7/97W9as2aNJGnixInKzs7WE088oa+++kpLlizRiy++6NUFwXfccYf8/Px0zz33KC8vT6tXr9acOXO8GmdNEW4AAI3a5OsS9c4DffXMbT31zgN9Nem6RJ/vc8SIETp58qR69+6tsWPHasKECcrIyJAkvfLKK0pKStJvfvMbpaamyhij1atXu0/hJCYmav78+Zo3b5569uypzZs31+hbRK+88oratWun/v3765ZbblFGRobatm1b7fXfeustXXXVVRo6dKi6dOmiRx55xH09zS9+8Qu98cYbWr58ubp166bp06fr8ccf16hRo6q9/Ysvvljvv/++du7cqSuvvFKPPfaY/vSnP3k7zBrxM2ef+GsCiouLFR4eLqfTqbCwsPouBwCapFOnTmnPnj3q1KmTx0WnaNqqel9U9/ObIzcAAMAqhBsAACyzdOlSXXzxxZU+unbtWt/l+VxgfRcAAABq10033eRxr53/dPbXt21EuAEAwDItWrRQixYt6ruMesNpKQAAYBXCDQAAsArhBgAAWIVwAwAArEK4AQAAViHcAABQizp27Ki5c+fWdxl1qqGNmXADAACsQrgBAABWIdwAAOCFq6++WuPGjdO4ceMUHh6u1q1ba9q0afrP36E+ceKE7r77brVo0UJxcXFatGiRe9mAAQM0btw4j20eOnRIQUFBys7OliTNnz9f8fHxCgkJUVRUlG699dZq1eZyuTR79mxddtllCg4OVlxcnJ588kn38p07d2rAgAEKDQ1VZGSkMjIy9NNPP7mXjxo1SoMGDdKcOXMUExOjyMhIjR07VmVlZe4+Bw8e1I033qjQ0FB16tRJS5cu9e4FrAOEGwBA47d/q/TZ8tN/1oElS5YoMDBQmzdv1nPPPadnnnlGL7/8snv5008/reTkZG3fvl0PPPCA7r//fhUUFEiSxowZo2XLlqmkpMTd/7XXXlP79u01YMAAbd26Vb/73e/0+OOPq6CgQGvWrNGvf/3ratU1ZcoUzZo1S9OmTVNeXp6WLVumqKgoSdLx48eVnp6uli1basuWLVq5cqU++uijc4LW+vXr9c0332j9+vVasmSJFi9erMWLF7uXjxo1Svv27dP69ev15ptvav78+Tp48GBNX0rfME2Q0+k0kozT6azvUgCgyTp58qTJy8szJ0+e/Hkb+vt0Y7LC/v34+/TaKfA8+vfvbxITE43L5XK3TZo0ySQmJhpjjOnQoYO588473ctcLpdp27atWbBggTHm9LhbtmxpVqxY4e7To0cPM2PGDGOMMW+99ZYJCwszxcXFXtVVXFxsgoODzUsvvVTp8kWLFpmWLVuan376yd32wQcfGH9/f+NwOIwxxowcOdJ06NDBlJeXu/v89re/NUOGDDHGGFNQUGAkmc2bN7uX5+fnG0nm2Wef9are86nqfVHdz2+O3AAAGq/9W6UNcz3bNsz1+RGcPn36yM/Pz/08NTVVu3fvVkVFhSSpR48e7mV+fn6Kjo52H90ICQnR8OHD9de//lWStG3bNu3atUujRo2SJF1zzTXq0KGDOnfurOHDh2vp0qU6ceLEBWvKz89XSUmJBg4ceN7lPXv21EUXXeRu69evn1wul/uokiR17dpVAQEB7ucxMTHu2vPz8xUYGKikpCT38oSEBEVERFywvrpEuAEANF4/fO1dex05+5e3/fz85HK53M/HjBmjtWvXav/+/XrllVc0YMAAdejQQdLpH73ctm2bXn/9dcXExGj69Onq2bOnjh49WuU+Q0ND66T2xoBwAwBovCIv8669lmzatMnj+caNGxUfH+9xxKMq3bt3V3Jysl566SUtW7ZMd999t8fywMBApaWlafbs2fr888+1d+9erVu3rsptxsfHKzQ01H1R8tkSExP12Wef6fjx4+62DRs2yN/fX1dccUW16k5ISFB5eblyc3PdbQUFBRcMXnWNcAMAaLwuSZb6PejZ1u+h0+0+VFhYqMzMTBUUFOj111/XCy+8oAkTJni1jTFjxmjWrFkyxuh//ud/3O2rVq3S888/rx07dui7777Tq6++KpfLdcEAEhISokmTJumRRx7Rq6++qm+++UYbN27UX/7yF0nSsGHDFBISopEjR2rXrl1av369xo8fr+HDh7svOr6QK664Qtdee63uvfdebdq0Sbm5uRozZkytHTWqLYH1XQAAAD/LNX+QEm88fSoq8jKfBxtJGjFihE6ePKnevXsrICBAEyZMUEZGhlfbGDp0qB588EENHTpUISEh7vaIiAi9/fbbmjFjhk6dOqX4+Hi9/vrr6tq16wW3OW3aNAUGBmr69Ok6cOCAYmJidN9990mSmjdvrg8//FATJkzQVVddpebNm2vw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AFYh3AAAAKsQbgAAgFUINwAAwCqEGwAAYBXCDQAAsArhBgAAWIVwAwAArEK4AQAAViHcAAAAqxBuAACAVQg3AADAKoQbAABgFcINAACwCuEGAABYhXADAACsQrgBAABWIdwAAACrEG4AAIBVCDcAAMAqhBsAAGAVwg0AALAK4QYAAFiFcAMAAKxCuAEAAFYh3AAAAKsQbgAAgFUINwAAwCqEGwAAYBXCDQAAsArhBgAAWIVwAwAArEK4AQAAViHcAAAAqxBuAACAVQg3AADAKoQbAABgFcINAACwis/CzY8//qhhw4YpLCxMERERGj16tH766acq1zl16pTGjh2ryMhIXXzxxRo8eLCKiorcyz/77DMNHTpUsbGxCg0NVWJiop577jlfDQEAADRCPgs3w4YN0xdffKG1a9dq1apV+uc//6mMjIwq13nooYf0/vvva+XKlfr444914MAB3XLLLe7lubm5atu2rV577TV98cUXeuyxxzRlyhS9+OKLvhoGAABoZPyMMaa2N5qfn68uXbpoy5YtSk5OliStWbNG119/vfbv36927dqds47T6VSbNm20bNky3XrrrZKkL7/8UomJicrJyVGfPn0q3dfYsWOVn5+vdevWVbu+4uJihYeHy+l0KiwsrAYjBAAAda26n98+OXKTk5OjiIgId7CRpLS0NPn7+2vTpk2VrpObm6uysjKlpaW52xISEhQXF6ecnJzz7svpdKpVq1a1VzwAAGjUAn2xUYfDobZt23ruKDBQrVq1ksPhOO86QUFBioiI8GiPioo67zqffvqpVqxYoQ8++KDKekpKSlRSUuJ+XlxcXI1RAACAxsirIzeTJ0+Wn59flY8vv/zSV7V62LVrl26++WZlZWXpv//7v6vsO3PmTIWHh7sfsbGxdVIjAACoe14duZk4caJGjRpVZZ/OnTsrOjpaBw8e9GgvLy/Xjz/+qOjo6ErXi46OVmlpqY4ePepx9KaoqOicdfLy8jRw4EBlZGRo6tSpF6x7ypQpyszMdD8vLi4m4AAAYCmvwk2bNm3Upk2bC/ZLTU3V0aNHlZubq6SkJEnSunXr5HK5lJKSUuk6SUlJatasmbKzszV48GBJUkFBgQoLC5Wamuru98UXX2jAgAEaOXKknnzyyWrVHRwcrODg4Gr1BQAAjZtPvi0lSdddd52Kioq0cOFClZWV6a67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g7loOJgL32qSFxQDAAB7ceQGAABYhXADAACsQrgBAABWIdwAAACrEG68NG/ePHXs2FEhISFKSUnR5s2bq+y/cuVKJSQkKCQkRN27d9fq1avrqFL7eTMXL730kn71q1+pZcuWatmypdLS0i44d6g+b/9enLF8+XL5+flp0KBBvi2wCfF2Lo4ePaqxY8cqJiZGwcHBuvzyy/l3qpZ4Oxdz587VFVdcodDQUMXGxuqhhx7SqVOn6qhayxhU2/Lly01QUJD561//ar744gtzzz33mIiICFNUVFRp/w0bNpiAgAAze/Zsk5eXZ6ZOnWqaNWtmdu7cWceV28fbubjjjjvMvHnzzPbt201+fr4ZNWqUCQ8PN/v376/jyu3j7VycsWfPHtO+fXvzq1/9ytx88811U6zlvJ2LkpISk5ycbK6//nrzySefmD179ph//OMfZseOHXVcuX28nYulS5ea4OBgs3TpUrNnzx7z4YcfmpiYGPPQQw/VceV2INx4oXfv3mbs2LHu5xUVFaZdu3Zm5syZlfa/7bbbzA033ODRlpKSYu69916f1tkUeDsXZysvLzctWrQwS5Ys8VWJTUZN5qK8vNz07dvXvPzyy2bkyJGEm1ri7VwsWLDAdO7c2ZSWltZViU2Gt3MxduxYM2DAAI+2zMxM069fP5/WaStOS1VTaWmpcnNzlZaW5m7z9/dXWlqacnJyKl0nJyfHo78kpaenn7c/qqcmc3G2EydOqKysTK1atfJVmU1CTefi8ccfV9u2bTV69Oi6KLNJqMlcvPfee0pNTdXYsWMVFRWlbt266amnnlJFRUVdlW2lmsxF3759lZub6z519e2332r16tW6/vrr66Rm2zTJH86sicOHD6uiokJRUVEe7VFRUfryyy8rXcfhcFTa3+Fw+KzOpqAmc3G2SZMmqV27dueET3inJnPxySef6C9/+Yt27NhRBxU2HTWZi2+//Vbr1q3TsGHDtHr1an399dd64IEHVFZWpqysrLoo20o1mYs77rhDhw8f1i9/+UsZY1ReXq777rtPjz76aF2UbB2O3KDJmTVrlpYvX6533nlHISEh9V1Ok3Ls2DENHz5cL730klq3bl3f5TR5LpdLbdu21aJFi5SUlKQhQ4boscce08KFC+u7tCbnH//4h5566inNnz9f27Zt09tvv60PPvhATzzxRH2X1ihx5KaaWrdurYCAABUVFXm0FxUVKTo6utJ1oqOjveqP6qnJXJwxZ84czZo1Sx999JF69OjhyzKbBG/n4ptvvtHevXt14403uttcLpckKTAwUAUFBbr00kt9W7SlavL3IiYmRs2aNVNAQIC7LTExUQ6HQ6WlpQoKCvJpzbaqyVxMmzZNw4cP15gxYyRJ3bt31/Hjx5WRkaHHHntM/v4ci/AGr1Y1BQUFKSkpSdnZ2e42l8ul7OxspaamVrpOamqqR39JWrt27Xn7o3pqMheSNHv2bD3xxBNas2aNkpOT66JU63k7FwkJCdq5c6d27Njhftx00036r//6L+3YsUOxsbF1Wb5VavL3ol+/fvr666/dAVOSvvrqK8XExBBsfoaazMWJEyfOCTBnQqfhJyC9V99XNDcmy5cvN8HBwWbx4sUmLy/PZGRkmIiICONwOIwxxgwfPtxMnjzZ3X/Dhg0mMDDQzJkzx+Tn55usrCy+Cl5LvJ2LWbNmmaCgIPPmm2+a//f//p/7cezYsfoagjW8nYuz8W2p2uPtXBQWFpoWLVqYcePGmYKCArNq1SrTtm1b88c//rG+hmANb+ciKyvLtGjRwrz++uvm22+/NX//+9/NpZdeam677bb6GkKjRrjx0gsvvGDi4uJMUFCQ6d27t9m4caN7Wf/+/c3IkSM9+r/xxhvm8ssvN0FBQaZr167mgw8+qOOK7eXNXHTo0MFIOueRlZVV94VbyNu/F/+JcFO7vJ2LTz/91KSkpJjg4GDTuXNn8+STT5ry8vI6rtpO3sxFWVmZmTFjhrn00ktNSEiIiY2NNQ888IA5cuRI3RduAT9jON4FAADswTU3AADAKoQbAABgFcINAACwCuEGAABYhXADAACsQrgBAABWIdwAAACrEG4AAIBVCDcAAMAqhBsAAGAVwg0AALAK4QYAAFjl/wPft9PcDuiB0QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -503,7 +503,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 10, "id": "c70dfd4b", "metadata": {}, "outputs": [ @@ -554,7 +554,7 @@ ], "metadata": { "kernelspec": { - "display_name": "pina", + "display_name": "deep", "language": "python", "name": "python3" }, @@ -568,7 +568,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.21" + "version": "3.12.11" } }, "nbformat": 4, diff --git a/tutorials/tutorial21/tutorial.ipynb b/tutorials/tutorial21/tutorial.ipynb index 69a5f1b..04acab3 100644 --- a/tutorials/tutorial21/tutorial.ipynb +++ b/tutorials/tutorial21/tutorial.ipynb @@ -6,7 +6,7 @@ "id": "6f71ca5c", "metadata": {}, "source": [ - "# Tutorial: Introductory Tutorial: Supervised Learning with PINA\n", + "# Tutorial: Introductory Tutorial: Neural Operator Learning with PINA\n", "\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/mathLab/PINA/blob/master/tutorials/tutorial21/tutorial.ipynb)\n", "\n",