From 241d7fa262c25d5c7c1ba5dc9de3d1a6fa60dcd6 Mon Sep 17 00:00:00 2001 From: ASEM000 Date: Tue, 12 Sep 2023 14:01:22 +0900 Subject: [PATCH] Update train_mnist.ipynb --- docs/notebooks/train_mnist.ipynb | 156 ++++++++++++------------------- 1 file changed, 58 insertions(+), 98 deletions(-) diff --git a/docs/notebooks/train_mnist.ipynb b/docs/notebooks/train_mnist.ipynb index 5f36e33..85e0f06 100644 --- a/docs/notebooks/train_mnist.ipynb +++ b/docs/notebooks/train_mnist.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -28,67 +28,7 @@ "id": "HL0vQXylZmcw", "outputId": "b380b72a-649c-4897-a482-f260f63a6809" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "chex 0.1.82 requires jax>=0.4.6, which is not installed.\n", - "chex 0.1.82 requires toolz>=0.9.0, which is not installed.\n", - "distrax 0.1.2 requires jax>=0.1.55, which is not installed.\n", - "jaxpruner 0.1 requires jax, which is not installed.\n", - "ml-collections 0.1.1 requires PyYAML, which is not installed.\n", - "optax 0.1.7 requires jax>=0.1.55, which is not installed.\n", - "orbax 0.1.7 requires jax>=0.4.6, which is not installed.\n", - "orbax 0.1.7 requires pyyaml, which is not installed.\n", - "orbax-checkpoint 0.3.5 requires jax>=0.4.9, which is not installed.\n", - "orbax-checkpoint 0.3.5 requires pyyaml, which is not installed.\n", - "pdebench 0.1.0 requires scipy, which is not installed.\n", - "qax 0.1.1 requires jax<0.5.0,>=0.4.10, which is not installed.\n", - "tensorboard 2.12.3 requires markdown>=2.6.8, which is not installed.\n", - "tensorflow-datasets 4.8.3 requires termcolor, which is not installed.\n", - "tensorflow-datasets 4.8.3 requires wrapt, which is not installed.\n", - "tensorflow-macos 2.12.0 requires astunparse>=1.6.0, which is not installed.\n", - "tensorflow-macos 2.12.0 requires flatbuffers>=2.0, which is not installed.\n", - "tensorflow-macos 2.12.0 requires gast<=0.4.0,>=0.2.1, which is not installed.\n", - "tensorflow-macos 2.12.0 requires google-pasta>=0.1.1, which is not installed.\n", - "tensorflow-macos 2.12.0 requires jax>=0.3.15, which is not installed.\n", - "tensorflow-macos 2.12.0 requires opt-einsum>=2.3.2, which is not installed.\n", - "tensorflow-macos 2.12.0 requires termcolor>=1.1.0, which is not installed.\n", - "tensorflow-macos 2.12.0 requires wrapt<1.15,>=1.11.0, which is not installed.\n", - "tensorflow-probability 0.19.0 requires cloudpickle>=1.3, which is not installed.\n", - "tensorflow-probability 0.19.0 requires gast>=0.3.2, which is not installed.\n", - "tf2jax 0.3.5 requires jax>=0.3.14, which is not installed.\n", - "treex 0.6.10 requires PyYAML<7.0,>=6.0, which is not installed.\n", - "zodiax 0.4.1 requires jax, which is not installed.\n", - "haliax 1.0.1 requires equinox~=0.9.0, but you have equinox 0.10.9 which is incompatible.\n", - "tensorflow-macos 2.12.0 requires numpy<1.24,>=1.22, but you have numpy 1.25.2 which is incompatible.\n", - "tensorflow-metadata 1.12.0 requires protobuf<4,>=3.13, but you have protobuf 4.24.2 which is incompatible.\n", - "treex 0.6.10 requires flax<0.5.0,>=0.4.0, but you have flax 0.7.0 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0m\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "chex 0.1.82 requires toolz>=0.9.0, which is not installed.\n", - "flax 0.7.0 requires PyYAML>=5.4.1, which is not installed.\n", - "orbax 0.1.7 requires pyyaml, which is not installed.\n", - "orbax-checkpoint 0.3.5 requires pyyaml, which is not installed.\n", - "tensorflow-macos 2.12.0 requires astunparse>=1.6.0, which is not installed.\n", - "tensorflow-macos 2.12.0 requires flatbuffers>=2.0, which is not installed.\n", - "tensorflow-macos 2.12.0 requires gast<=0.4.0,>=0.2.1, which is not installed.\n", - "tensorflow-macos 2.12.0 requires google-pasta>=0.1.1, which is not installed.\n", - "tensorflow-macos 2.12.0 requires termcolor>=1.1.0, which is not installed.\n", - "tensorflow-macos 2.12.0 requires wrapt<1.15,>=1.11.0, which is not installed.\n", - "treex 0.6.10 requires PyYAML<7.0,>=6.0, which is not installed.\n", - "haliax 1.0.1 requires equinox~=0.9.0, but you have equinox 0.10.9 which is incompatible.\n", - "tensorflow-macos 2.12.0 requires numpy<1.24,>=1.22, but you have numpy 1.25.2 which is incompatible.\n", - "treex 0.6.10 requires flax<0.5.0,>=0.4.0, but you have flax 0.7.0 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0m\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "treex 0.6.10 requires PyYAML<7.0,>=6.0, which is not installed.\n", - "haliax 1.0.1 requires equinox~=0.9.0, but you have equinox 0.10.9 which is incompatible.\n", - "treex 0.6.10 requires flax<0.5.0,>=0.4.0, but you have flax 0.7.0 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0m" - ] - } - ], + "outputs": [], "source": [ "!pip install keras-core --quiet\n", "!pip install git+https://github.com/ASEM000/serket --quiet\n", @@ -112,33 +52,6 @@ "text": [ "Using JAX backend.\n" ] - }, - { - "ename": "ImportError", - "evalue": "This version of jax requires jaxlib version >= 0.4.11.", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/jax/_src/lib/__init__.py:34\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m---> 34\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mjaxlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mversion\u001b[39;00m\n\u001b[1;32m 35\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m err:\n\u001b[1;32m 36\u001b[0m \u001b[39m# jaxlib is too old to have version number.\u001b[39;00m\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'jaxlib.version'", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m/Users/asem/serket/docs/notebooks/train_mnist.ipynb Cell 4\u001b[0m line \u001b[0;36m4\n\u001b[1;32m 1\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mos\u001b[39;00m\n\u001b[1;32m 3\u001b[0m os\u001b[39m.\u001b[39menviron[\u001b[39m\"\u001b[39m\u001b[39mKERAS_BACKEND\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mjax\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m----> 4\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdatasets\u001b[39;00m \u001b[39mimport\u001b[39;00m mnist \u001b[39m# for mnist only\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mjax\u001b[39;00m\n\u001b[1;32m 6\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mjax\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mnumpy\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mjnp\u001b[39;00m\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/keras_core/__init__.py:8\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39m\"\"\"DO NOT EDIT.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \n\u001b[1;32m 3\u001b[0m \u001b[39mThis file was autogenerated. Do not edit it by hand,\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[39msince your modifications would be overwritten.\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m----> 8\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m \u001b[39mimport\u001b[39;00m activations\n\u001b[1;32m 9\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m \u001b[39mimport\u001b[39;00m applications\n\u001b[1;32m 10\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m \u001b[39mimport\u001b[39;00m backend\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/keras_core/activations/__init__.py:8\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39m\"\"\"DO NOT EDIT.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \n\u001b[1;32m 3\u001b[0m \u001b[39mThis file was autogenerated. Do not edit it by hand,\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[39msince your modifications would be overwritten.\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m----> 8\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mactivations\u001b[39;00m \u001b[39mimport\u001b[39;00m deserialize\n\u001b[1;32m 9\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mactivations\u001b[39;00m \u001b[39mimport\u001b[39;00m get\n\u001b[1;32m 10\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mactivations\u001b[39;00m \u001b[39mimport\u001b[39;00m serialize\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/keras_core/src/__init__.py:1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m \u001b[39mimport\u001b[39;00m activations\n\u001b[1;32m 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m \u001b[39mimport\u001b[39;00m applications\n\u001b[1;32m 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m \u001b[39mimport\u001b[39;00m backend\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/keras_core/src/activations/__init__.py:3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mtypes\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mactivations\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mactivations\u001b[39;00m \u001b[39mimport\u001b[39;00m elu\n\u001b[1;32m 4\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mactivations\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mactivations\u001b[39;00m \u001b[39mimport\u001b[39;00m exponential\n\u001b[1;32m 5\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mactivations\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mactivations\u001b[39;00m \u001b[39mimport\u001b[39;00m gelu\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/keras_core/src/activations/activations.py:1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m \u001b[39mimport\u001b[39;00m backend\n\u001b[1;32m 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m \u001b[39mimport\u001b[39;00m ops\n\u001b[1;32m 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mapi_export\u001b[39;00m \u001b[39mimport\u001b[39;00m keras_core_export\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/keras_core/src/backend/__init__.py:36\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[39melif\u001b[39;00m backend() \u001b[39m==\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mjax\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[1;32m 35\u001b[0m print_msg(\u001b[39m\"\u001b[39m\u001b[39mUsing JAX backend.\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m---> 36\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mbackend\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mjax\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m \u001b[39m# noqa: F403\u001b[39;00m\n\u001b[1;32m 37\u001b[0m \u001b[39melif\u001b[39;00m backend() \u001b[39m==\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mtorch\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[1;32m 38\u001b[0m print_msg(\u001b[39m\"\u001b[39m\u001b[39mUsing PyTorch backend.\u001b[39m\u001b[39m\"\u001b[39m)\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/keras_core/src/backend/jax/__init__.py:1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mbackend\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mjax\u001b[39;00m \u001b[39mimport\u001b[39;00m core\n\u001b[1;32m 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mbackend\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mjax\u001b[39;00m \u001b[39mimport\u001b[39;00m image\n\u001b[1;32m 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mkeras_core\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msrc\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mbackend\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mjax\u001b[39;00m \u001b[39mimport\u001b[39;00m math\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/keras_core/src/backend/jax/core.py:1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mjax\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mjax\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mnumpy\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mjnp\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mnumpy\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mnp\u001b[39;00m\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/jax/__init__.py:35\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[39mdel\u001b[39;00m _cloud_tpu_init\n\u001b[1;32m 32\u001b[0m \u001b[39m# Confusingly there are two things named \"config\": the module and the class.\u001b[39;00m\n\u001b[1;32m 33\u001b[0m \u001b[39m# We want the exported object to be the class, so we first import the module\u001b[39;00m\n\u001b[1;32m 34\u001b[0m \u001b[39m# to make sure a later import doesn't overwrite the class.\u001b[39;00m\n\u001b[0;32m---> 35\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mjax\u001b[39;00m \u001b[39mimport\u001b[39;00m config \u001b[39mas\u001b[39;00m _config_module\n\u001b[1;32m 36\u001b[0m \u001b[39mdel\u001b[39;00m _config_module\n\u001b[1;32m 38\u001b[0m \u001b[39m# Force early import, allowing use of `jax.core` after importing `jax`.\u001b[39;00m\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/jax/config.py:17\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39m# Copyright 2018 The JAX Authors.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[39m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[39m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 14\u001b[0m \n\u001b[1;32m 15\u001b[0m \u001b[39m# TODO(phawkins): fix users of this alias and delete this file.\u001b[39;00m\n\u001b[0;32m---> 17\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mjax\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39m_src\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mconfig\u001b[39;00m \u001b[39mimport\u001b[39;00m config\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/jax/_src/config.py:27\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mthreading\u001b[39;00m\n\u001b[1;32m 25\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mtyping\u001b[39;00m \u001b[39mimport\u001b[39;00m Any, Callable, Generic, NamedTuple, Optional, TypeVar\n\u001b[0;32m---> 27\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mjax\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39m_src\u001b[39;00m \u001b[39mimport\u001b[39;00m lib\n\u001b[1;32m 28\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mjax\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39m_src\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mlib\u001b[39;00m \u001b[39mimport\u001b[39;00m jax_jit\n\u001b[1;32m 29\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mjax\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39m_src\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mlib\u001b[39;00m \u001b[39mimport\u001b[39;00m transfer_guard_lib\n", - "File \u001b[0;32m~/miniforge3/envs/dev-jax/lib/python3.10/site-packages/jax/_src/lib/__init__.py:38\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m err:\n\u001b[1;32m 36\u001b[0m \u001b[39m# jaxlib is too old to have version number.\u001b[39;00m\n\u001b[1;32m 37\u001b[0m msg \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39mThis version of jax requires jaxlib version >= \u001b[39m\u001b[39m{\u001b[39;00m_minimum_jaxlib_version_str\u001b[39m}\u001b[39;00m\u001b[39m.\u001b[39m\u001b[39m'\u001b[39m\n\u001b[0;32m---> 38\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mImportError\u001b[39;00m(msg) \u001b[39mfrom\u001b[39;00m \u001b[39merr\u001b[39;00m\n\u001b[1;32m 41\u001b[0m \u001b[39m# Checks the jaxlib version before importing anything else from jaxlib.\u001b[39;00m\n\u001b[1;32m 42\u001b[0m \u001b[39m# Returns the jaxlib version string.\u001b[39;00m\n\u001b[1;32m 43\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mcheck_jaxlib_version\u001b[39m(jax_version: \u001b[39mstr\u001b[39m, jaxlib_version: \u001b[39mstr\u001b[39m,\n\u001b[1;32m 44\u001b[0m minimum_jaxlib_version: \u001b[39mstr\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mtuple\u001b[39m[\u001b[39mint\u001b[39m, \u001b[39m.\u001b[39m\u001b[39m.\u001b[39m\u001b[39m.\u001b[39m]:\n\u001b[1;32m 45\u001b[0m \u001b[39m# Regex to match a dotted version prefix 0.1.23.456.789 of a PEP440 version.\u001b[39;00m\n\u001b[1;32m 46\u001b[0m \u001b[39m# PEP440 allows a number of non-numeric suffixes, which we allow also.\u001b[39;00m\n\u001b[1;32m 47\u001b[0m \u001b[39m# We currently do not allow an epoch.\u001b[39;00m\n", - "\u001b[0;31mImportError\u001b[0m: This version of jax requires jaxlib version >= 0.4.11." - ] } ], "source": [ @@ -170,7 +83,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "id": "foBqrS8VZkGF" }, @@ -196,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "id": "FZxrY-foZkGG" }, @@ -227,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "id": "aEB4UzU7ZkGH" }, @@ -266,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -274,7 +187,36 @@ "id": "8kZMEgaYZkGI", "outputId": "421dbebf-2a53-45f5-95d4-b6926c1ed5a8" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "depth=0\n", + "┌────┬───────┬──────┬────────┐\n", + "│Name│Type │Count │Size │\n", + "├────┼───────┼──────┼────────┤\n", + "│Σ │ConvNet│34,866│136.04KB│\n", + "└────┴───────┴──────┴────────┘\n", + "depth=1\n", + "┌───────┬─────────┬──────┬────────┐\n", + "│Name │Type │Count │Size │\n", + "├───────┼─────────┼──────┼────────┤\n", + "│.conv1 │Conv2D │332 │1.25KB │\n", + "├───────┼─────────┼──────┼────────┤\n", + "│.pool1 │MaxPool2D│6 │ │\n", + "├───────┼─────────┼──────┼────────┤\n", + "│.conv2 │Conv2D │18,508│72.25KB │\n", + "├───────┼─────────┼──────┼────────┤\n", + "│.pool2 │MaxPool2D│6 │ │\n", + "├───────┼─────────┼──────┼────────┤\n", + "│.linear│Linear │16,014│62.54KB │\n", + "├───────┼─────────┼──────┼────────┤\n", + "│Σ │ConvNet │34,866│136.04KB│\n", + "└───────┴─────────┴──────┴────────┘\n" + ] + } + ], "source": [ "print(\"depth=0\")\n", "print(sk.tree_summary(nn, depth=0))\n", @@ -293,7 +235,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "id": "9X_xMaWEZkGJ" }, @@ -363,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -372,7 +314,25 @@ "id": "9Qr1nuU8ZkGJ", "outputId": "2449b463-3003-4a15-b101-68909dd5598f" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch: 001/001\tBatch: 468/468\tBatch loss: 1.916139e-01\tBatch accuracy: 0.984375\tTime: 17.207\r" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "for i in range(1, EPOCHS + 1):\n", " t0 = time.time()\n", @@ -427,7 +387,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.0" + "version": "3.11.0" }, "orig_nbformat": 4 },