Skip to content

Instantly share code, notes, and snippets.

@tevdoradze
Last active December 1, 2019 13:00
Show Gist options
  • Save tevdoradze/4f919b2a9011ec04c4c4d3918146ebb4 to your computer and use it in GitHub Desktop.
Save tevdoradze/4f919b2a9011ec04c4c4d3918146ebb4 to your computer and use it in GitHub Desktop.
tf2_dataset_pipeline.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"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.6.7"
},
"colab": {
"name": "tf2_dataset_pipeline.ipynb",
"provenance": [],
"include_colab_link": true
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/tevdoradze/4f919b2a9011ec04c4c4d3918146ebb4/tf2_dataset_pipeline.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hnb4lYIYiulm",
"colab_type": "text"
},
"source": [
"# DATA PIPELINE"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lsFFgWPFiuls",
"colab_type": "text"
},
"source": [
"This is an example of how to use the new Tensorflow 2.0 DATASET API.\n",
"We use the dataset api to :\n",
"- Load images from different folders\n",
"- Preprocess images\n",
"- Bind fetching rules to the dataset (batch size, shuffle, cache,..)\n",
"- Create a train / test (sample, label) zip"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2IGMFhuaiulx",
"colab_type": "text"
},
"source": [
"#### Imports"
]
},
{
"cell_type": "code",
"metadata": {
"id": "MGTOfs_Uiul1",
"colab_type": "code",
"colab": {}
},
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt\n",
"import matplotlib\n",
"import tensorflow as tf"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "n848px0CiumD",
"colab_type": "code",
"colab": {}
},
"source": [
"config = tf.compat.v1.ConfigProto()\n",
"config.gpu_options.allow_growth = True\n",
"session = tf.compat.v1.Session(config=config)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "acUm6mYKiumO",
"colab_type": "text"
},
"source": [
"#### Paths & labels"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1kV3BaDiiumS",
"colab_type": "text"
},
"source": [
"Loads training data from:\n",
"- train/[0-9]/*.png"
]
},
{
"cell_type": "code",
"metadata": {
"id": "iW4wDgppiumV",
"colab_type": "code",
"colab": {}
},
"source": [
"#We can use dataset.list_files instead\n",
"import glob\n",
"all_train_paths = glob.glob(\"./train/*/*\")\n",
"np.random.shuffle(all_train_paths)\n",
"all_train_paths = [path.replace(\"\\\\\", \"/\") for path in all_train_paths]\n",
"all_train_labels = [int(path.split('/')[2]) for path in all_train_paths]\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "bkyz2Lx_iumf",
"colab_type": "code",
"colab": {},
"outputId": "d6fda92c-ebde-47e3-efb1-936a042307d7"
},
"source": [
"all_train_labels"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[1,\n",
" 6,\n",
" 4,\n",
" 4,\n",
" 8,\n",
" 1,\n",
" 3,\n",
" 4,\n",
" 2,\n",
" 8,\n",
" 0,\n",
" 9,\n",
" 6,\n",
" 5,\n",
" 5,\n",
" 0,\n",
" 5,\n",
" 2,\n",
" 1,\n",
" 6,\n",
" 4,\n",
" 3,\n",
" 6,\n",
" 0,\n",
" 5,\n",
" 1,\n",
" 4,\n",
" 8,\n",
" 5,\n",
" 9,\n",
" 1,\n",
" 6,\n",
" 0,\n",
" 4,\n",
" 9,\n",
" 6,\n",
" 6,\n",
" 6,\n",
" 3,\n",
" 9,\n",
" 0,\n",
" 0,\n",
" 4,\n",
" 2,\n",
" 0,\n",
" 3,\n",
" 8,\n",
" 6,\n",
" 3,\n",
" 4,\n",
" 2,\n",
" 6,\n",
" 5,\n",
" 9,\n",
" 4,\n",
" 3,\n",
" 0,\n",
" 7,\n",
" 8,\n",
" 1,\n",
" 2,\n",
" 8,\n",
" 7,\n",
" 5,\n",
" 5,\n",
" 2,\n",
" 1,\n",
" 7,\n",
" 1,\n",
" 4,\n",
" 9,\n",
" 8,\n",
" 4,\n",
" 4,\n",
" 4,\n",
" 8,\n",
" 1,\n",
" 7,\n",
" 7,\n",
" 6,\n",
" 6,\n",
" 3,\n",
" 0,\n",
" 4,\n",
" 7,\n",
" 6,\n",
" 4,\n",
" 1,\n",
" 1,\n",
" 5,\n",
" 0,\n",
" 8,\n",
" 4,\n",
" 3,\n",
" 5,\n",
" 1,\n",
" 6,\n",
" 7,\n",
" 5,\n",
" 5,\n",
" 8,\n",
" 2,\n",
" 9,\n",
" 3,\n",
" 2,\n",
" 1,\n",
" 7,\n",
" 5,\n",
" 1,\n",
" 6,\n",
" 4,\n",
" 5,\n",
" 0,\n",
" 8,\n",
" 4,\n",
" 7,\n",
" 3,\n",
" 8,\n",
" 6,\n",
" 3,\n",
" 5,\n",
" 1,\n",
" 0,\n",
" 2,\n",
" 5,\n",
" 7,\n",
" 9,\n",
" 7,\n",
" 1,\n",
" 7,\n",
" 2,\n",
" 7,\n",
" 1,\n",
" 7,\n",
" 8,\n",
" 4,\n",
" 2,\n",
" 8,\n",
" 9,\n",
" 5,\n",
" 5,\n",
" 6,\n",
" 7,\n",
" 3,\n",
" 4,\n",
" 3,\n",
" 6,\n",
" 8,\n",
" 6,\n",
" 9,\n",
" 6,\n",
" 4,\n",
" 2,\n",
" 8,\n",
" 0,\n",
" 0,\n",
" 4,\n",
" 6,\n",
" 7,\n",
" 0,\n",
" 1,\n",
" 5,\n",
" 9,\n",
" 9,\n",
" 0,\n",
" 3,\n",
" 6,\n",
" 4,\n",
" 3,\n",
" 8,\n",
" 9,\n",
" 5,\n",
" 9,\n",
" 9,\n",
" 2,\n",
" 8,\n",
" 9,\n",
" 9,\n",
" 7,\n",
" 1,\n",
" 6,\n",
" 2,\n",
" 8,\n",
" 5,\n",
" 3,\n",
" 5,\n",
" 4,\n",
" 2,\n",
" 2,\n",
" 9,\n",
" 2,\n",
" 1,\n",
" 6,\n",
" 4,\n",
" 2,\n",
" 7,\n",
" 3,\n",
" 7,\n",
" 8,\n",
" 2,\n",
" 9,\n",
" 4,\n",
" 8,\n",
" 5,\n",
" 6,\n",
" 6,\n",
" 8,\n",
" 6,\n",
" 0,\n",
" 3,\n",
" 9,\n",
" 9,\n",
" 2,\n",
" 7,\n",
" 6,\n",
" 2,\n",
" 0,\n",
" 0,\n",
" 9,\n",
" 6,\n",
" 3,\n",
" 7,\n",
" 4,\n",
" 9,\n",
" 2,\n",
" 1,\n",
" 8,\n",
" 7,\n",
" 4,\n",
" 4,\n",
" 1,\n",
" 4,\n",
" 3,\n",
" 1,\n",
" 0,\n",
" 1,\n",
" 0,\n",
" 4,\n",
" 8,\n",
" 3,\n",
" 4,\n",
" 8,\n",
" 3,\n",
" 9,\n",
" 5,\n",
" 1,\n",
" 5,\n",
" 3,\n",
" 2,\n",
" 3,\n",
" 9,\n",
" 2,\n",
" 6,\n",
" 5,\n",
" 6,\n",
" 4,\n",
" 2,\n",
" 5,\n",
" 3,\n",
" 4,\n",
" 5,\n",
" 4,\n",
" 0,\n",
" 1,\n",
" 6,\n",
" 3,\n",
" 3,\n",
" 9,\n",
" 0,\n",
" 9,\n",
" 1,\n",
" 4,\n",
" 8,\n",
" 5,\n",
" 6,\n",
" 2,\n",
" 9,\n",
" 8,\n",
" 9,\n",
" 0,\n",
" 0,\n",
" 9,\n",
" 4,\n",
" 9,\n",
" 9,\n",
" 6,\n",
" 6,\n",
" 2,\n",
" 8,\n",
" 2,\n",
" 1,\n",
" 9,\n",
" 9,\n",
" 0,\n",
" 4,\n",
" 1,\n",
" 2,\n",
" 9,\n",
" 0,\n",
" 9,\n",
" 3,\n",
" 1,\n",
" 4,\n",
" 1,\n",
" 8,\n",
" 6,\n",
" 7,\n",
" 9,\n",
" 0,\n",
" 5,\n",
" 2,\n",
" 6,\n",
" 8,\n",
" 4,\n",
" 9,\n",
" 3,\n",
" 3,\n",
" 6,\n",
" 9,\n",
" 1,\n",
" 6,\n",
" 6,\n",
" 0,\n",
" 2,\n",
" 1,\n",
" 3,\n",
" 7,\n",
" 5,\n",
" 1,\n",
" 7,\n",
" 8,\n",
" 4,\n",
" 9,\n",
" 2,\n",
" 7,\n",
" 1,\n",
" 3,\n",
" 0,\n",
" 5,\n",
" 0,\n",
" 3,\n",
" 4,\n",
" 9,\n",
" 3,\n",
" 4,\n",
" 9,\n",
" 9,\n",
" 2,\n",
" 3,\n",
" 0,\n",
" 6,\n",
" 6,\n",
" 0,\n",
" 1,\n",
" 1,\n",
" 8,\n",
" 8,\n",
" 5,\n",
" 0,\n",
" 6,\n",
" 8,\n",
" 5,\n",
" 4,\n",
" 9,\n",
" 5,\n",
" 7,\n",
" 4,\n",
" 6,\n",
" 0,\n",
" 3,\n",
" 9,\n",
" 8,\n",
" 7,\n",
" 0,\n",
" 4,\n",
" 5,\n",
" 4,\n",
" 1,\n",
" 5,\n",
" 5,\n",
" 5,\n",
" 7,\n",
" 3,\n",
" 0,\n",
" 5,\n",
" 1,\n",
" 2,\n",
" 0,\n",
" 1,\n",
" 9,\n",
" 7,\n",
" 4,\n",
" 1,\n",
" 5,\n",
" 1,\n",
" 7,\n",
" 4,\n",
" 4,\n",
" 7,\n",
" 1,\n",
" 3,\n",
" 4,\n",
" 6,\n",
" 2,\n",
" 1,\n",
" 2,\n",
" 7,\n",
" 5,\n",
" 3,\n",
" 2,\n",
" 8,\n",
" 5,\n",
" 9,\n",
" 1,\n",
" 3,\n",
" 7,\n",
" 2,\n",
" 8,\n",
" 5,\n",
" 4,\n",
" 0,\n",
" 1,\n",
" 2,\n",
" 8,\n",
" 3,\n",
" 7,\n",
" 4,\n",
" 7,\n",
" 2,\n",
" 6,\n",
" 0,\n",
" 0,\n",
" 1,\n",
" 6,\n",
" 3,\n",
" 0,\n",
" 3,\n",
" 2,\n",
" 6,\n",
" 0,\n",
" 8,\n",
" 3,\n",
" 2,\n",
" 6,\n",
" 9,\n",
" 2,\n",
" 6,\n",
" 1,\n",
" 2,\n",
" 2,\n",
" 1,\n",
" 3,\n",
" 7,\n",
" 0,\n",
" 3,\n",
" 9,\n",
" 1,\n",
" 1,\n",
" 8,\n",
" 9,\n",
" 7,\n",
" 9,\n",
" 1,\n",
" 5,\n",
" 1,\n",
" 4,\n",
" 5,\n",
" 1,\n",
" 2,\n",
" 1,\n",
" 7,\n",
" 6,\n",
" 2,\n",
" 1,\n",
" 6,\n",
" 8,\n",
" 9,\n",
" 3,\n",
" 7,\n",
" 6,\n",
" 4,\n",
" 2,\n",
" 7,\n",
" 6,\n",
" 4,\n",
" 3,\n",
" 9,\n",
" 7,\n",
" 1,\n",
" 1,\n",
" 4,\n",
" 9,\n",
" 8,\n",
" 5,\n",
" 6,\n",
" 3,\n",
" 3,\n",
" 0,\n",
" 6,\n",
" 1,\n",
" 6,\n",
" 9,\n",
" 3,\n",
" 8,\n",
" 9,\n",
" 1,\n",
" 7,\n",
" 7,\n",
" 6,\n",
" 9,\n",
" 1,\n",
" 2,\n",
" 2,\n",
" 5,\n",
" 8,\n",
" 0,\n",
" 3,\n",
" 2,\n",
" 1,\n",
" 6,\n",
" 1,\n",
" 8,\n",
" 4,\n",
" 8,\n",
" 8,\n",
" 1,\n",
" 5,\n",
" 2,\n",
" 2,\n",
" 7,\n",
" 6,\n",
" 5,\n",
" 6,\n",
" 1,\n",
" 1,\n",
" 7,\n",
" 4,\n",
" 9,\n",
" 8,\n",
" 9,\n",
" 3,\n",
" 8,\n",
" 4,\n",
" 8,\n",
" 2,\n",
" 1,\n",
" 2,\n",
" 8,\n",
" 1,\n",
" 7,\n",
" 0,\n",
" 9,\n",
" 1,\n",
" 2,\n",
" 9,\n",
" 5,\n",
" 0,\n",
" 7,\n",
" 4,\n",
" 4,\n",
" 3,\n",
" 0,\n",
" 7,\n",
" 7,\n",
" 6,\n",
" 8,\n",
" 4,\n",
" 2,\n",
" 8,\n",
" 5,\n",
" 2,\n",
" 4,\n",
" 4,\n",
" 8,\n",
" 8,\n",
" 9,\n",
" 8,\n",
" 1,\n",
" 1,\n",
" 9,\n",
" 1,\n",
" 9,\n",
" 1,\n",
" 4,\n",
" 1,\n",
" 7,\n",
" 4,\n",
" 2,\n",
" 4,\n",
" 5,\n",
" 4,\n",
" 3,\n",
" 6,\n",
" 1,\n",
" 0,\n",
" 4,\n",
" 9,\n",
" 3,\n",
" 6,\n",
" 1,\n",
" 1,\n",
" 6,\n",
" 4,\n",
" 6,\n",
" 9,\n",
" 2,\n",
" 2,\n",
" 0,\n",
" 3,\n",
" 1,\n",
" 7,\n",
" 8,\n",
" 7,\n",
" 3,\n",
" 0,\n",
" 5,\n",
" 0,\n",
" 8,\n",
" 2,\n",
" 8,\n",
" 6,\n",
" 5,\n",
" 2,\n",
" 6,\n",
" 8,\n",
" 2,\n",
" 3,\n",
" 7,\n",
" 4,\n",
" 8,\n",
" 3,\n",
" 6,\n",
" 4,\n",
" 2,\n",
" 4,\n",
" 8,\n",
" 3,\n",
" 8,\n",
" 5,\n",
" 3,\n",
" 9,\n",
" 9,\n",
" 9,\n",
" 5,\n",
" 7,\n",
" 5,\n",
" 3,\n",
" 8,\n",
" 7,\n",
" 7,\n",
" 5,\n",
" 3,\n",
" 2,\n",
" 0,\n",
" 4,\n",
" 7,\n",
" 0,\n",
" 9,\n",
" 1,\n",
" 5,\n",
" 7,\n",
" 0,\n",
" 6,\n",
" 2,\n",
" 7,\n",
" 0,\n",
" 0,\n",
" 1,\n",
" 8,\n",
" 7,\n",
" 3,\n",
" 6,\n",
" 6,\n",
" 1,\n",
" 2,\n",
" 6,\n",
" 4,\n",
" 3,\n",
" 6,\n",
" 3,\n",
" 7,\n",
" 7,\n",
" 0,\n",
" 9,\n",
" 6,\n",
" 8,\n",
" 0,\n",
" 3,\n",
" 2,\n",
" 3,\n",
" 2,\n",
" 9,\n",
" 1,\n",
" 1,\n",
" 5,\n",
" 5,\n",
" 5,\n",
" 3,\n",
" 2,\n",
" 9,\n",
" 3,\n",
" 0,\n",
" 1,\n",
" 3,\n",
" 6,\n",
" 0,\n",
" 5,\n",
" 3,\n",
" 0,\n",
" 3,\n",
" 1,\n",
" 3,\n",
" 5,\n",
" 4,\n",
" 8,\n",
" 9,\n",
" 2,\n",
" 0,\n",
" 9,\n",
" 5,\n",
" 7,\n",
" 7,\n",
" 6,\n",
" 1,\n",
" 6,\n",
" 9,\n",
" 9,\n",
" 4,\n",
" 2,\n",
" 8,\n",
" 6,\n",
" 0,\n",
" 0,\n",
" 3,\n",
" 2,\n",
" 0,\n",
" 3,\n",
" 7,\n",
" 9,\n",
" 8,\n",
" 9,\n",
" 0,\n",
" 2,\n",
" 9,\n",
" 8,\n",
" 9,\n",
" 4,\n",
" 0,\n",
" 7,\n",
" 2,\n",
" 8,\n",
" 5,\n",
" 6,\n",
" 2,\n",
" 9,\n",
" 2,\n",
" 3,\n",
" 6,\n",
" 3,\n",
" 7,\n",
" 7,\n",
" 8,\n",
" 9,\n",
" 0,\n",
" 1,\n",
" 7,\n",
" 6,\n",
" 9,\n",
" 9,\n",
" 7,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 9,\n",
" 4,\n",
" 3,\n",
" 0,\n",
" 7,\n",
" 6,\n",
" 4,\n",
" 0,\n",
" 9,\n",
" 6,\n",
" 2,\n",
" 5,\n",
" 3,\n",
" 5,\n",
" 7,\n",
" 7,\n",
" 0,\n",
" 7,\n",
" 3,\n",
" 1,\n",
" 5,\n",
" 7,\n",
" 7,\n",
" 9,\n",
" 1,\n",
" 1,\n",
" 9,\n",
" 7,\n",
" 3,\n",
" 9,\n",
" 8,\n",
" 8,\n",
" 4,\n",
" 6,\n",
" 7,\n",
" 9,\n",
" 6,\n",
" 6,\n",
" 2,\n",
" 4,\n",
" 3,\n",
" 1,\n",
" 6,\n",
" 9,\n",
" 0,\n",
" 1,\n",
" 8,\n",
" 9,\n",
" 1,\n",
" 6,\n",
" 7,\n",
" 2,\n",
" 9,\n",
" 2,\n",
" 9,\n",
" 2,\n",
" 0,\n",
" 1,\n",
" 2,\n",
" 7,\n",
" 2,\n",
" 4,\n",
" 0,\n",
" 8,\n",
" 8,\n",
" 5,\n",
" 7,\n",
" 3,\n",
" 1,\n",
" 3,\n",
" 2,\n",
" 8,\n",
" 9,\n",
" 6,\n",
" 5,\n",
" 1,\n",
" 7,\n",
" 4,\n",
" 3,\n",
" 3,\n",
" 0,\n",
" 2,\n",
" 8,\n",
" 8,\n",
" 8,\n",
" 2,\n",
" 9,\n",
" 8,\n",
" 6,\n",
" 1,\n",
" 6,\n",
" 2,\n",
" 1,\n",
" 4,\n",
" 1,\n",
" 9,\n",
" 3,\n",
" 4,\n",
" 4,\n",
" 4,\n",
" 3,\n",
" 1,\n",
" 7,\n",
" 3,\n",
" 4,\n",
" 1,\n",
" 9,\n",
" 7,\n",
" 5,\n",
" 8,\n",
" 7,\n",
" 9,\n",
" 0,\n",
" 6,\n",
" 8,\n",
" 3,\n",
" 1,\n",
" 0,\n",
" 3,\n",
" 2,\n",
" 8,\n",
" 3,\n",
" 7,\n",
" 4,\n",
" 0,\n",
" 0,\n",
" 4,\n",
" 1,\n",
" 8,\n",
" 5,\n",
" 8,\n",
" 9,\n",
" 8,\n",
" 8,\n",
" 4,\n",
" 8,\n",
" 3,\n",
" 0,\n",
" 9,\n",
" 3,\n",
" 3,\n",
" 8,\n",
" 4,\n",
" 8,\n",
" 9,\n",
" 4,\n",
" 1,\n",
" 5,\n",
" 0,\n",
" 6,\n",
" 9,\n",
" 0,\n",
" 6,\n",
" 6,\n",
" 0,\n",
" 8,\n",
" 7,\n",
" 3,\n",
" 2,\n",
" 7,\n",
" 3,\n",
" 0,\n",
" 6,\n",
" 9,\n",
" 5,\n",
" 6,\n",
" 6,\n",
" 7,\n",
" 4,\n",
" 0,\n",
" 4,\n",
" 7,\n",
" 2,\n",
" 9,\n",
" 1,\n",
" 9,\n",
" 0,\n",
" 9,\n",
" 5,\n",
" 6,\n",
" 0,\n",
" 5,\n",
" 2,\n",
" 1,\n",
" 3,\n",
" 9,\n",
" 8,\n",
" 3,\n",
" 7,\n",
" 7,\n",
" 7,\n",
" 9,\n",
" 3,\n",
" 7,\n",
" 9,\n",
" 1,\n",
" 5,\n",
" 0,\n",
" 6,\n",
" 1,\n",
" 5,\n",
" 5,\n",
" 2,\n",
" 2,\n",
" 6,\n",
" 5,\n",
" 2,\n",
" 0,\n",
" 0,\n",
" 9,\n",
" 8,\n",
" 8,\n",
" 7,\n",
" 5,\n",
" 4,\n",
" 1,\n",
" 3,\n",
" 9,\n",
" 6,\n",
" 6,\n",
" 0,\n",
" 7,\n",
" 6,\n",
" 1,\n",
" 2,\n",
" 8,\n",
" 8,\n",
" ...]"
]
},
"metadata": {
"tags": []
},
"execution_count": 6
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "moN9LU59iump",
"colab_type": "text"
},
"source": [
"#### Constants"
]
},
{
"cell_type": "code",
"metadata": {
"id": "6NsosLGwiums",
"colab_type": "code",
"colab": {},
"outputId": "a5159bf1-93dc-467a-c052-6b618fe55d90"
},
"source": [
"VAL_FRACTION = 0.1\n",
"image_count = len(all_train_paths)\n",
"\n",
"VAL_COUNT = int(image_count * VAL_FRACTION)\n",
"TRAIN_COUNT = image_count - VAL_COUNT\n",
"\n",
"print(TRAIN_COUNT, VAL_COUNT, image_count)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"37800 4200 42000\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "o6XGu6bNiumz",
"colab_type": "code",
"colab": {}
},
"source": [
"HEIGHT = WIDTH = 224"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "7L32NAydium6",
"colab_type": "code",
"colab": {}
},
"source": [
"BATCH_SIZE = 128\n",
"EPOCHS = 2"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "nT4AyAHPiunA",
"colab_type": "text"
},
"source": [
"#### Preprocessing"
]
},
{
"cell_type": "code",
"metadata": {
"id": "ajSoaFK1iunD",
"colab_type": "code",
"colab": {}
},
"source": [
"def preprocess_image(image):\n",
" image = tf.image.decode_png(image, channels=3)\n",
" image = tf.image.resize(image, [HEIGHT, WIDTH])\n",
" image /= 255.0\n",
" return image"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "_ndyU8liiunJ",
"colab_type": "code",
"colab": {}
},
"source": [
"def load_and_preprocess_image(path):\n",
" image = tf.io.read_file(path)\n",
" return preprocess_image(image)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "CizGPN6jiunQ",
"colab_type": "text"
},
"source": [
"Demo:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "qWbSxMVIiunT",
"colab_type": "code",
"colab": {},
"outputId": "c04eed26-c7c2-4172-916f-e8a94d0fdb10"
},
"source": [
"img_path = all_train_paths[0]\n",
"label = all_train_labels[0]\n",
"\n",
"plt.imshow(load_and_preprocess_image(img_path))\n",
"plt.grid(False)\n",
"plt.title(label)\n",
"print()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bhbcPVEWiunZ",
"colab_type": "text"
},
"source": [
"#### Dataset building"
]
},
{
"cell_type": "code",
"metadata": {
"id": "93bsYZuIiuna",
"colab_type": "code",
"colab": {}
},
"source": [
"path_ds = tf.data.Dataset.from_tensor_slices(all_train_paths)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "C18_ShZdiung",
"colab_type": "code",
"colab": {}
},
"source": [
"image_ds = path_ds.map(load_and_preprocess_image)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "VLp3FI_Xiunm",
"colab_type": "code",
"colab": {}
},
"source": [
"label_ds = tf.data.Dataset.from_tensor_slices(all_train_labels)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "beIw5ip2iunr",
"colab_type": "code",
"colab": {}
},
"source": [
"data_label_ds = tf.data.Dataset.zip((image_ds, label_ds))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "5lISvuoQiuny",
"colab_type": "code",
"colab": {}
},
"source": [
"val_label_ds = data_label_ds.take(VAL_COUNT)\n",
"train_label_ds = data_label_ds.skip(VAL_COUNT)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "GBLTiRLbiun2",
"colab_type": "text"
},
"source": [
"#### Binding fetching rules"
]
},
{
"cell_type": "code",
"metadata": {
"id": "y7zhIF9Qiun3",
"colab_type": "code",
"colab": {}
},
"source": [
"#training data producer \n",
"tds = train_label_ds.shuffle(VAL_COUNT)\n",
"tds = tds.repeat()\n",
"tds = tds.batch(BATCH_SIZE)\n",
"tds = tds.prefetch(buffer_size=1)\n",
"#tds = tds.cache(filename='./save/')\n",
"\n",
"#validation data producer \n",
"vds = val_label_ds.shuffle(VAL_COUNT)\n",
"vds = vds.repeat()\n",
"vds = vds.batch(BATCH_SIZE)\n",
"vds = vds.prefetch(buffer_size=1)\n",
"#vds = vds.cache(filename='./saveVal/')"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "Hs4NUr-xiun-",
"colab_type": "text"
},
"source": [
"# DEMO"
]
},
{
"cell_type": "code",
"metadata": {
"id": "kvZhWIB6iuoA",
"colab_type": "code",
"colab": {}
},
"source": [
"model = tf.keras.Sequential([\n",
" tf.keras.layers.Conv2D(32, 3),\n",
" tf.keras.layers.MaxPool2D(),\n",
" tf.keras.layers.Flatten(),\n",
" tf.keras.layers.Dense(10, activation='softmax')])"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "MJZxMSnWiuoD",
"colab_type": "code",
"colab": {}
},
"source": [
"model.compile(optimizer=tf.optimizers.Adam(),\n",
" loss=tf.keras.losses.sparse_categorical_crossentropy,\n",
" metrics=[\"accuracy\"])"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "qIwRHW8tiuoR",
"colab_type": "code",
"colab": {},
"outputId": "5c8324b2-4e24-40ba-d1b8-53bb8eb5c509"
},
"source": [
"steps_per_epoch = (TRAIN_COUNT//BATCH_SIZE)\n",
"steps_per_epoch"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"295"
]
},
"metadata": {
"tags": []
},
"execution_count": 53
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "HwdaMagziuoV",
"colab_type": "code",
"colab": {},
"outputId": "aaa0dbee-a924-444f-dc00-85a112eea807"
},
"source": [
"steps_per_validation = VAL_COUNT//BATCH_SIZE\n",
"steps_per_validation"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"32"
]
},
"metadata": {
"tags": []
},
"execution_count": 54
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "zpTthO6-iuob",
"colab_type": "code",
"colab": {},
"outputId": "51b3688f-6de0-4fff-ddb5-b8c305c30b47"
},
"source": [
"model.fit(tds, epochs=EPOCHS, steps_per_epoch=steps_per_epoch, validation_data=vds, validation_steps=steps_per_validation)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Train for 295 steps, validate for 32 steps\n",
"Epoch 1/2\n",
"295/295 [==============================] - 95s 322ms/step - loss: 0.4204 - accuracy: 0.8878 - val_loss: 0.2835 - val_accuracy: 0.9146\n",
"Epoch 2/2\n",
"295/295 [==============================] - 92s 311ms/step - loss: 0.2968 - accuracy: 0.9153 - val_loss: 0.2747 - val_accuracy: 0.9229\n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x16bf29be1c8>"
]
},
"metadata": {
"tags": []
},
"execution_count": 55
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment