From 991473d3e42eb64a9ec5a7fc44a6733d1bd1db70 Mon Sep 17 00:00:00 2001 From: James Liu <37026441+zijianjoy@users.noreply.github.com> Date: Mon, 11 Oct 2021 13:50:43 -0700 Subject: [PATCH] chore(sample): upgrade katib and kfp sdk versions in e2e mnist tutorial (#6712) --- .../kubeflow-e2e-mnist.ipynb | 228 ++---------------- 1 file changed, 14 insertions(+), 214 deletions(-) diff --git a/samples/contrib/kubeflow-e2e-mnist/kubeflow-e2e-mnist.ipynb b/samples/contrib/kubeflow-e2e-mnist/kubeflow-e2e-mnist.ipynb index c93ee77af14..445eb3b5f14 100644 --- a/samples/contrib/kubeflow-e2e-mnist/kubeflow-e2e-mnist.ipynb +++ b/samples/contrib/kubeflow-e2e-mnist/kubeflow-e2e-mnist.ipynb @@ -64,149 +64,18 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting kfp==1.6.5\n", - " Downloading kfp-1.6.5.tar.gz (228 kB)\n", - "\u001b[K |████████████████████████████████| 228 kB 20.3 MB/s eta 0:00:01\n", - "\u001b[?25hCollecting absl-py<=0.11,>=0.9\n", - " Downloading absl_py-0.11.0-py3-none-any.whl (127 kB)\n", - "\u001b[K |████████████████████████████████| 127 kB 49.9 MB/s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: PyYAML<6,>=5.3 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (5.4.1)\n", - "Requirement already satisfied: google-cloud-storage<2,>=1.20.0 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (1.37.0)\n", - "Requirement already satisfied: kubernetes<13,>=8.0.0 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (10.0.1)\n", - "Collecting google-api-python-client<2,>=1.7.8\n", - " Downloading google_api_python_client-1.12.8-py2.py3-none-any.whl (61 kB)\n", - "\u001b[K |████████████████████████████████| 61 kB 35 kB/s s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: google-auth<2,>=1.6.1 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (1.28.0)\n", - "Requirement already satisfied: requests-toolbelt<1,>=0.8.0 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (0.9.1)\n", - "Requirement already satisfied: cloudpickle<2,>=1.3.0 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (1.6.0)\n", - "Collecting kfp-server-api<2.0.0,>=1.1.2\n", - " Downloading kfp-server-api-1.6.0.tar.gz (52 kB)\n", - "\u001b[K |████████████████████████████████| 52 kB 1.7 MB/s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: jsonschema<4,>=3.0.1 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (3.2.0)\n", - "Requirement already satisfied: tabulate<1,>=0.8.6 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (0.8.9)\n", - "Requirement already satisfied: click<8,>=7.1.1 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (7.1.2)\n", - "Requirement already satisfied: Deprecated<2,>=1.2.7 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (1.2.12)\n", - "Requirement already satisfied: strip-hints<1,>=0.1.8 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (0.1.9)\n", - "Collecting docstring-parser<1,>=0.7.3\n", - " Downloading docstring_parser-0.8.1.tar.gz (14 kB)\n", - " Installing build dependencies ... \u001b[?25ldone\n", - "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", - "\u001b[?25h Preparing wheel metadata ... \u001b[?25ldone\n", - "\u001b[?25hCollecting kfp-pipeline-spec<0.2.0,>=0.1.8\n", - " Downloading kfp_pipeline_spec-0.1.8-py3-none-any.whl (27 kB)\n", - "Collecting fire<1,>=0.3.1\n", - " Downloading fire-0.4.0.tar.gz (87 kB)\n", - "\u001b[K |████████████████████████████████| 87 kB 7.4 MB/s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: protobuf<4,>=3.13.0 in /opt/conda/lib/python3.8/site-packages (from kfp==1.6.5) (3.15.6)\n", - "Requirement already satisfied: six in /opt/conda/lib/python3.8/site-packages (from absl-py<=0.11,>=0.9->kfp==1.6.5) (1.15.0)\n", - "Requirement already satisfied: wrapt<2,>=1.10 in /opt/conda/lib/python3.8/site-packages (from Deprecated<2,>=1.2.7->kfp==1.6.5) (1.12.1)\n", - "Collecting termcolor\n", - " Downloading termcolor-1.1.0.tar.gz (3.9 kB)\n", - "Collecting httplib2<1dev,>=0.15.0\n", - " Downloading httplib2-0.19.1-py3-none-any.whl (95 kB)\n", - "\u001b[K |████████████████████████████████| 95 kB 4.8 MB/s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: google-api-core<2dev,>=1.21.0 in /opt/conda/lib/python3.8/site-packages (from google-api-python-client<2,>=1.7.8->kfp==1.6.5) (1.26.2)\n", - "Collecting uritemplate<4dev,>=3.0.0\n", - " Downloading uritemplate-3.0.1-py2.py3-none-any.whl (15 kB)\n", - "Collecting google-auth-httplib2>=0.0.3\n", - " Downloading google_auth_httplib2-0.1.0-py2.py3-none-any.whl (9.3 kB)\n", - "Requirement already satisfied: pytz in /opt/conda/lib/python3.8/site-packages (from google-api-core<2dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.6.5) (2021.1)\n", - "Requirement already satisfied: googleapis-common-protos<2.0dev,>=1.6.0 in /opt/conda/lib/python3.8/site-packages (from google-api-core<2dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.6.5) (1.53.0)\n", - "Requirement already satisfied: requests<3.0.0dev,>=2.18.0 in /opt/conda/lib/python3.8/site-packages (from google-api-core<2dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.6.5) (2.25.1)\n", - "Requirement already satisfied: packaging>=14.3 in /opt/conda/lib/python3.8/site-packages (from google-api-core<2dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.6.5) (20.9)\n", - "Requirement already satisfied: setuptools>=40.3.0 in /opt/conda/lib/python3.8/site-packages (from google-api-core<2dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.6.5) (49.6.0.post20210108)\n", - "Requirement already satisfied: rsa<5,>=3.1.4 in /opt/conda/lib/python3.8/site-packages (from google-auth<2,>=1.6.1->kfp==1.6.5) (4.7.2)\n", - "Requirement already satisfied: pyasn1-modules>=0.2.1 in /opt/conda/lib/python3.8/site-packages (from google-auth<2,>=1.6.1->kfp==1.6.5) (0.2.8)\n", - "Requirement already satisfied: cachetools<5.0,>=2.0.0 in /opt/conda/lib/python3.8/site-packages (from google-auth<2,>=1.6.1->kfp==1.6.5) (4.2.1)\n", - "Requirement already satisfied: google-cloud-core<2.0dev,>=1.4.1 in /opt/conda/lib/python3.8/site-packages (from google-cloud-storage<2,>=1.20.0->kfp==1.6.5) (1.6.0)\n", - "Requirement already satisfied: google-resumable-media<2.0dev,>=1.2.0 in /opt/conda/lib/python3.8/site-packages (from google-cloud-storage<2,>=1.20.0->kfp==1.6.5) (1.2.0)\n", - "Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /opt/conda/lib/python3.8/site-packages (from google-resumable-media<2.0dev,>=1.2.0->google-cloud-storage<2,>=1.20.0->kfp==1.6.5) (1.1.2)\n", - "Requirement already satisfied: cffi>=1.0.0 in /opt/conda/lib/python3.8/site-packages (from google-crc32c<2.0dev,>=1.0->google-resumable-media<2.0dev,>=1.2.0->google-cloud-storage<2,>=1.20.0->kfp==1.6.5) (1.14.5)\n", - "Requirement already satisfied: pycparser in /opt/conda/lib/python3.8/site-packages (from cffi>=1.0.0->google-crc32c<2.0dev,>=1.0->google-resumable-media<2.0dev,>=1.2.0->google-cloud-storage<2,>=1.20.0->kfp==1.6.5) (2.20)\n", - "Requirement already satisfied: pyparsing<3,>=2.4.2 in /opt/conda/lib/python3.8/site-packages (from httplib2<1dev,>=0.15.0->google-api-python-client<2,>=1.7.8->kfp==1.6.5) (2.4.7)\n", - "Requirement already satisfied: attrs>=17.4.0 in /opt/conda/lib/python3.8/site-packages (from jsonschema<4,>=3.0.1->kfp==1.6.5) (20.3.0)\n", - "Requirement already satisfied: pyrsistent>=0.14.0 in /opt/conda/lib/python3.8/site-packages (from jsonschema<4,>=3.0.1->kfp==1.6.5) (0.17.3)\n", - "Requirement already satisfied: urllib3>=1.15 in /opt/conda/lib/python3.8/site-packages (from kfp-server-api<2.0.0,>=1.1.2->kfp==1.6.5) (1.26.4)\n", - "Requirement already satisfied: certifi in /opt/conda/lib/python3.8/site-packages (from kfp-server-api<2.0.0,>=1.1.2->kfp==1.6.5) (2020.12.5)\n", - "Requirement already satisfied: python-dateutil in /opt/conda/lib/python3.8/site-packages (from kfp-server-api<2.0.0,>=1.1.2->kfp==1.6.5) (2.8.1)\n", - "Requirement already satisfied: websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 in /opt/conda/lib/python3.8/site-packages (from kubernetes<13,>=8.0.0->kfp==1.6.5) (0.58.0)\n", - "Requirement already satisfied: requests-oauthlib in /opt/conda/lib/python3.8/site-packages (from kubernetes<13,>=8.0.0->kfp==1.6.5) (1.3.0)\n", - "Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /opt/conda/lib/python3.8/site-packages (from pyasn1-modules>=0.2.1->google-auth<2,>=1.6.1->kfp==1.6.5) (0.4.8)\n", - "Requirement already satisfied: idna<3,>=2.5 in /opt/conda/lib/python3.8/site-packages (from requests<3.0.0dev,>=2.18.0->google-api-core<2dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.6.5) (2.10)\n", - "Requirement already satisfied: chardet<5,>=3.0.2 in /opt/conda/lib/python3.8/site-packages (from requests<3.0.0dev,>=2.18.0->google-api-core<2dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.6.5) (4.0.0)\n", - "Requirement already satisfied: wheel in /opt/conda/lib/python3.8/site-packages (from strip-hints<1,>=0.1.8->kfp==1.6.5) (0.36.2)\n", - "Requirement already satisfied: oauthlib>=3.0.0 in /opt/conda/lib/python3.8/site-packages (from requests-oauthlib->kubernetes<13,>=8.0.0->kfp==1.6.5) (3.1.0)\n", - "Building wheels for collected packages: kfp, docstring-parser, fire, kfp-server-api, termcolor\n", - " Building wheel for kfp (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for kfp: filename=kfp-1.6.5-py3-none-any.whl size=312220 sha256=c226b898b75959310ee631a846acd207e7a3c43488313d9817937e116140dc8b\n", - " Stored in directory: /home/jovyan/.cache/pip/wheels/46/11/60/ad2982917004eb2f8f0f5f1b14af0a257c41ee471bc5a7792b\n", - " Building wheel for docstring-parser (PEP 517) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for docstring-parser: filename=docstring_parser-0.8.1-py3-none-any.whl size=19678 sha256=224832c23cf0ad3f0765bc55d3e6f9a35f0935d2de331bb89f3e6a52fb63e977\n", - " Stored in directory: /home/jovyan/.cache/pip/wheels/7a/06/c4/9b2f0146899e8d1e7748897e42ad5412b6a025513f89cc4a0f\n", - " Building wheel for fire (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for fire: filename=fire-0.4.0-py2.py3-none-any.whl size=115928 sha256=9f3cb185ad0e65b8f45dc421a006b6c3ad4edec051dad4830c6f45ff4910e856\n", - " Stored in directory: /home/jovyan/.cache/pip/wheels/1f/10/06/2a990ee4d73a8479fe2922445e8a876d38cfbfed052284c6a1\n", - " Building wheel for kfp-server-api (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for kfp-server-api: filename=kfp_server_api-1.6.0-py3-none-any.whl size=92524 sha256=71c00b683be60d0726068c9ac49802ebf009cd47ba401dec46987f7a7007625d\n", - " Stored in directory: /home/jovyan/.cache/pip/wheels/73/72/bd/804c3bcea41a99dc328a623d003ba9d7d243f2a59a767ef28c\n", - " Building wheel for termcolor (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for termcolor: filename=termcolor-1.1.0-py3-none-any.whl size=4829 sha256=7a7193d4c831dd572cbe03f52978412ab46ebb07bf7d0e5eb1426edaf04d9bbe\n", - " Stored in directory: /home/jovyan/.cache/pip/wheels/a0/16/9c/5473df82468f958445479c59e784896fa24f4a5fc024b0f501\n", - "Successfully built kfp docstring-parser fire kfp-server-api termcolor\n", - "Installing collected packages: httplib2, uritemplate, termcolor, google-auth-httplib2, kfp-server-api, kfp-pipeline-spec, google-api-python-client, fire, docstring-parser, absl-py, kfp\n", - " Attempting uninstall: kfp-server-api\n", - " Found existing installation: kfp-server-api 1.0.4\n", - " Uninstalling kfp-server-api-1.0.4:\n", - " Successfully uninstalled kfp-server-api-1.0.4\n", - " Attempting uninstall: kfp\n", - " Found existing installation: kfp 1.0.4\n", - " Uninstalling kfp-1.0.4:\n", - " Successfully uninstalled kfp-1.0.4\n", - "Successfully installed absl-py-0.11.0 docstring-parser-0.8.1 fire-0.4.0 google-api-python-client-1.12.8 google-auth-httplib2-0.1.0 httplib2-0.19.1 kfp-1.6.5 kfp-pipeline-spec-0.1.8 kfp-server-api-1.6.0 termcolor-1.1.0 uritemplate-3.0.1\n", - "Collecting kubeflow-katib==0.10.1\n", - " Downloading kubeflow_katib-0.10.1-py3-none-any.whl (113 kB)\n", - "\u001b[K |████████████████████████████████| 113 kB 23.0 MB/s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: python-dateutil>=2.5.3 in /opt/conda/lib/python3.8/site-packages (from kubeflow-katib==0.10.1) (2.8.1)\n", - "Requirement already satisfied: certifi>=14.05.14 in /opt/conda/lib/python3.8/site-packages (from kubeflow-katib==0.10.1) (2020.12.5)\n", - "Requirement already satisfied: urllib3>=1.15.1 in /opt/conda/lib/python3.8/site-packages (from kubeflow-katib==0.10.1) (1.26.4)\n", - "Requirement already satisfied: table-logger>=0.3.5 in /opt/conda/lib/python3.8/site-packages (from kubeflow-katib==0.10.1) (0.3.6)\n", - "Requirement already satisfied: setuptools>=21.0.0 in /opt/conda/lib/python3.8/site-packages (from kubeflow-katib==0.10.1) (49.6.0.post20210108)\n", - "Requirement already satisfied: kubernetes==10.0.1 in /opt/conda/lib/python3.8/site-packages (from kubeflow-katib==0.10.1) (10.0.1)\n", - "Requirement already satisfied: six>=1.10 in /opt/conda/lib/python3.8/site-packages (from kubeflow-katib==0.10.1) (1.15.0)\n", - "Requirement already satisfied: requests in /opt/conda/lib/python3.8/site-packages (from kubernetes==10.0.1->kubeflow-katib==0.10.1) (2.25.1)\n", - "Requirement already satisfied: google-auth>=1.0.1 in /opt/conda/lib/python3.8/site-packages (from kubernetes==10.0.1->kubeflow-katib==0.10.1) (1.28.0)\n", - "Requirement already satisfied: requests-oauthlib in /opt/conda/lib/python3.8/site-packages (from kubernetes==10.0.1->kubeflow-katib==0.10.1) (1.3.0)\n", - "Requirement already satisfied: websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 in /opt/conda/lib/python3.8/site-packages (from kubernetes==10.0.1->kubeflow-katib==0.10.1) (0.58.0)\n", - "Requirement already satisfied: pyyaml>=3.12 in /opt/conda/lib/python3.8/site-packages (from kubernetes==10.0.1->kubeflow-katib==0.10.1) (5.4.1)\n", - "Requirement already satisfied: cachetools<5.0,>=2.0.0 in /opt/conda/lib/python3.8/site-packages (from google-auth>=1.0.1->kubernetes==10.0.1->kubeflow-katib==0.10.1) (4.2.1)\n", - "Requirement already satisfied: pyasn1-modules>=0.2.1 in /opt/conda/lib/python3.8/site-packages (from google-auth>=1.0.1->kubernetes==10.0.1->kubeflow-katib==0.10.1) (0.2.8)\n", - "Requirement already satisfied: rsa<5,>=3.1.4 in /opt/conda/lib/python3.8/site-packages (from google-auth>=1.0.1->kubernetes==10.0.1->kubeflow-katib==0.10.1) (4.7.2)\n", - "Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /opt/conda/lib/python3.8/site-packages (from pyasn1-modules>=0.2.1->google-auth>=1.0.1->kubernetes==10.0.1->kubeflow-katib==0.10.1) (0.4.8)\n", - "Requirement already satisfied: numpy in /opt/conda/lib/python3.8/site-packages (from table-logger>=0.3.5->kubeflow-katib==0.10.1) (1.20.1)\n", - "Requirement already satisfied: idna<3,>=2.5 in /opt/conda/lib/python3.8/site-packages (from requests->kubernetes==10.0.1->kubeflow-katib==0.10.1) (2.10)\n", - "Requirement already satisfied: chardet<5,>=3.0.2 in /opt/conda/lib/python3.8/site-packages (from requests->kubernetes==10.0.1->kubeflow-katib==0.10.1) (4.0.0)\n", - "Requirement already satisfied: oauthlib>=3.0.0 in /opt/conda/lib/python3.8/site-packages (from requests-oauthlib->kubernetes==10.0.1->kubeflow-katib==0.10.1) (3.1.0)\n", - "Installing collected packages: kubeflow-katib\n", - "Successfully installed kubeflow-katib-0.10.1\n" - ] - } - ], + "outputs": [], "source": [ "# Install required packages.\n", - "!pip install kfp==1.6.5\n", - "!pip install kubeflow-katib==0.10.1" + "!pip install kfp==1.8.4\n", + "!pip install kubeflow-katib==0.12.0" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -250,7 +119,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -413,7 +282,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -436,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -543,7 +412,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -580,41 +449,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "Experiment details." - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Run details." - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Run ID: 1e7baa50-047b-4e4a-adfe-af5c9085c003\n" - ] - } - ], + "outputs": [], "source": [ "name=\"mnist-e2e\"\n", "namespace=\"kubeflow-user-example-com\"\n", @@ -674,46 +511,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Run 1e7baa50-047b-4e4a-adfe-af5c9085c003 has been Succeeded\n", - "\n", - "http://mnist-e2e-predictor-default.kubeflow-user-example-com.svc.cluster.local/v1/models/mnist-e2e:predict\n", - "Prediction for the image\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - ":12: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n", - "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", - " data = np.array(image.convert('L').resize((28, 28))).astype(np.float).reshape(-1, 28, 28, 1)\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAAA1ElEQVR4nN3QPwtBYRQG8EMU0e0uZLIw+QKXRZlMGC0GX8CglE0pk0VxPwQmE5YrJYPVIjYMlImSwXNiMOi97319AM/6O6fzh+g/Y5hr5mrRNByseAZba4D7EnlSN8wy3uAYXJOwDEw0ohKwD9mtxehqRLQBCnZr8GPkJ/Ll79y0m37GiIjiK2AQsGMYiIbryyvjmZO20U9gAIcjTg43GhfethOROToO+En6xRUlZhnSjd+I6BY7xVIRY79w4XapR9IOSTWWYSWUqE0xlH771R7UrULefm5U2pxVCt0AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'predictions': [{'predictions': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], 'classes': 9}]}\n" - ] - } - ], + "outputs": [], "source": [ "import numpy as np\n", "from PIL import Image\n", @@ -763,7 +563,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.8" + "version": "3.8.10" } }, "nbformat": 4,