Last active
February 6, 2020 07:51
-
-
Save ia35/9ada258a9364d2f1863b96fbb8a8f373 to your computer and use it in GitHub Desktop.
TensorFlow_Dataset.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"colab": { | |
"name": "TensorFlow_Dataset.ipynb", | |
"provenance": [], | |
"collapsed_sections": [], | |
"include_colab_link": true | |
}, | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3" | |
}, | |
"accelerator": "GPU", | |
"widgets": { | |
"application/vnd.jupyter.widget-state+json": { | |
"8d31b2afd54541eaab5470a8ebabd824": { | |
"model_module": "@jupyter-widgets/controls", | |
"model_name": "HBoxModel", | |
"state": { | |
"_view_name": "HBoxView", | |
"_dom_classes": [], | |
"_model_name": "HBoxModel", | |
"_view_module": "@jupyter-widgets/controls", | |
"_model_module_version": "1.5.0", | |
"_view_count": null, | |
"_view_module_version": "1.5.0", | |
"box_style": "", | |
"layout": "IPY_MODEL_541b6fd2facb4a45abea1f22e7edf32f", | |
"_model_module": "@jupyter-widgets/controls", | |
"children": [ | |
"IPY_MODEL_08acb9f4a0bd4d51b8cf2e9cd8128d47", | |
"IPY_MODEL_28cbad5e8c644cc5ae86d5660001ed78" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/ia35/9ada258a9364d2f1863b96fbb8a8f373/tensorflow_dataset.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "sO1GOv6jZ4ut", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"[![](http://bec552ebfe.url-de-test.ws/ml/buttonBackProp.png)](https://www.backprop.fr)\n", | |
"\n", | |
"# TensorFlow Dataset\n", | |
"\n", | |
"tfds (TensorFlow Dataset) est une liste de jeux de données que TensrofFlow **Tf** met à disposition. \n", | |
"\n", | |
"On y trouve tous les standards comme MNIST, fashion_mnist, iris, titanic... et d'autres jeux de données moins connus.\n", | |
"\n", | |
"C'est très pratique pour se former au Deep Learning (DL) et à Tf.\n", | |
"\n", | |
"La doc Tf sur Dataset est [ici](https://www.tensorflow.org/datasets)\n", | |
"\n", | |
"<font color=\"blue\">TensorFlow Datasets is a collection of datasets ready to use with TensorFlow. All datasets are exposed as tf.data.Datasets , enabling easy-to-use and high-performance input pipelines. To get started see the guide and our list of datasets. </font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "-f5kk6vXgqEJ", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## <font color=\"teal\">Références</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "XKKe2l37gujn", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"- Module: tfds [![](https://www.tensorflow.org/images/tf_logo_32px.png)](https://www.tensorflow.org/datasets/api_docs/python/tfds) \n", | |
"- TensorFlow Datasets [![](https://www.tensorflow.org/images/colab_logo_32px.png)](https://colab.research.google.com/github/tensorflow/datasets/blob/master/docs/overview.ipynb#scrollTo=OGw9EgE0tC0C) \n", | |
"- [Introduction](https://machinetalk.org/2019/03/18/introduction-to-tensorflow-datasets/) To Tensorflow Datasets \n", | |
"- § <font color=\"darkorange\">*The TensorFlow Datasets (TFDS) Project*</font> livre : « Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. » d'Aurélien Géron," | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "L3hn9A1qcN4c", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## <font color=\"teal\">Imports</font>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "g-n4hUH2YaIF", | |
"colab_type": "code", | |
"outputId": "1f0eaa4d-391d-4369-a0b5-302384bc25d4", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"%tensorflow_version 2.x" | |
], | |
"execution_count": 1, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"TensorFlow 2.x selected.\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "RLCeIHT0YijS", | |
"colab_type": "code", | |
"outputId": "73487f89-7ecb-440e-d9f7-09436a82037a", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"import tensorflow\n", | |
"print(tensorflow.__version__)" | |
], | |
"execution_count": 2, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"2.1.0\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "-Gd-nkillDOX", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"import matplotlib.pyplot as plt" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "4MpmyxHpZOuW", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<font color=\"red\">[TPUs](https://colab.research.google.com/notebooks/tensorflow_version.ipynb#scrollTo=hntYWG7j34zg) are not fully supported in Tensorflow 2.0. We expect they will be supported in Tensorflow 2.1. </font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "EV-5WgLbaQSK", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Ce notebook reprend un précédent notebook disponible [ici](https://intelligence-artificielle.agency/tensorflow-dataset/), et le met à jour" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "LkvGrA1paXr2", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"import tensorflow_datasets as tfds" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "1pFKTgpcdoFY", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## <font color=\"teal\">Liste des Datasets</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "OcZPnjHMcSuZ", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Pour lister les Datasets disponibles" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "t4vok15ebQbM", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"dataset_list=tfds.list_builders()" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "7TSORloGUJB7", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Pour mieux les présenter, on utilse Pandas" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "O61KyX0weEkR", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"import pandas as pd" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "X3Ey5mX0bTH0", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"df_dataset_list=pd.DataFrame(dataset_list)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "mHY2Rha3eCOg", | |
"colab_type": "code", | |
"outputId": "f58ef800-fa6b-40ec-a2bb-a73ae3e89473", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 374 | |
} | |
}, | |
"source": [ | |
"df_dataset_list.head(10)" | |
], | |
"execution_count": 8, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>0</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>abstract_reasoning</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>aeslc</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>aflw2k3d</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>amazon_us_reviews</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>arc</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>bair_robot_pushing_small</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>big_patent</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>7</th>\n", | |
" <td>bigearthnet</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>8</th>\n", | |
" <td>billsum</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>9</th>\n", | |
" <td>binarized_mnist</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" 0\n", | |
"0 abstract_reasoning\n", | |
"1 aeslc\n", | |
"2 aflw2k3d\n", | |
"3 amazon_us_reviews\n", | |
"4 arc\n", | |
"5 bair_robot_pushing_small\n", | |
"6 big_patent\n", | |
"7 bigearthnet\n", | |
"8 billsum\n", | |
"9 binarized_mnist" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 8 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "EJ-eOevEgXGI", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Il y a plus de 100 Datasets, de [types](https://www.tensorflow.org/datasets/catalog/overview) différents (audio, image, text, video, ...)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "PeQzHA7TeRnb", | |
"colab_type": "code", | |
"outputId": "f7b4c261-52a9-4315-abaa-177922e58e73", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"len(df_dataset_list)" | |
], | |
"execution_count": 9, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"141" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 9 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "A1lqX7tfelYk", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## <font color=\"teal\">Lecture d'un Dataset</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "MP4iZQAbeXA-", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### <font color=\"olive\">Lecture avec tfds.load</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "xeHLDb5ony4l", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"La façon la plus simple de lire un dataset : " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "8OopMzg2enyX", | |
"colab_type": "code", | |
"outputId": "80d34971-1305-439a-bde1-81cfa6b401e6", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 186, | |
"referenced_widgets": [ | |
"8d31b2afd54541eaab5470a8ebabd824" | |
] | |
} | |
}, | |
"source": [ | |
"dataset = tfds.load(name=\"mnist\")" | |
], | |
"execution_count": 10, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"WARNING:absl:Dataset mnist is hosted on GCS. It will automatically be downloaded to your\n", | |
"local data directory. If you'd instead prefer to read directly from our public\n", | |
"GCS bucket (recommended if you're running on GCP), you can instead set\n", | |
"data_dir=gs://tfds-data/datasets.\n", | |
"\n" | |
], | |
"name": "stderr" | |
}, | |
{ | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1mDownloading and preparing dataset mnist (11.06 MiB) to /root/tensorflow_datasets/mnist/3.0.0...\u001b[0m\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "8d31b2afd54541eaab5470a8ebabd824", | |
"version_minor": 0, | |
"version_major": 2 | |
}, | |
"text/plain": [ | |
"HBox(children=(IntProgress(value=0, description='Dl Completed...', max=4, style=ProgressStyle(description_widt…" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
}, | |
{ | |
"output_type": "stream", | |
"text": [ | |
"\n", | |
"\n", | |
"\u001b[1mDataset mnist downloaded and prepared to /root/tensorflow_datasets/mnist/3.0.0. Subsequent calls will reuse this data.\u001b[0m\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "CQxM7YQWxt-k", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Par défaut, dans GCP, le dataset est stocké ici" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "AJDQOHK4e1TO", | |
"colab_type": "code", | |
"outputId": "511118b9-1367-4749-bf94-6b2d120dd7fa", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"!ls ~/tensorflow_datasets" | |
], | |
"execution_count": 11, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"downloads mnist\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "_dqC4-Kxx2Jx", | |
"colab_type": "code", | |
"outputId": "2dfd7e67-db0d-4f09-e604-e3b8b4972829", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"!ls ~/tensorflow_datasets/mnist" | |
], | |
"execution_count": 12, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"3.0.0\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "sl6zO0ejn6BA", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"On peut suivre les préconisations (lire le fichier d'où il est)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "A42pi4YweueV", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"# dataset = tfds.load(name=\"mnist\", data_dir=\"gs://tfds-data/datasets\")" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "ihRm4E0DtvUg", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Le dataset est de type dict" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "o8WNBEjUsgnl", | |
"colab_type": "code", | |
"outputId": "8e10867d-fcae-46ef-eb36-b0b30131971c", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"type(dataset)" | |
], | |
"execution_count": 14, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"dict" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 14 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Udclb3vusvYL", | |
"colab_type": "code", | |
"outputId": "baa4734f-74ce-4ed1-de92-76f5d8d1b059", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"dataset.keys()" | |
], | |
"execution_count": 15, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"dict_keys(['test', 'train'])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 15 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "wyQ4kHRxtL0L", | |
"colab_type": "code", | |
"outputId": "8aa07024-b372-46e0-d73d-48beb4840cfb", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"dataset.items()" | |
], | |
"execution_count": 16, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"dict_items([('test', <DatasetV1Adapter shapes: {image: (28, 28, 1), label: ()}, types: {image: tf.uint8, label: tf.int64}>), ('train', <DatasetV1Adapter shapes: {image: (28, 28, 1), label: ()}, types: {image: tf.uint8, label: tf.int64}>)])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 16 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "mOal9GIceg93", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### <font color=\"olive\">Lecture avec builder</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "MWZSd7EMerJt", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Une autre façon de faire est de lire après avoir créé un **builder**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "S_Cz7Ry8csxX", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"builder = tfds.builder('mnist')" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "RYUeoso1cwZR", | |
"colab_type": "code", | |
"outputId": "5cd9b17b-d057-4aef-f4c8-c21726b795d3", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 451 | |
} | |
}, | |
"source": [ | |
"print(builder.info)" | |
], | |
"execution_count": 18, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"tfds.core.DatasetInfo(\n", | |
" name='mnist',\n", | |
" version=3.0.0,\n", | |
" description='The MNIST database of handwritten digits.',\n", | |
" homepage='http://yann.lecun.com/exdb/mnist/',\n", | |
" features=FeaturesDict({\n", | |
" 'image': Image(shape=(28, 28, 1), dtype=tf.uint8),\n", | |
" 'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=10),\n", | |
" }),\n", | |
" total_num_examples=70000,\n", | |
" splits={\n", | |
" 'test': 10000,\n", | |
" 'train': 60000,\n", | |
" },\n", | |
" supervised_keys=('image', 'label'),\n", | |
" citation=\"\"\"@article{lecun2010mnist,\n", | |
" title={MNIST handwritten digit database},\n", | |
" author={LeCun, Yann and Cortes, Corinna and Burges, CJ},\n", | |
" journal={ATT Labs [Online]. Available: http://yann. lecun. com/exdb/mnist},\n", | |
" volume={2},\n", | |
" year={2010}\n", | |
" }\"\"\",\n", | |
" redistribution_info=,\n", | |
")\n", | |
"\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "G3kHQEQodRaR", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"builder.download_and_prepare()" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "_9FjYYaXdYW3", | |
"colab_type": "code", | |
"outputId": "2808c57a-314f-45d1-f5b0-0a3faea53767", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"dataset = builder.as_dataset()\n", | |
"print(dataset)" | |
], | |
"execution_count": 20, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"{'test': <DatasetV1Adapter shapes: {image: (28, 28, 1), label: ()}, types: {image: tf.uint8, label: tf.int64}>, 'train': <DatasetV1Adapter shapes: {image: (28, 28, 1), label: ()}, types: {image: tf.uint8, label: tf.int64}>}\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "NNUKeaU0jtU4", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### <font color=\"olive\">Complément sur la lecture du Dataset</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Q66rdj4Yo2iL", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"#### <font color=\"green\">with_info</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Yv2DRAtMoE6f", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Si on veut lire les données avec load (ce qui est recommendé), tout en gardant le bénéfice du builder (info), alors ajoutez l'argument with_info=True lors de la lecture" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "lOEsK2WEjsQK", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"dataset, info = tfds.load(name=\"mnist\", with_info=True)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "v-6OrifTkCzV", | |
"colab_type": "code", | |
"outputId": "1b3ff467-51f1-4e22-fb06-925fb7235ed3", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 434 | |
} | |
}, | |
"source": [ | |
"info" | |
], | |
"execution_count": 22, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"tfds.core.DatasetInfo(\n", | |
" name='mnist',\n", | |
" version=3.0.0,\n", | |
" description='The MNIST database of handwritten digits.',\n", | |
" homepage='http://yann.lecun.com/exdb/mnist/',\n", | |
" features=FeaturesDict({\n", | |
" 'image': Image(shape=(28, 28, 1), dtype=tf.uint8),\n", | |
" 'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=10),\n", | |
" }),\n", | |
" total_num_examples=70000,\n", | |
" splits={\n", | |
" 'test': 10000,\n", | |
" 'train': 60000,\n", | |
" },\n", | |
" supervised_keys=('image', 'label'),\n", | |
" citation=\"\"\"@article{lecun2010mnist,\n", | |
" title={MNIST handwritten digit database},\n", | |
" author={LeCun, Yann and Cortes, Corinna and Burges, CJ},\n", | |
" journal={ATT Labs [Online]. Available: http://yann. lecun. com/exdb/mnist},\n", | |
" volume={2},\n", | |
" year={2010}\n", | |
" }\"\"\",\n", | |
" redistribution_info=,\n", | |
")" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 22 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "MA6ezdtyjKCb", | |
"colab_type": "code", | |
"outputId": "619fcb25-90c3-4a76-8d12-f2749a354ac3", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 104 | |
} | |
}, | |
"source": [ | |
"info.features" | |
], | |
"execution_count": 23, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"FeaturesDict({\n", | |
" 'image': Image(shape=(28, 28, 1), dtype=tf.uint8),\n", | |
" 'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=10),\n", | |
"})" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 23 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "RoqfSjQFjUVe", | |
"colab_type": "code", | |
"outputId": "f0a51c2b-d615-45dc-81b0-71c6709c37cc", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"info.features[\"label\"].num_classes" | |
], | |
"execution_count": 24, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"10" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 24 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "IshPm0WFroN3", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"mnist_train, mnist_test = dataset[\"train\"], dataset[\"test\"]" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "l9n-xXkykZo4", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"On peut afficher quelques exemples. \n", | |
"\n", | |
"Attention, ça ne marchera pas si as_supervised=True (voir plus loin)\n", | |
"\n", | |
"<font color=\"red\">Only works with datasets that have 1 image feature and optionally 1 label feature (both inferred from ds_info). Note the dataset should be unbatched. Requires matplotlib to be installed.</font>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "xi7k4Z4PkPDk", | |
"colab_type": "code", | |
"outputId": "24c4f663-55ec-43f3-ffb4-309fe73aba75", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 554 | |
} | |
}, | |
"source": [ | |
"fig = tfds.show_examples(info, mnist_train)" | |
], | |
"execution_count": 26, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\nAIBoCAAAgGgIAACAaAgAAIBoCAAAgGgIAACAaAgAAIBoCAAAgGgIAACAaAgAAIBoCAAAgGgIAACA\naAgAAIBoCAAAgGgIAACAaAgAAIBoCAAAgKQG1Uk2M1dThaB0Oees2DXkg32NDFY655oXu4h8sLcR\nkukzmycEABC2sNgFALWJhgAAANAQAAAAGgIAACAaAgAAIBoCAAAgGgIAACAaAgAAIBoCAAAgGgIA\nACAaAgAAIBoCAAAgGgIAACAaAgAAIBoCAAAgGgIAACAaAgAAIBoCAAAgqUGxCwBQ+po2berFrr76\nai/261//2ostW7Yssu7QoYOXs2bNmjyqA8IaNWrkxd54443I+gc/+IGXc/LJJ3uxmTNnFq6wIuEJ\nAQAAoCEAAAA0BAAAQDQEAABAkjnnkiebJU9GveGcs2LXkI9y3NfxQajQ0N95553nxRo3bpz1XqHY\ne++95+X0798/a52SZBbdPi1atPByvvzyy0T3KrBK51zXYnzjQinHvV1I++67rxdbunRp1utmz57t\nxbp16+bF/vGPf+RWWA3L9JnNEwIAAEBDAAAAaAgAAIBoCAAAgMr4pMKXX37Zi/Xq1cuL3X333ZH1\nTTfdVFMlAdUSOkXtwAMP9GIjRozwYkcddVRkveuuu3o51RkojosPAh555JE53wsolttuuy2n60J/\nnpo3b+7FPv/885zuXyw8IQAAADQEAACAhgAAAKgEZwjiP7uUpPbt23ux+M9QJWnbtm1e7Lrrrous\nv/32Wy9nwoQJXiz089ePPvrIi8WddNJJXix08MuCBQu82JQpUyLrLVu2ZP1+KA2hPTBu3DgvFtrX\nScTf4CZJ8+bN82KTJ0/2YqtXr/ZiU6dOzamOkCVLlkTWmzZtKti9ge+ce+65XuzKK6/0Yklma+bM\nmePFSm1eIIQnBAAAgIYAAADQEAAAANEQAAAAleBQYceOHb3Yu+++m/P9KioqIuvQwUR15bCiv/3t\nb5F1aEhm1apVtVUO8tCnT5/IOjTMF7Ju3TovFjqEa+jQoZF1aKgwqUsuuSRrzvr16xPdK/TWxb/+\n9a+R9Zo1a5IVBlTDIYccktN18aFXSRowYEC+5dRJPCEAAAA0BAAAgIYAAACIhgAAAEiy6rzxzMxy\nfz1ajlq3bh1Zhwao4jmZrF271ovFTy/cfffdvZyk/x+FTlFMcm1oiGq33XbLev+HH37Yyxk4cGDW\n71dozjn/N15CanpfH3bYYV5s5syZkXWDBv587//+7/96sb59+3qx0NBTIXXo0MGLXXXVVZF16JS2\n66+/3ouF3gi3yy67RNYbN26sbok1pdI517XYReSjGJ/ZddXcuXO9WGjQMP6Zfeutt3o5d9xxR+EK\nK4JMn9k8IQAAADQEAACAhgAAAIiGAAAAqAROKrziiisi66QDhHfffbcXe+CBB7xYfIAp9HrimjZ7\n9mwv9vHHH2e9LnTqG+qeI444wouFhgjjzjjjDC9WjJMoQ696vfbaayPrfv36eTmhAcINGzZ4sTo0\nRIgyEdqPbdu2zeleixcvzrecksETAgAAQEMAAABoCAAAgGgIAACA6thQYY8ePbzYoEGDcrrXgw8+\n6MWWL1+e9bqnn346p++Xj4MPPjhRXvwErdNOO83Lady4sRfbtGlTboWhII466qicruvSpYsXmz59\ner7l1Iif//znifLuvffeGq4EkG655RYvtsMOyf77d8WKFZH1hAkTClJTKeAJAQAAoCEAAAA0BAAA\nQHVshiD0M/74z8Q3b97s5QwbNsyLFeMAl1xddNFFifLibzucOnWql8O8QN0zZswYLzZ48OCs1734\n4ouJ7v/cc895sfj+X7ZsmZczadIkL/bWW28l+p6XXnppZN2pUycv54svvvBit912W6L7A/kIvbU2\nqfvvvz+yDr0lt1zxhAAAANAQAAAAGgIAACAaAgAAoDo2VPjJJ594scMOOyyyXrdunZezZMmSGqup\nNuy6666J8uIHE6E0hN4WeOaZZ0bWd955p5cT2hcHHnhg1nuFxAdSJen666/3Yl999VXWe0nSbrvt\nFlmH9uaiRYu82JFHHunF3nvvvUTfEwi55JJLvNjee++d6Nr169d7sfp8eBZPCAAAAA0BAACgIQAA\nAKIhAAAAkqw6g2pmxlRbnoYMGeLFQm+Kq6io8GLxgcpzzjnHy3nllVdyLy5Hzjl/Yq2E1NV93bRp\nUy+WdKiwWbNmkXVoqDD0Zz9+AqEkNW/e3IvF75fPwOsHH3wQWYf+PEybNi3n++eh0jnXtRjfuFDq\n6t4upD/84Q9eLDRoGLJ69Wovls8ph6Ui02c2TwgAAAANAQAAoCEAAACiIQAAAKpjJxWWozvuuCOy\nvvnmm72c0MBXyKhRoyLrYgwQovaETuV8//33E8WSOPnkk73YlVdemejaysrKyHro0KFezhlnnOHF\n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\nLVu2zJozYcIEL/bee+95sfXr13uxP/7xj5F1/CAkSRozZowXO+6447xY6NCJRx55JLLu1q2bl/Pt\nt996MSBkl1128WJbt271YvG9GD8gRQrv4dAMQceOHbPWFT/gS2KGAKUpfsDQwIEDvZz999/fi4U+\nx//6179G1kuWLMmzuprFEz9Nef4AAAtLSURBVAIAAEBDAAAAaAgAAIBoCAAAgEpgqDA+mLRo0SIv\n55577vFihRzU69Wrlxd74YUXvNipp57qxTp16hRZ/+xnP/NyQgcaobw1adIksp4yZUqi6zZv3uzF\nDj74YC+2zz77RNaNGzf2cszMiyU5qCtk3bp1OV0H1DVDhgyJrM8666xE173zzjterH///gWpqbbw\nhAAAANAQAAAAGgIAACAaAgAAIMmqM0RkZrlNHJWhHj16eLHp06d7sYqKish6+fLlXk7ozYmh4cm6\nyjnnT6eVkGLs6z333DOyDu2LfIb+4m9VC51m+Pjjj2etS5IuuOACLxY/zS30RsTrr78+a511XKVz\nrmuxi8gHn9lVO+SQQ7xYZWVlZB0fAJbCQ+tnn322F3v++efzqK76unb1t2voDbuZPrN5QgAAAGgI\nAAAADQEAABANAQAAUAmcVFhXvf76615s6NChXuyXv/xlZL333nt7OW3atPFipTRUiOqLn+x35pln\nFvT+CxYsiKzXrl3r5SxdujTRvUJDr/HTEUP3B+qS0HDgrbfemigvbuzYsV6stgcIQzZs2JDX9Twh\nAAAANAQAAICGAAAAiIYAAACIocKCevrpp71YfKgwpGPHjl7stddeK0hNqJvirzEOvU67GJo1a+bF\nQkNW8VMU40OMQF0TOknwwgsvzHrd119/7cVGjhxZkJoKbc6cOXldzxMCAABAQwAAAGgIAACAmCGo\nE0I/23r44Ye9WOgNW0AhtW/f3ou1bNnSi8XfunjiiSd6OaG3KQK1oVevXl7siSeeSHRtfG/fcMMN\nXk7oYLpywBMCAABAQwAAAGgIAACAaAgAAIAYKiyoFStWeLGVK1dG1nvttZeXE39znCRVVFR4sY0b\nN+ZRHZBd6JCsJD744IMCVwLk7le/+pUXa9SoUaJrhw0bFlknHUYsBzwhAAAANAQAAICGAAAAiIYA\nAACoBIcKQ29jC52kFrJ161Yv9vHHH+dd03eaN2/uxUJDhHH333+/F2OAEMWQ61BhIf8cAdVx1VVX\n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\naAgAAICk/wNZrye0fV8Z5gAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<Figure size 648x648 with 9 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "zLjPjRV41tzQ", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Prenons un seul élément" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Y3TTqOrVzcox", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"takeone=mnist_train.take(1)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "9TRdOgT3zmMX", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"for data in takeone:\n", | |
" img=data[\"image\"]\n", | |
" label=data[\"label\"]" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "udKftVjw4bjG", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Notez que chaque élément est un dict qui contient image et label" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "pXaA2uRq2Xhz", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Le label de cet élément est 8" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "KxujkAnv0CpR", | |
"colab_type": "code", | |
"outputId": "0aff0b17-60cd-4aa3-d866-d45bab4ae9a0", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"print(label)" | |
], | |
"execution_count": 29, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"tf.Tensor(4, shape=(), dtype=int64)\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "gN_p1qCD14LL", | |
"colab_type": "code", | |
"outputId": "8feadef0-5a50-4bb1-eb75-baf49641fd3b", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"img.shape" | |
], | |
"execution_count": 30, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"TensorShape([28, 28, 1])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 30 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "GistHoO52eq2", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Affichons l'image de cet élément" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "CNjm5js72N17", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"my_img=img[:,:,0]" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Sdp_Lj4H2Irc", | |
"colab_type": "code", | |
"outputId": "18f8922a-a76b-4075-f152-269e5d9737ac", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 286 | |
} | |
}, | |
"source": [ | |
"plt.figure()\n", | |
"plt.imshow(my_img, cmap='gray')\n", | |
"plt.colorbar() #pour la barre des couleurs\n", | |
"plt.grid(False) #Suppression de la grille\n", | |
"plt.show()" | |
], | |
"execution_count": 32, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "X62ovTMf2kYq", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"C'est bien un 8" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "XI06q2aJ4uN3", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"#### <font color=\"green\">as_supervised</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Bl3jVEJ65Xc_", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Vous avez peut-être noté que les éléments du dataset sont sous la forme d'un dict, ce qui pour Keras n'est pas acceptable, il faut un tuple. La solution pour y remédier : as_supervised=True" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "GA_GRsT85xyf", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"dataset, info = tfds.load(name=\"mnist\", with_info=True, as_supervised=True)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "VTubrsso6H_0", | |
"colab_type": "code", | |
"outputId": "b054ecbe-b53c-4e60-c1fb-45c640ab49b2", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"dataset.keys()" | |
], | |
"execution_count": 34, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"dict_keys(['test', 'train'])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 34 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "gF4EKOZ96dVR", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"mnist_train, mnist_test = dataset[\"train\"], dataset[\"test\"]" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "zHFDrkBj6kqv", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"takeone=mnist_train.take(1)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "5zKqpwC76tFU", | |
"colab_type": "code", | |
"outputId": "01f50287-3f95-4a4c-bf00-d4ae1b7ab9f1", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"takeone" | |
], | |
"execution_count": 37, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<DatasetV1Adapter shapes: ((28, 28, 1), ()), types: (tf.uint8, tf.int64)>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 37 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "7G9nWG347CxZ", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Vérifions qu'on a un tuple et non un dict" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "OCtfh4oh63rp", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"for data in takeone:\n", | |
" img=data[0]\n", | |
" label=data[1]" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "qF-0KgiH69WY", | |
"colab_type": "code", | |
"outputId": "8c03354a-abc2-4611-da7d-b74bcf6fb8f5", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"print (label)" | |
], | |
"execution_count": 39, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"tf.Tensor(4, shape=(), dtype=int64)\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "YO5MxCQL2RWj", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### <font color=\"olive\">Parcours avec un itérateur</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "UZY7SBCW1YWB", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Supposons qu'on veuille afficher un élément du Dataset\n", | |
"\n", | |
"On peut créer un itérateur" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "lWfLJUVuACrv", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"dataset, info = tfds.load(name=\"mnist\", with_info=True)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "VeSsTJf2zSoi", | |
"colab_type": "code", | |
"outputId": "adbc5796-6f18-45aa-aa75-e5e3064f84c8", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"iterator = dataset['test'].__iter__()\n", | |
"next_element = iterator.get_next()\n", | |
"type(next_element)" | |
], | |
"execution_count": 41, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"dict" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 41 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "12uMt2351pLp", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"On l'a déjà vu précédemment, chaque élément contient une image et un label" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Ml_ZfP_Vzp0O", | |
"colab_type": "code", | |
"outputId": "570ab08f-4bfc-4cc9-ec86-8cb25605118a", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"next_element.keys()" | |
], | |
"execution_count": 42, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"dict_keys(['image', 'label'])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 42 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "KS9OUb8S1x4r", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"L'image est de type tenseur" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "EqrgAss-zvie", | |
"colab_type": "code", | |
"outputId": "2095e47f-8c82-4d7d-fdbb-18bf46a78433", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"type(next_element[\"image\"])" | |
], | |
"execution_count": 43, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"tensorflow.python.framework.ops.EagerTensor" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 43 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Kwt_RkM22Wwg", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### <font color=\"olive\">Avec take</font>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "-Wh4J77c1Q0s", | |
"colab_type": "code", | |
"outputId": "53e82aae-0fc0-4b77-bfa2-d807f9e5badd", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"dataset['test'].take(1)" | |
], | |
"execution_count": 44, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<DatasetV1Adapter shapes: {image: (28, 28, 1), label: ()}, types: {image: tf.uint8, label: tf.int64}>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 44 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "vzNy8w_x9d5Q", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"takeone = dataset['test'].take(1)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "e6J5VCbbQydw", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"for data in takeone:\n", | |
" img=data[\"image\"]\n", | |
" label=data[\"label\"]" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "qaxnlAkDRCHy", | |
"colab_type": "code", | |
"outputId": "8d6c5d1d-22f2-440f-a090-95b9b49519ca", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"label" | |
], | |
"execution_count": 47, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<tf.Tensor: shape=(), dtype=int64, numpy=2>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 47 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Pz-Xtqizpu28", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## <font color=\"teal\">Slicing</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "GfDFY3ltpxZl", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Il existe 2 API pour le slicing du Dataset, une seule est présentée S3, l'autre (legacy) a vocation à disparaître" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "bLu6QeUQHOKD", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Sur le site de Tf, il existe 2 versions de MNIST\n", | |
"\n", | |
"La version 1.0.0 est la verion par défaut\n", | |
"\n", | |
"La version 3.0.0 supporte l'API S3 (celle qu'on va utiliser pour le slicing)\n", | |
"\n", | |
"Etant donné qu'il n'y a que 2 versions, il eut été plus logique de faire tfds.load('mnist:3.0.0)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "68i-35MNTdMU", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"A partir de maintenant, on utilisera systématiquement load pour charger les données (et non le builider)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "UOxkt-juXQ7T", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### <font color=\"olive\">split</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "jbL_o5iaT7Lt", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Lorsque le paramètre split est présent, c'est pour préciser ce qu'on retourne " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "1Ug5ib9KpOgn", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"data_dir nous permet de lire les données à partir de GCP" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "jjf78KTQpbeY", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Au prélable, pour s'assurer qu'un dataset est disponible sur GCS bucket gs://tfds-data/datasets" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "OUvjEfHSpXKW", | |
"colab_type": "code", | |
"outputId": "fe8a3d25-3a9a-48e1-8daf-9ea5baa6f946", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"tfds.is_dataset_on_gcs(\"mnist\")" | |
], | |
"execution_count": 48, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"True" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 48 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "xWQvBUPtpt5_", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"train_ds, info = tfds.load('mnist:3.*.*', split='train', data_dir=\"gs://tfds-data/datasets\", with_info=True)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "PubxrVJIrXmf", | |
"colab_type": "code", | |
"outputId": "a254ec20-349c-47ff-bbc1-0139cc3ab388", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 434 | |
} | |
}, | |
"source": [ | |
"info" | |
], | |
"execution_count": 50, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"tfds.core.DatasetInfo(\n", | |
" name='mnist',\n", | |
" version=3.0.0,\n", | |
" description='The MNIST database of handwritten digits.',\n", | |
" homepage='http://yann.lecun.com/exdb/mnist/',\n", | |
" features=FeaturesDict({\n", | |
" 'image': Image(shape=(28, 28, 1), dtype=tf.uint8),\n", | |
" 'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=10),\n", | |
" }),\n", | |
" total_num_examples=70000,\n", | |
" splits={\n", | |
" 'test': 10000,\n", | |
" 'train': 60000,\n", | |
" },\n", | |
" supervised_keys=('image', 'label'),\n", | |
" citation=\"\"\"@article{lecun2010mnist,\n", | |
" title={MNIST handwritten digit database},\n", | |
" author={LeCun, Yann and Cortes, Corinna and Burges, CJ},\n", | |
" journal={ATT Labs [Online]. Available: http://yann. lecun. com/exdb/mnist},\n", | |
" volume={2},\n", | |
" year={2010}\n", | |
" }\"\"\",\n", | |
" redistribution_info=,\n", | |
")" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 50 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "PSBXlCSQXi9M", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"On peut avoir plusieurs arguments à split\n", | |
"\n", | |
"Voir [ici](https://www.tensorflow.org/datasets/splits)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "bkrcWe-KJlBI", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"# The full `train` split and the full `test` split as two distinct datasets.\n", | |
"train_ds, test_ds = tfds.load('mnist:3.*.*', split=['train', 'test'])" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "-NO-1rv_XsLq", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"# From record 10 (included) to record 20 (excluded) of `train` split.\n", | |
"train_10_20_ds = tfds.load('mnist:3.*.*', split='train[10:20]')" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "iERxm_DMYIMx", | |
"colab_type": "code", | |
"outputId": "01b5611f-ab94-4532-b10a-8bbd12950eab", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"train_10_20_ds" | |
], | |
"execution_count": 53, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<DatasetV1Adapter shapes: {image: (28, 28, 1), label: ()}, types: {image: tf.uint8, label: tf.int64}>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 53 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "r85RhYoTaOjh", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Pour compter le nombre d'éléments on ne peut pas utiliser tensorflow.data.experimental.cardinality car les données sont lues à partir d'un fichier" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "pzP0bRwAYQAv", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"num_elements = 0\n", | |
"for element in train_10_20_ds:\n", | |
" num_elements += 1" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "QtE_MlbuYtxp", | |
"colab_type": "code", | |
"outputId": "d3b8650f-881c-4039-f358-80a8bf8f6eb6", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"num_elements" | |
], | |
"execution_count": 55, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"10" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 55 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "EdK6W9xfalMi", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"On peut demander un pourcentage de l'effectif" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "rx_F_MMJZQhJ", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"# The first 10% of train + the last 80% of train.\n", | |
"train_10_80pct_ds = tfds.load('mnist:3.*.*', split='train[:10%]+train[-80%:]')" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "JxDNTzbPbNsg", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### <font color=\"olive\">pourcentages et autres API\n", | |
"\n", | |
"```\n", | |
"# Ce texte est au format code\n", | |
"```\n", | |
"\n", | |
"</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Oc98L-hvbFKd", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Pour aller plus loin, voir [ici](https://www.tensorflow.org/datasets/splits)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "1TqKgjj8oi3Q", | |
"colab_type": "code", | |
"outputId": "f24d18dc-cd3e-4752-e67b-039c974ce45f", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"tfds.is_dataset_on_gcs(\"mnist\")" | |
], | |
"execution_count": 57, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"True" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 57 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "WTlzcR3OsydT", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## <font color=\"teal\">Pipelines</font>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "c8KFILIWuRts", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<font color=\"blue\">Here we'll repeat the dataset so that we have an infinite stream of examples, shuffle, and create batches of 32.</font>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Bvq4u1rYo4rj", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"train_ds, info = tfds.load('mnist:3.*.*', split='train', data_dir=\"gs://tfds-data/datasets\", with_info=True, as_supervised=True)\n", | |
"mnist_train = train_ds.repeat().shuffle(1024).batch(32)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "2gnGNnv1uo_T", | |
"colab_type": "code", | |
"outputId": "2664c7e0-ca55-4715-9fdf-7e831d731efb", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"type(mnist_train)" | |
], | |
"execution_count": 59, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"tensorflow.python.data.ops.dataset_ops.DatasetV1Adapter" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 59 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "1WJm3Kl4uvFo", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment