HTTP/2 200
content-type: application/octet-stream
x-guploader-uploadid: ABgVH88Js3gt8Wcq35YHpcOn0f7592D22B_wjo_S390h5QMnJuF6iiGCcJrrJ6DmQysIAB7J
expires: Fri, 18 Jul 2025 09:59:58 GMT
date: Fri, 18 Jul 2025 08:59:58 GMT
cache-control: public, max-age=3600
last-modified: Fri, 16 Aug 2024 09:16:04 GMT
etag: "e23747659d4d754d4f6705db53b915d1"
x-goog-generation: 1723799764271939
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 32407
x-goog-hash: crc32c=QZ4EPw==
x-goog-hash: md5=4jdHZZ1NdU1PZwXbU7kV0Q==
x-goog-storage-class: MULTI_REGIONAL
accept-ranges: bytes
content-length: 32407
server: UploadServer
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "rX8mhOLljYeM"
},
"source": [
"##### Copyright 2019 The TensorFlow Authors."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"cellView": "form",
"execution": {
"iopub.execute_input": "2024-08-16T07:43:02.603598Z",
"iopub.status.busy": "2024-08-16T07:43:02.602990Z",
"iopub.status.idle": "2024-08-16T07:43:02.606712Z",
"shell.execute_reply": "2024-08-16T07:43:02.606111Z"
},
"id": "BZSlp3DAjdYf"
},
"outputs": [],
"source": [
"#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n",
"# you may not use this file except in compliance with the License.\n",
"# You may obtain a copy of the License at\n",
"#\n",
"# https://www.apache.org/licenses/LICENSE-2.0\n",
"#\n",
"# Unless required by applicable law or agreed to in writing, software\n",
"# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
"# See the License for the specific language governing permissions and\n",
"# limitations under the License."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3wF5wszaj97Y"
},
"source": [
"# TensorFlow 2 quickstart for experts"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DUNzJc4jTj6G"
},
"source": [
"
"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hiH7AC-NTniF"
},
"source": [
"This is a [Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb) notebook file. Python programs are run directly in the browser—a great way to learn and use TensorFlow. To follow this tutorial, run the notebook in Google Colab by clicking the button at the top of this page.\n",
"\n",
"1. In Colab, connect to a Python runtime: At the top-right of the menu bar, select *CONNECT*.\n",
"2. Run all the notebook code cells: Select *Runtime* > *Run all*."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eOsVdx6GGHmU"
},
"source": [
"Download and install TensorFlow 2. Import TensorFlow into your program:\n",
"\n",
"Note: Upgrade `pip` to install the TensorFlow 2 package. See the [install guide](https://www.tensorflow.org/install) for details."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QS7DDTiZGRTo"
},
"source": [
"Import TensorFlow into your program:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"execution": {
"iopub.execute_input": "2024-08-16T07:43:02.610442Z",
"iopub.status.busy": "2024-08-16T07:43:02.609852Z",
"iopub.status.idle": "2024-08-16T07:43:04.976197Z",
"shell.execute_reply": "2024-08-16T07:43:04.975504Z"
},
"id": "0trJmd6DjqBZ"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2024-08-16 07:43:02.864173: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:485] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n",
"2024-08-16 07:43:02.885211: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:8454] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n",
"2024-08-16 07:43:02.891544: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1452] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"TensorFlow version: 2.17.0\n"
]
}
],
"source": [
"import tensorflow as tf\n",
"print(\"TensorFlow version:\", tf.__version__)\n",
"\n",
"from tensorflow.keras.layers import Dense, Flatten, Conv2D\n",
"from tensorflow.keras import Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7NAbSZiaoJ4z"
},
"source": [
"Load and prepare the [MNIST dataset](https://yann.lecun.com/exdb/mnist/)."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"execution": {
"iopub.execute_input": "2024-08-16T07:43:04.979959Z",
"iopub.status.busy": "2024-08-16T07:43:04.979580Z",
"iopub.status.idle": "2024-08-16T07:43:05.515192Z",
"shell.execute_reply": "2024-08-16T07:43:05.514070Z"
},
"id": "JqFRS6K07jJs"
},
"outputs": [],
"source": [
"mnist = tf.keras.datasets.mnist\n",
"\n",
"(x_train, y_train), (x_test, y_test) = mnist.load_data()\n",
"x_train, x_test = x_train / 255.0, x_test / 255.0\n",
"\n",
"# Add a channels dimension\n",
"x_train = x_train[..., tf.newaxis].astype(\"float32\")\n",
"x_test = x_test[..., tf.newaxis].astype(\"float32\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "k1Evqx0S22r_"
},
"source": [
"Use `tf.data` to batch and shuffle the dataset:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"execution": {
"iopub.execute_input": "2024-08-16T07:43:05.519488Z",
"iopub.status.busy": "2024-08-16T07:43:05.519198Z",
"iopub.status.idle": "2024-08-16T07:43:08.277716Z",
"shell.execute_reply": "2024-08-16T07:43:08.277041Z"
},
"id": "8Iu_quO024c2"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: All log messages before absl::InitializeLog() is called are written to STDERR\n",
"I0000 00:00:1723794186.132499 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.136373 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.140204 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.143882 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.155442 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.158909 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.162426 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.165885 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See mo"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"re at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.169294 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.172735 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.176233 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794186.179697 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.412918 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.414959 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.417021 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.419038 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.421049 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.422920 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.424877 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.426798 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.428696 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.430536 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.432494 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.434433 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.472591 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.474553 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.476547 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.478515 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.480455 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.482330 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.484298 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.486244 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.488180 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.490575 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.492979 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
"I0000 00:00:1723794187.495371 238456 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n"
]
}
],
"source": [
"train_ds = tf.data.Dataset.from_tensor_slices(\n",
" (x_train, y_train)).shuffle(10000).batch(32)\n",
"\n",
"test_ds = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BPZ68wASog_I"
},
"source": [
"Build the `tf.keras` model using the Keras [model subclassing API](https://www.tensorflow.org/guide/keras/custom_layers_and_models):"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2024-08-16T07:43:08.281825Z",
"iopub.status.busy": "2024-08-16T07:43:08.281311Z",
"iopub.status.idle": "2024-08-16T07:43:08.290186Z",
"shell.execute_reply": "2024-08-16T07:43:08.289604Z"
},
"id": "h3IKyzTCDNGo"
},
"outputs": [],
"source": [
"class MyModel(Model):\n",
" def __init__(self):\n",
" super().__init__()\n",
" self.conv1 = Conv2D(32, 3, activation='relu')\n",
" self.flatten = Flatten()\n",
" self.d1 = Dense(128, activation='relu')\n",
" self.d2 = Dense(10)\n",
"\n",
" def call(self, x):\n",
" x = self.conv1(x)\n",
" x = self.flatten(x)\n",
" x = self.d1(x)\n",
" return self.d2(x)\n",
"\n",
"# Create an instance of the model\n",
"model = MyModel()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "uGih-c2LgbJu"
},
"source": [
"Choose an optimizer and loss function for training:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"execution": {
"iopub.execute_input": "2024-08-16T07:43:08.293488Z",
"iopub.status.busy": "2024-08-16T07:43:08.293215Z",
"iopub.status.idle": "2024-08-16T07:43:08.301505Z",
"shell.execute_reply": "2024-08-16T07:43:08.300923Z"
},
"id": "u48C9WQ774n4"
},
"outputs": [],
"source": [
"loss_object = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)\n",
"\n",
"optimizer = tf.keras.optimizers.Adam()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JB6A1vcigsIe"
},
"source": [
"Select metrics to measure the loss and the accuracy of the model. These metrics accumulate the values over epochs and then print the overall result."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"execution": {
"iopub.execute_input": "2024-08-16T07:43:08.305046Z",
"iopub.status.busy": "2024-08-16T07:43:08.304670Z",
"iopub.status.idle": "2024-08-16T07:43:08.321673Z",
"shell.execute_reply": "2024-08-16T07:43:08.321088Z"
},
"id": "N0MqHFb4F_qn"
},
"outputs": [],
"source": [
"train_loss = tf.keras.metrics.Mean(name='train_loss')\n",
"train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='train_accuracy')\n",
"\n",
"test_loss = tf.keras.metrics.Mean(name='test_loss')\n",
"test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='test_accuracy')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ix4mEL65on-w"
},
"source": [
"Use `tf.GradientTape` to train the model:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"execution": {
"iopub.execute_input": "2024-08-16T07:43:08.325226Z",
"iopub.status.busy": "2024-08-16T07:43:08.324688Z",
"iopub.status.idle": "2024-08-16T07:43:08.329263Z",
"shell.execute_reply": "2024-08-16T07:43:08.328685Z"
},
"id": "OZACiVqA8KQV"
},
"outputs": [],
"source": [
"@tf.function\n",
"def train_step(images, labels):\n",
" with tf.GradientTape() as tape:\n",
" # training=True is only needed if there are layers with different\n",
" # behavior during training versus inference (e.g. Dropout).\n",
" predictions = model(images, training=True)\n",
" loss = loss_object(labels, predictions)\n",
" gradients = tape.gradient(loss, model.trainable_variables)\n",
" optimizer.apply_gradients(zip(gradients, model.trainable_variables))\n",
"\n",
" train_loss(loss)\n",
" train_accuracy(labels, predictions)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Z8YT7UmFgpjV"
},
"source": [
"Test the model:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"execution": {
"iopub.execute_input": "2024-08-16T07:43:08.332689Z",
"iopub.status.busy": "2024-08-16T07:43:08.332150Z",
"iopub.status.idle": "2024-08-16T07:43:08.336054Z",
"shell.execute_reply": "2024-08-16T07:43:08.335485Z"
},
"id": "xIKdEzHAJGt7"
},
"outputs": [],
"source": [
"@tf.function\n",
"def test_step(images, labels):\n",
" # training=False is only needed if there are layers with different\n",
" # behavior during training versus inference (e.g. Dropout).\n",
" predictions = model(images, training=False)\n",
" t_loss = loss_object(labels, predictions)\n",
"\n",
" test_loss(t_loss)\n",
" test_accuracy(labels, predictions)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"execution": {
"iopub.execute_input": "2024-08-16T07:43:08.339191Z",
"iopub.status.busy": "2024-08-16T07:43:08.338662Z",
"iopub.status.idle": "2024-08-16T07:43:34.359218Z",
"shell.execute_reply": "2024-08-16T07:43:34.358412Z"
},
"id": "i-2pkctU_Ci7"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0000 00:00:1723794190.149636 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.190166 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.191342 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.192496 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.193654 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.202086 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.205338 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.208352 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.209561 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.210753 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.211937 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.214220 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.233003 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.234263 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.235511 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.236991 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.238236 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0000 00:00:1723794190.373183 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.375632 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.376941 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.381027 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.382516 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.384666 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.386347 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.388744 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.391617 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.395232 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794190.408173 238622 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0000 00:00:1723794195.482611 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.483344 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.484008 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.484673 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.485328 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.485982 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.486645 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.487304 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.487957 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.488630 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.489318 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.489975 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.490647 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.491304 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.491981 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.492637 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.493299 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n",
"W0000 00:00:1723794195.494039 238623 gpu_timer.cc:114] Skipping the delay kernel, measurement accuracy will be reduced\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1, Loss: 0.14, Accuracy: 95.98, Test Loss: 0.06, Test Accuracy: 97.93\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 2, Loss: 0.04, Accuracy: 98.68, Test Loss: 0.05, Test Accuracy: 98.30\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 3, Loss: 0.02, Accuracy: 99.25, Test Loss: 0.05, Test Accuracy: 98.33\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 4, Loss: 0.01, Accuracy: 99.54, Test Loss: 0.05, Test Accuracy: 98.48\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 5, Loss: 0.01, Accuracy: 99.66, Test Loss: 0.06, Test Accuracy: 98.37\n"
]
}
],
"source": [
"EPOCHS = 5\n",
"\n",
"for epoch in range(EPOCHS):\n",
" # Reset the metrics at the start of the next epoch\n",
" train_loss.reset_state()\n",
" train_accuracy.reset_state()\n",
" test_loss.reset_state()\n",
" test_accuracy.reset_state()\n",
"\n",
" for images, labels in train_ds:\n",
" train_step(images, labels)\n",
"\n",
" for test_images, test_labels in test_ds:\n",
" test_step(test_images, test_labels)\n",
"\n",
" print(\n",
" f'Epoch {epoch + 1}, '\n",
" f'Loss: {train_loss.result():0.2f}, '\n",
" f'Accuracy: {train_accuracy.result() * 100:0.2f}, '\n",
" f'Test Loss: {test_loss.result():0.2f}, '\n",
" f'Test Accuracy: {test_accuracy.result() * 100:0.2f}'\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "T4JfEh7kvx6m"
},
"source": [
"The image classifier is now trained to ~98% accuracy on this dataset. To learn more, read the [TensorFlow tutorials](https://www.tensorflow.org/tutorials)."
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "advanced.ipynb",
"provenance": [],
"toc_visible": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"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.19"
}
},
"nbformat": 4,
"nbformat_minor": 0
}