Created
December 4, 2018 11:45
-
-
Save woodsmur/01c263197096428d81608e08abe046ca to your computer and use it in GitHub Desktop.
cats-and-dogs.ipynb
This file contains hidden or 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": "cats-and-dogs.ipynb", | |
| "version": "0.3.2", | |
| "provenance": [], | |
| "include_colab_link": true | |
| }, | |
| "kernelspec": { | |
| "name": "python3", | |
| "display_name": "Python 3" | |
| } | |
| }, | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "view-in-github", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "<a href=\"https://colab.research.google.com/gist/woodsmur/01c263197096428d81608e08abe046ca/cats-and-dogs.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "b-yXjIJmvYeY", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 204 | |
| }, | |
| "outputId": "f31a1088-be4c-41f0-941c-655efd832328" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "!wget --no-check-certificate \\\n", | |
| " https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip \\\n", | |
| " -O /tmp/cats_and_dogs_filtered.zip" | |
| ], | |
| "execution_count": 1, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "--2018-12-04 10:22:44-- https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip\n", | |
| "Resolving storage.googleapis.com (storage.googleapis.com)... 74.125.141.128, 2607:f8b0:400c:c06::80\n", | |
| "Connecting to storage.googleapis.com (storage.googleapis.com)|74.125.141.128|:443... connected.\n", | |
| "HTTP request sent, awaiting response... 200 OK\n", | |
| "Length: 68606236 (65M) [application/zip]\n", | |
| "Saving to: ‘/tmp/cats_and_dogs_filtered.zip’\n", | |
| "\n", | |
| "/tmp/cats_and_dogs_ 100%[===================>] 65.43M 43.4MB/s in 1.5s \n", | |
| "\n", | |
| "2018-12-04 10:22:46 (43.4 MB/s) - ‘/tmp/cats_and_dogs_filtered.zip’ saved [68606236/68606236]\n", | |
| "\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "h2XKfa9xvjFo", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "import os\n", | |
| "import zipfile\n", | |
| "\n", | |
| "local_zip = '/tmp/cats_and_dogs_filtered.zip'\n", | |
| "zip_ref = zipfile.ZipFile(local_zip, 'r')\n", | |
| "zip_ref.extractall('/tmp')\n", | |
| "zip_ref.close()" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "3LTlzUtHvzuc", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "base_dir = '/tmp/cats_and_dogs_filtered'\n", | |
| "train_dir = os.path.join(base_dir, 'train')\n", | |
| "validation_dir = os.path.join(base_dir, 'validation')\n", | |
| "\n", | |
| "# Directory with our training cat pictures\n", | |
| "train_cats_dir = os.path.join(train_dir, 'cats')\n", | |
| "\n", | |
| "# Directory with our training dog pictures\n", | |
| "train_dogs_dir = os.path.join(train_dir, 'dogs')\n", | |
| "\n", | |
| "# Directory with our validation cat pictures\n", | |
| "validation_cats_dir = os.path.join(validation_dir, 'cats')\n", | |
| "\n", | |
| "# Directory with our validation dog pictures\n", | |
| "validation_dogs_dir = os.path.join(validation_dir, 'dogs')" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "3Pg5zqx2v1cC", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 71 | |
| }, | |
| "outputId": "ca20b486-d9b3-4b74-c0fd-f41999d4b66a" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "train_cat_fnames = os.listdir(train_cats_dir)\n", | |
| "print(train_cat_fnames[:10])\n", | |
| "\n", | |
| "train_dog_fnames = os.listdir(train_dogs_dir)\n", | |
| "train_dog_fnames.sort()\n", | |
| "print(train_dog_fnames[:10])" | |
| ], | |
| "execution_count": 5, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "['cat.123.jpg', 'cat.802.jpg', 'cat.421.jpg', 'cat.772.jpg', 'cat.636.jpg', 'cat.835.jpg', 'cat.690.jpg', 'cat.407.jpg', 'cat.610.jpg', 'cat.571.jpg']\n", | |
| "['dog.0.jpg', 'dog.1.jpg', 'dog.10.jpg', 'dog.100.jpg', 'dog.101.jpg', 'dog.102.jpg', 'dog.103.jpg', 'dog.104.jpg', 'dog.105.jpg', 'dog.106.jpg']\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "xyRZgQnTwECr", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 85 | |
| }, | |
| "outputId": "efa7da56-c99e-4186-ad0c-f7daca2199be" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "print('total training cat images:', len(os.listdir(train_cats_dir)))\n", | |
| "print('total training dog images:', len(os.listdir(train_dogs_dir)))\n", | |
| "print('total validation cat images:', len(os.listdir(validation_cats_dir)))\n", | |
| "print('total validation dog images:', len(os.listdir(validation_dogs_dir)))" | |
| ], | |
| "execution_count": 6, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "total training cat images: 1000\n", | |
| "total training dog images: 1000\n", | |
| "total validation cat images: 500\n", | |
| "total validation dog images: 500\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "Nz9W3blLyFd9", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 51 | |
| }, | |
| "outputId": "5f3fef02-70d9-447f-9d0f-019cc65a712f" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", | |
| "\n", | |
| "# All images will be rescaled by 1./255\n", | |
| "#train_datagen = ImageDataGenerator(rescale=1./255)\n", | |
| "train_datagen = ImageDataGenerator(\n", | |
| " rescale=1. / 255,\n", | |
| " shear_range=0.2,\n", | |
| " zoom_range=0.2,\n", | |
| " horizontal_flip=True)\n", | |
| "\n", | |
| "test_datagen = ImageDataGenerator(rescale=1./255)\n", | |
| "\n", | |
| "# Flow training images in batches of 20 using train_datagen generator\n", | |
| "train_generator = train_datagen.flow_from_directory(\n", | |
| " train_dir, # This is the source directory for training images\n", | |
| " target_size=(150, 150), # All images will be resized to 150x150\n", | |
| " batch_size=20,\n", | |
| " # Since we use binary_crossentropy loss, we need binary labels\n", | |
| " class_mode='binary')\n", | |
| "\n", | |
| "# Flow validation images in batches of 20 using test_datagen generator\n", | |
| "validation_generator = test_datagen.flow_from_directory(\n", | |
| " validation_dir,\n", | |
| " target_size=(150, 150),\n", | |
| " batch_size=20,\n", | |
| " class_mode='binary')\n", | |
| "\n" | |
| ], | |
| "execution_count": 8, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "Found 2000 images belonging to 2 classes.\n", | |
| "Found 1000 images belonging to 2 classes.\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "dkvM3ogVzIup", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "target_size = (150, 150)\n", | |
| "batch_size = 20\n", | |
| "epochs = 50\n", | |
| "\n", | |
| "top_model_weights_path = 'bottleneck_fc_model.h5'\n", | |
| "nb_train_samples = 2000\n", | |
| "nb_validation_samples = 1000" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "jYO-lWIUzRRS", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 88 | |
| }, | |
| "outputId": "135e1a83-d358-4e6a-b440-46c2517be014" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "import numpy as np\n", | |
| "\n", | |
| "datagen = ImageDataGenerator(rescale=1. / 255)\n", | |
| "\n", | |
| "# build the VGG16 network\n", | |
| "model = VGG16(include_top=False, weights='imagenet')\n", | |
| "\n", | |
| "generator = datagen.flow_from_directory(\n", | |
| " train_dir,\n", | |
| " target_size=target_size,\n", | |
| " batch_size=batch_size,\n", | |
| " class_mode=None,\n", | |
| " shuffle=False)\n", | |
| "print('train generator class: ', generator.class_indices)\n", | |
| "print(\"train filenames: \", generator.filenames)\n", | |
| "# like `extract_feature` function in early version from the book\n", | |
| "bottleneck_features_train = model.predict_generator(\n", | |
| " generator, nb_train_samples // batch_size)\n", | |
| "np.save(\n", | |
| " open('bottleneck_features_train.npy', 'wb'), bottleneck_features_train)\n" | |
| ], | |
| "execution_count": 12, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "Found 2000 images belonging to 2 classes.\n", | |
| "train generator class: {'cats': 0, 'dogs': 1}\n", | |
| "train filenames: ['cats/cat.0.jpg', 'cats/cat.1.jpg', 'cats/cat.10.jpg', 'cats/cat.100.jpg', 'cats/cat.101.jpg', 'cats/cat.102.jpg', 'cats/cat.103.jpg', 'cats/cat.104.jpg', 'cats/cat.105.jpg', 'cats/cat.106.jpg', 'cats/cat.107.jpg', 'cats/cat.108.jpg', 'cats/cat.109.jpg', 'cats/cat.11.jpg', 'cats/cat.110.jpg', 'cats/cat.111.jpg', 'cats/cat.112.jpg', 'cats/cat.113.jpg', 'cats/cat.114.jpg', 'cats/cat.115.jpg', 'cats/cat.116.jpg', 'cats/cat.117.jpg', 'cats/cat.118.jpg', 'cats/cat.119.jpg', 'cats/cat.12.jpg', 'cats/cat.120.jpg', 'cats/cat.121.jpg', 'cats/cat.122.jpg', 'cats/cat.123.jpg', 'cats/cat.124.jpg', 'cats/cat.125.jpg', 'cats/cat.126.jpg', 'cats/cat.127.jpg', 'cats/cat.128.jpg', 'cats/cat.129.jpg', 'cats/cat.13.jpg', 'cats/cat.130.jpg', 'cats/cat.131.jpg', 'cats/cat.132.jpg', 'cats/cat.133.jpg', 'cats/cat.134.jpg', 'cats/cat.135.jpg', 'cats/cat.136.jpg', 'cats/cat.137.jpg', 'cats/cat.138.jpg', 'cats/cat.139.jpg', 'cats/cat.14.jpg', 'cats/cat.140.jpg', 'cats/cat.141.jpg', 'cats/cat.142.jpg', 'cats/cat.143.jpg', 'cats/cat.144.jpg', 'cats/cat.145.jpg', 'cats/cat.146.jpg', 'cats/cat.147.jpg', 'cats/cat.148.jpg', 'cats/cat.149.jpg', 'cats/cat.15.jpg', 'cats/cat.150.jpg', 'cats/cat.151.jpg', 'cats/cat.152.jpg', 'cats/cat.153.jpg', 'cats/cat.154.jpg', 'cats/cat.155.jpg', 'cats/cat.156.jpg', 'cats/cat.157.jpg', 'cats/cat.158.jpg', 'cats/cat.159.jpg', 'cats/cat.16.jpg', 'cats/cat.160.jpg', 'cats/cat.161.jpg', 'cats/cat.162.jpg', 'cats/cat.163.jpg', 'cats/cat.164.jpg', 'cats/cat.165.jpg', 'cats/cat.166.jpg', 'cats/cat.167.jpg', 'cats/cat.168.jpg', 'cats/cat.169.jpg', 'cats/cat.17.jpg', 'cats/cat.170.jpg', 'cats/cat.171.jpg', 'cats/cat.172.jpg', 'cats/cat.173.jpg', 'cats/cat.174.jpg', 'cats/cat.175.jpg', 'cats/cat.176.jpg', 'cats/cat.177.jpg', 'cats/cat.178.jpg', 'cats/cat.179.jpg', 'cats/cat.18.jpg', 'cats/cat.180.jpg', 'cats/cat.181.jpg', 'cats/cat.182.jpg', 'cats/cat.183.jpg', 'cats/cat.184.jpg', 'cats/cat.185.jpg', 'cats/cat.186.jpg', 'cats/cat.187.jpg', 'cats/cat.188.jpg', 'cats/cat.189.jpg', 'cats/cat.19.jpg', 'cats/cat.190.jpg', 'cats/cat.191.jpg', 'cats/cat.192.jpg', 'cats/cat.193.jpg', 'cats/cat.194.jpg', 'cats/cat.195.jpg', 'cats/cat.196.jpg', 'cats/cat.197.jpg', 'cats/cat.198.jpg', 'cats/cat.199.jpg', 'cats/cat.2.jpg', 'cats/cat.20.jpg', 'cats/cat.200.jpg', 'cats/cat.201.jpg', 'cats/cat.202.jpg', 'cats/cat.203.jpg', 'cats/cat.204.jpg', 'cats/cat.205.jpg', 'cats/cat.206.jpg', 'cats/cat.207.jpg', 'cats/cat.208.jpg', 'cats/cat.209.jpg', 'cats/cat.21.jpg', 'cats/cat.210.jpg', 'cats/cat.211.jpg', 'cats/cat.212.jpg', 'cats/cat.213.jpg', 'cats/cat.214.jpg', 'cats/cat.215.jpg', 'cats/cat.216.jpg', 'cats/cat.217.jpg', 'cats/cat.218.jpg', 'cats/cat.219.jpg', 'cats/cat.22.jpg', 'cats/cat.220.jpg', 'cats/cat.221.jpg', 'cats/cat.222.jpg', 'cats/cat.223.jpg', 'cats/cat.224.jpg', 'cats/cat.225.jpg', 'cats/cat.226.jpg', 'cats/cat.227.jpg', 'cats/cat.228.jpg', 'cats/cat.229.jpg', 'cats/cat.23.jpg', 'cats/cat.230.jpg', 'cats/cat.231.jpg', 'cats/cat.232.jpg', 'cats/cat.233.jpg', 'cats/cat.234.jpg', 'cats/cat.235.jpg', 'cats/cat.236.jpg', 'cats/cat.237.jpg', 'cats/cat.238.jpg', 'cats/cat.239.jpg', 'cats/cat.24.jpg', 'cats/cat.240.jpg', 'cats/cat.241.jpg', 'cats/cat.242.jpg', 'cats/cat.243.jpg', 'cats/cat.244.jpg', 'cats/cat.245.jpg', 'cats/cat.246.jpg', 'cats/cat.247.jpg', 'cats/cat.248.jpg', 'cats/cat.249.jpg', 'cats/cat.25.jpg', 'cats/cat.250.jpg', 'cats/cat.251.jpg', 'cats/cat.252.jpg', 'cats/cat.253.jpg', 'cats/cat.254.jpg', 'cats/cat.255.jpg', 'cats/cat.256.jpg', 'cats/cat.257.jpg', 'cats/cat.258.jpg', 'cats/cat.259.jpg', 'cats/cat.26.jpg', 'cats/cat.260.jpg', 'cats/cat.261.jpg', 'cats/cat.262.jpg', 'cats/cat.263.jpg', 'cats/cat.264.jpg', 'cats/cat.265.jpg', 'cats/cat.266.jpg', 'cats/cat.267.jpg', 'cats/cat.268.jpg', 'cats/cat.269.jpg', 'cats/cat.27.jpg', 'cats/cat.270.jpg', 'cats/cat.271.jpg', 'cats/cat.272.jpg', 'cats/cat.273.jpg', 'cats/cat.274.jpg', 'cats/cat.275.jpg', 'cats/cat.276.jpg', 'cats/cat.277.jpg', 'cats/cat.278.jpg', 'cats/cat.279.jpg', 'cats/cat.28.jpg', 'cats/cat.280.jpg', 'cats/cat.281.jpg', 'cats/cat.282.jpg', 'cats/cat.283.jpg', 'cats/cat.284.jpg', 'cats/cat.285.jpg', 'cats/cat.286.jpg', 'cats/cat.287.jpg', 'cats/cat.288.jpg', 'cats/cat.289.jpg', 'cats/cat.29.jpg', 'cats/cat.290.jpg', 'cats/cat.291.jpg', 'cats/cat.292.jpg', 'cats/cat.293.jpg', 'cats/cat.294.jpg', 'cats/cat.295.jpg', 'cats/cat.296.jpg', 'cats/cat.297.jpg', 'cats/cat.298.jpg', 'cats/cat.299.jpg', 'cats/cat.3.jpg', 'cats/cat.30.jpg', 'cats/cat.300.jpg', 'cats/cat.301.jpg', 'cats/cat.302.jpg', 'cats/cat.303.jpg', 'cats/cat.304.jpg', 'cats/cat.305.jpg', 'cats/cat.306.jpg', 'cats/cat.307.jpg', 'cats/cat.308.jpg', 'cats/cat.309.jpg', 'cats/cat.31.jpg', 'cats/cat.310.jpg', 'cats/cat.311.jpg', 'cats/cat.312.jpg', 'cats/cat.313.jpg', 'cats/cat.314.jpg', 'cats/cat.315.jpg', 'cats/cat.316.jpg', 'cats/cat.317.jpg', 'cats/cat.318.jpg', 'cats/cat.319.jpg', 'cats/cat.32.jpg', 'cats/cat.320.jpg', 'cats/cat.321.jpg', 'cats/cat.322.jpg', 'cats/cat.323.jpg', 'cats/cat.324.jpg', 'cats/cat.325.jpg', 'cats/cat.326.jpg', 'cats/cat.327.jpg', 'cats/cat.328.jpg', 'cats/cat.329.jpg', 'cats/cat.33.jpg', 'cats/cat.330.jpg', 'cats/cat.331.jpg', 'cats/cat.332.jpg', 'cats/cat.333.jpg', 'cats/cat.334.jpg', 'cats/cat.335.jpg', 'cats/cat.336.jpg', 'cats/cat.337.jpg', 'cats/cat.338.jpg', 'cats/cat.339.jpg', 'cats/cat.34.jpg', 'cats/cat.340.jpg', 'cats/cat.341.jpg', 'cats/cat.342.jpg', 'cats/cat.343.jpg', 'cats/cat.344.jpg', 'cats/cat.345.jpg', 'cats/cat.346.jpg', 'cats/cat.347.jpg', 'cats/cat.348.jpg', 'cats/cat.349.jpg', 'cats/cat.35.jpg', 'cats/cat.350.jpg', 'cats/cat.351.jpg', 'cats/cat.352.jpg', 'cats/cat.353.jpg', 'cats/cat.354.jpg', 'cats/cat.355.jpg', 'cats/cat.356.jpg', 'cats/cat.357.jpg', 'cats/cat.358.jpg', 'cats/cat.359.jpg', 'cats/cat.36.jpg', 'cats/cat.360.jpg', 'cats/cat.361.jpg', 'cats/cat.362.jpg', 'cats/cat.363.jpg', 'cats/cat.364.jpg', 'cats/cat.365.jpg', 'cats/cat.366.jpg', 'cats/cat.367.jpg', 'cats/cat.368.jpg', 'cats/cat.369.jpg', 'cats/cat.37.jpg', 'cats/cat.370.jpg', 'cats/cat.371.jpg', 'cats/cat.372.jpg', 'cats/cat.373.jpg', 'cats/cat.374.jpg', 'cats/cat.375.jpg', 'cats/cat.376.jpg', 'cats/cat.377.jpg', 'cats/cat.378.jpg', 'cats/cat.379.jpg', 'cats/cat.38.jpg', 'cats/cat.380.jpg', 'cats/cat.381.jpg', 'cats/cat.382.jpg', 'cats/cat.383.jpg', 'cats/cat.384.jpg', 'cats/cat.385.jpg', 'cats/cat.386.jpg', 'cats/cat.387.jpg', 'cats/cat.388.jpg', 'cats/cat.389.jpg', 'cats/cat.39.jpg', 'cats/cat.390.jpg', 'cats/cat.391.jpg', 'cats/cat.392.jpg', 'cats/cat.393.jpg', 'cats/cat.394.jpg', 'cats/cat.395.jpg', 'cats/cat.396.jpg', 'cats/cat.397.jpg', 'cats/cat.398.jpg', 'cats/cat.399.jpg', 'cats/cat.4.jpg', 'cats/cat.40.jpg', 'cats/cat.400.jpg', 'cats/cat.401.jpg', 'cats/cat.402.jpg', 'cats/cat.403.jpg', 'cats/cat.404.jpg', 'cats/cat.405.jpg', 'cats/cat.406.jpg', 'cats/cat.407.jpg', 'cats/cat.408.jpg', 'cats/cat.409.jpg', 'cats/cat.41.jpg', 'cats/cat.410.jpg', 'cats/cat.411.jpg', 'cats/cat.412.jpg', 'cats/cat.413.jpg', 'cats/cat.414.jpg', 'cats/cat.415.jpg', 'cats/cat.416.jpg', 'cats/cat.417.jpg', 'cats/cat.418.jpg', 'cats/cat.419.jpg', 'cats/cat.42.jpg', 'cats/cat.420.jpg', 'cats/cat.421.jpg', 'cats/cat.422.jpg', 'cats/cat.423.jpg', 'cats/cat.424.jpg', 'cats/cat.425.jpg', 'cats/cat.426.jpg', 'cats/cat.427.jpg', 'cats/cat.428.jpg', 'cats/cat.429.jpg', 'cats/cat.43.jpg', 'cats/cat.430.jpg', 'cats/cat.431.jpg', 'cats/cat.432.jpg', 'cats/cat.433.jpg', 'cats/cat.434.jpg', 'cats/cat.435.jpg', 'cats/cat.436.jpg', 'cats/cat.437.jpg', 'cats/cat.438.jpg', 'cats/cat.439.jpg', 'cats/cat.44.jpg', 'cats/cat.440.jpg', 'cats/cat.441.jpg', 'cats/cat.442.jpg', 'cats/cat.443.jpg', 'cats/cat.444.jpg', 'cats/cat.445.jpg', 'cats/cat.446.jpg', 'cats/cat.447.jpg', 'cats/cat.448.jpg', 'cats/cat.449.jpg', 'cats/cat.45.jpg', 'cats/cat.450.jpg', 'cats/cat.451.jpg', 'cats/cat.452.jpg', 'cats/cat.453.jpg', 'cats/cat.454.jpg', 'cats/cat.455.jpg', 'cats/cat.456.jpg', 'cats/cat.457.jpg', 'cats/cat.458.jpg', 'cats/cat.459.jpg', 'cats/cat.46.jpg', 'cats/cat.460.jpg', 'cats/cat.461.jpg', 'cats/cat.462.jpg', 'cats/cat.463.jpg', 'cats/cat.464.jpg', 'cats/cat.465.jpg', 'cats/cat.466.jpg', 'cats/cat.467.jpg', 'cats/cat.468.jpg', 'cats/cat.469.jpg', 'cats/cat.47.jpg', 'cats/cat.470.jpg', 'cats/cat.471.jpg', 'cats/cat.472.jpg', 'cats/cat.473.jpg', 'cats/cat.474.jpg', 'cats/cat.475.jpg', 'cats/cat.476.jpg', 'cats/cat.477.jpg', 'cats/cat.478.jpg', 'cats/cat.479.jpg', 'cats/cat.48.jpg', 'cats/cat.480.jpg', 'cats/cat.481.jpg', 'cats/cat.482.jpg', 'cats/cat.483.jpg', 'cats/cat.484.jpg', 'cats/cat.485.jpg', 'cats/cat.486.jpg', 'cats/cat.487.jpg', 'cats/cat.488.jpg', 'cats/cat.489.jpg', 'cats/cat.49.jpg', 'cats/cat.490.jpg', 'cats/cat.491.jpg', 'cats/cat.492.jpg', 'cats/cat.493.jpg', 'cats/cat.494.jpg', 'cats/cat.495.jpg', 'cats/cat.496.jpg', 'cats/cat.497.jpg', 'cats/cat.498.jpg', 'cats/cat.499.jpg', 'cats/cat.5.jpg', 'cats/cat.50.jpg', 'cats/cat.500.jpg', 'cats/cat.501.jpg', 'cats/cat.502.jpg', 'cats/cat.503.jpg', 'cats/cat.504.jpg', 'cats/cat.505.jpg', 'cats/cat.506.jpg', 'cats/cat.507.jpg', 'cats/cat.508.jpg', 'cats/cat.509.jpg', 'cats/cat.51.jpg', 'cats/cat.510.jpg', 'cats/cat.511.jpg', 'cats/cat.512.jpg', 'cats/cat.513.jpg', 'cats/cat.514.jpg', 'cats/cat.515.jpg', 'cats/cat.516.jpg', 'cats/cat.517.jpg', 'cats/cat.518.jpg', 'cats/cat.519.jpg', 'cats/cat.52.jpg', 'cats/cat.520.jpg', 'cats/cat.521.jpg', 'cats/cat.522.jpg', 'cats/cat.523.jpg', 'cats/cat.524.jpg', 'cats/cat.525.jpg', 'cats/cat.526.jpg', 'cats/cat.527.jpg', 'cats/cat.528.jpg', 'cats/cat.529.jpg', 'cats/cat.53.jpg', 'cats/cat.530.jpg', 'cats/cat.531.jpg', 'cats/cat.532.jpg', 'cats/cat.533.jpg', 'cats/cat.534.jpg', 'cats/cat.535.jpg', 'cats/cat.536.jpg', 'cats/cat.537.jpg', 'cats/cat.538.jpg', 'cats/cat.539.jpg', 'cats/cat.54.jpg', 'cats/cat.540.jpg', 'cats/cat.541.jpg', 'cats/cat.542.jpg', 'cats/cat.543.jpg', 'cats/cat.544.jpg', 'cats/cat.545.jpg', 'cats/cat.546.jpg', 'cats/cat.547.jpg', 'cats/cat.548.jpg', 'cats/cat.549.jpg', 'cats/cat.55.jpg', 'cats/cat.550.jpg', 'cats/cat.551.jpg', 'cats/cat.552.jpg', 'cats/cat.553.jpg', 'cats/cat.554.jpg', 'cats/cat.555.jpg', 'cats/cat.556.jpg', 'cats/cat.557.jpg', 'cats/cat.558.jpg', 'cats/cat.559.jpg', 'cats/cat.56.jpg', 'cats/cat.560.jpg', 'cats/cat.561.jpg', 'cats/cat.562.jpg', 'cats/cat.563.jpg', 'cats/cat.564.jpg', 'cats/cat.565.jpg', 'cats/cat.566.jpg', 'cats/cat.567.jpg', 'cats/cat.568.jpg', 'cats/cat.569.jpg', 'cats/cat.57.jpg', 'cats/cat.570.jpg', 'cats/cat.571.jpg', 'cats/cat.572.jpg', 'cats/cat.573.jpg', 'cats/cat.574.jpg', 'cats/cat.575.jpg', 'cats/cat.576.jpg', 'cats/cat.577.jpg', 'cats/cat.578.jpg', 'cats/cat.579.jpg', 'cats/cat.58.jpg', 'cats/cat.580.jpg', 'cats/cat.581.jpg', 'cats/cat.582.jpg', 'cats/cat.583.jpg', 'cats/cat.584.jpg', 'cats/cat.585.jpg', 'cats/cat.586.jpg', 'cats/cat.587.jpg', 'cats/cat.588.jpg', 'cats/cat.589.jpg', 'cats/cat.59.jpg', 'cats/cat.590.jpg', 'cats/cat.591.jpg', 'cats/cat.592.jpg', 'cats/cat.593.jpg', 'cats/cat.594.jpg', 'cats/cat.595.jpg', 'cats/cat.596.jpg', 'cats/cat.597.jpg', 'cats/cat.598.jpg', 'cats/cat.599.jpg', 'cats/cat.6.jpg', 'cats/cat.60.jpg', 'cats/cat.600.jpg', 'cats/cat.601.jpg', 'cats/cat.602.jpg', 'cats/cat.603.jpg', 'cats/cat.604.jpg', 'cats/cat.605.jpg', 'cats/cat.606.jpg', 'cats/cat.607.jpg', 'cats/cat.608.jpg', 'cats/cat.609.jpg', 'cats/cat.61.jpg', 'cats/cat.610.jpg', 'cats/cat.611.jpg', 'cats/cat.612.jpg', 'cats/cat.613.jpg', 'cats/cat.614.jpg', 'cats/cat.615.jpg', 'cats/cat.616.jpg', 'cats/cat.617.jpg', 'cats/cat.618.jpg', 'cats/cat.619.jpg', 'cats/cat.62.jpg', 'cats/cat.620.jpg', 'cats/cat.621.jpg', 'cats/cat.622.jpg', 'cats/cat.623.jpg', 'cats/cat.624.jpg', 'cats/cat.625.jpg', 'cats/cat.626.jpg', 'cats/cat.627.jpg', 'cats/cat.628.jpg', 'cats/cat.629.jpg', 'cats/cat.63.jpg', 'cats/cat.630.jpg', 'cats/cat.631.jpg', 'cats/cat.632.jpg', 'cats/cat.633.jpg', 'cats/cat.634.jpg', 'cats/cat.635.jpg', 'cats/cat.636.jpg', 'cats/cat.637.jpg', 'cats/cat.638.jpg', 'cats/cat.639.jpg', 'cats/cat.64.jpg', 'cats/cat.640.jpg', 'cats/cat.641.jpg', 'cats/cat.642.jpg', 'cats/cat.643.jpg', 'cats/cat.644.jpg', 'cats/cat.645.jpg', 'cats/cat.646.jpg', 'cats/cat.647.jpg', 'cats/cat.648.jpg', 'cats/cat.649.jpg', 'cats/cat.65.jpg', 'cats/cat.650.jpg', 'cats/cat.651.jpg', 'cats/cat.652.jpg', 'cats/cat.653.jpg', 'cats/cat.654.jpg', 'cats/cat.655.jpg', 'cats/cat.656.jpg', 'cats/cat.657.jpg', 'cats/cat.658.jpg', 'cats/cat.659.jpg', 'cats/cat.66.jpg', 'cats/cat.660.jpg', 'cats/cat.661.jpg', 'cats/cat.662.jpg', 'cats/cat.663.jpg', 'cats/cat.664.jpg', 'cats/cat.665.jpg', 'cats/cat.666.jpg', 'cats/cat.667.jpg', 'cats/cat.668.jpg', 'cats/cat.669.jpg', 'cats/cat.67.jpg', 'cats/cat.670.jpg', 'cats/cat.671.jpg', 'cats/cat.672.jpg', 'cats/cat.673.jpg', 'cats/cat.674.jpg', 'cats/cat.675.jpg', 'cats/cat.676.jpg', 'cats/cat.677.jpg', 'cats/cat.678.jpg', 'cats/cat.679.jpg', 'cats/cat.68.jpg', 'cats/cat.680.jpg', 'cats/cat.681.jpg', 'cats/cat.682.jpg', 'cats/cat.683.jpg', 'cats/cat.684.jpg', 'cats/cat.685.jpg', 'cats/cat.686.jpg', 'cats/cat.687.jpg', 'cats/cat.688.jpg', 'cats/cat.689.jpg', 'cats/cat.69.jpg', 'cats/cat.690.jpg', 'cats/cat.691.jpg', 'cats/cat.692.jpg', 'cats/cat.693.jpg', 'cats/cat.694.jpg', 'cats/cat.695.jpg', 'cats/cat.696.jpg', 'cats/cat.697.jpg', 'cats/cat.698.jpg', 'cats/cat.699.jpg', 'cats/cat.7.jpg', 'cats/cat.70.jpg', 'cats/cat.700.jpg', 'cats/cat.701.jpg', 'cats/cat.702.jpg', 'cats/cat.703.jpg', 'cats/cat.704.jpg', 'cats/cat.705.jpg', 'cats/cat.706.jpg', 'cats/cat.707.jpg', 'cats/cat.708.jpg', 'cats/cat.709.jpg', 'cats/cat.71.jpg', 'cats/cat.710.jpg', 'cats/cat.711.jpg', 'cats/cat.712.jpg', 'cats/cat.713.jpg', 'cats/cat.714.jpg', 'cats/cat.715.jpg', 'cats/cat.716.jpg', 'cats/cat.717.jpg', 'cats/cat.718.jpg', 'cats/cat.719.jpg', 'cats/cat.72.jpg', 'cats/cat.720.jpg', 'cats/cat.721.jpg', 'cats/cat.722.jpg', 'cats/cat.723.jpg', 'cats/cat.724.jpg', 'cats/cat.725.jpg', 'cats/cat.726.jpg', 'cats/cat.727.jpg', 'cats/cat.728.jpg', 'cats/cat.729.jpg', 'cats/cat.73.jpg', 'cats/cat.730.jpg', 'cats/cat.731.jpg', 'cats/cat.732.jpg', 'cats/cat.733.jpg', 'cats/cat.734.jpg', 'cats/cat.735.jpg', 'cats/cat.736.jpg', 'cats/cat.737.jpg', 'cats/cat.738.jpg', 'cats/cat.739.jpg', 'cats/cat.74.jpg', 'cats/cat.740.jpg', 'cats/cat.741.jpg', 'cats/cat.742.jpg', 'cats/cat.743.jpg', 'cats/cat.744.jpg', 'cats/cat.745.jpg', 'cats/cat.746.jpg', 'cats/cat.747.jpg', 'cats/cat.748.jpg', 'cats/cat.749.jpg', 'cats/cat.75.jpg', 'cats/cat.750.jpg', 'cats/cat.751.jpg', 'cats/cat.752.jpg', 'cats/cat.753.jpg', 'cats/cat.754.jpg', 'cats/cat.755.jpg', 'cats/cat.756.jpg', 'cats/cat.757.jpg', 'cats/cat.758.jpg', 'cats/cat.759.jpg', 'cats/cat.76.jpg', 'cats/cat.760.jpg', 'cats/cat.761.jpg', 'cats/cat.762.jpg', 'cats/cat.763.jpg', 'cats/cat.764.jpg', 'cats/cat.765.jpg', 'cats/cat.766.jpg', 'cats/cat.767.jpg', 'cats/cat.768.jpg', 'cats/cat.769.jpg', 'cats/cat.77.jpg', 'cats/cat.770.jpg', 'cats/cat.771.jpg', 'cats/cat.772.jpg', 'cats/cat.773.jpg', 'cats/cat.774.jpg', 'cats/cat.775.jpg', 'cats/cat.776.jpg', 'cats/cat.777.jpg', 'cats/cat.778.jpg', 'cats/cat.779.jpg', 'cats/cat.78.jpg', 'cats/cat.780.jpg', 'cats/cat.781.jpg', 'cats/cat.782.jpg', 'cats/cat.783.jpg', 'cats/cat.784.jpg', 'cats/cat.785.jpg', 'cats/cat.786.jpg', 'cats/cat.787.jpg', 'cats/cat.788.jpg', 'cats/cat.789.jpg', 'cats/cat.79.jpg', 'cats/cat.790.jpg', 'cats/cat.791.jpg', 'cats/cat.792.jpg', 'cats/cat.793.jpg', 'cats/cat.794.jpg', 'cats/cat.795.jpg', 'cats/cat.796.jpg', 'cats/cat.797.jpg', 'cats/cat.798.jpg', 'cats/cat.799.jpg', 'cats/cat.8.jpg', 'cats/cat.80.jpg', 'cats/cat.800.jpg', 'cats/cat.801.jpg', 'cats/cat.802.jpg', 'cats/cat.803.jpg', 'cats/cat.804.jpg', 'cats/cat.805.jpg', 'cats/cat.806.jpg', 'cats/cat.807.jpg', 'cats/cat.808.jpg', 'cats/cat.809.jpg', 'cats/cat.81.jpg', 'cats/cat.810.jpg', 'cats/cat.811.jpg', 'cats/cat.812.jpg', 'cats/cat.813.jpg', 'cats/cat.814.jpg', 'cats/cat.815.jpg', 'cats/cat.816.jpg', 'cats/cat.817.jpg', 'cats/cat.818.jpg', 'cats/cat.819.jpg', 'cats/cat.82.jpg', 'cats/cat.820.jpg', 'cats/cat.821.jpg', 'cats/cat.822.jpg', 'cats/cat.823.jpg', 'cats/cat.824.jpg', 'cats/cat.825.jpg', 'cats/cat.826.jpg', 'cats/cat.827.jpg', 'cats/cat.828.jpg', 'cats/cat.829.jpg', 'cats/cat.83.jpg', 'cats/cat.830.jpg', 'cats/cat.831.jpg', 'cats/cat.832.jpg', 'cats/cat.833.jpg', 'cats/cat.834.jpg', 'cats/cat.835.jpg', 'cats/cat.836.jpg', 'cats/cat.837.jpg', 'cats/cat.838.jpg', 'cats/cat.839.jpg', 'cats/cat.84.jpg', 'cats/cat.840.jpg', 'cats/cat.841.jpg', 'cats/cat.842.jpg', 'cats/cat.843.jpg', 'cats/cat.844.jpg', 'cats/cat.845.jpg', 'cats/cat.846.jpg', 'cats/cat.847.jpg', 'cats/cat.848.jpg', 'cats/cat.849.jpg', 'cats/cat.85.jpg', 'cats/cat.850.jpg', 'cats/cat.851.jpg', 'cats/cat.852.jpg', 'cats/cat.853.jpg', 'cats/cat.854.jpg', 'cats/cat.855.jpg', 'cats/cat.856.jpg', 'cats/cat.857.jpg', 'cats/cat.858.jpg', 'cats/cat.859.jpg', 'cats/cat.86.jpg', 'cats/cat.860.jpg', 'cats/cat.861.jpg', 'cats/cat.862.jpg', 'cats/cat.863.jpg', 'cats/cat.864.jpg', 'cats/cat.865.jpg', 'cats/cat.866.jpg', 'cats/cat.867.jpg', 'cats/cat.868.jpg', 'cats/cat.869.jpg', 'cats/cat.87.jpg', 'cats/cat.870.jpg', 'cats/cat.871.jpg', 'cats/cat.872.jpg', 'cats/cat.873.jpg', 'cats/cat.874.jpg', 'cats/cat.875.jpg', 'cats/cat.876.jpg', 'cats/cat.877.jpg', 'cats/cat.878.jpg', 'cats/cat.879.jpg', 'cats/cat.88.jpg', 'cats/cat.880.jpg', 'cats/cat.881.jpg', 'cats/cat.882.jpg', 'cats/cat.883.jpg', 'cats/cat.884.jpg', 'cats/cat.885.jpg', 'cats/cat.886.jpg', 'cats/cat.887.jpg', 'cats/cat.888.jpg', 'cats/cat.889.jpg', 'cats/cat.89.jpg', 'cats/cat.890.jpg', 'cats/cat.891.jpg', 'cats/cat.892.jpg', 'cats/cat.893.jpg', 'cats/cat.894.jpg', 'cats/cat.895.jpg', 'cats/cat.896.jpg', 'cats/cat.897.jpg', 'cats/cat.898.jpg', 'cats/cat.899.jpg', 'cats/cat.9.jpg', 'cats/cat.90.jpg', 'cats/cat.900.jpg', 'cats/cat.901.jpg', 'cats/cat.902.jpg', 'cats/cat.903.jpg', 'cats/cat.904.jpg', 'cats/cat.905.jpg', 'cats/cat.906.jpg', 'cats/cat.907.jpg', 'cats/cat.908.jpg', 'cats/cat.909.jpg', 'cats/cat.91.jpg', 'cats/cat.910.jpg', 'cats/cat.911.jpg', 'cats/cat.912.jpg', 'cats/cat.913.jpg', 'cats/cat.914.jpg', 'cats/cat.915.jpg', 'cats/cat.916.jpg', 'cats/cat.917.jpg', 'cats/cat.918.jpg', 'cats/cat.919.jpg', 'cats/cat.92.jpg', 'cats/cat.920.jpg', 'cats/cat.921.jpg', 'cats/cat.922.jpg', 'cats/cat.923.jpg', 'cats/cat.924.jpg', 'cats/cat.925.jpg', 'cats/cat.926.jpg', 'cats/cat.927.jpg', 'cats/cat.928.jpg', 'cats/cat.929.jpg', 'cats/cat.93.jpg', 'cats/cat.930.jpg', 'cats/cat.931.jpg', 'cats/cat.932.jpg', 'cats/cat.933.jpg', 'cats/cat.934.jpg', 'cats/cat.935.jpg', 'cats/cat.936.jpg', 'cats/cat.937.jpg', 'cats/cat.938.jpg', 'cats/cat.939.jpg', 'cats/cat.94.jpg', 'cats/cat.940.jpg', 'cats/cat.941.jpg', 'cats/cat.942.jpg', 'cats/cat.943.jpg', 'cats/cat.944.jpg', 'cats/cat.945.jpg', 'cats/cat.946.jpg', 'cats/cat.947.jpg', 'cats/cat.948.jpg', 'cats/cat.949.jpg', 'cats/cat.95.jpg', 'cats/cat.950.jpg', 'cats/cat.951.jpg', 'cats/cat.952.jpg', 'cats/cat.953.jpg', 'cats/cat.954.jpg', 'cats/cat.955.jpg', 'cats/cat.956.jpg', 'cats/cat.957.jpg', 'cats/cat.958.jpg', 'cats/cat.959.jpg', 'cats/cat.96.jpg', 'cats/cat.960.jpg', 'cats/cat.961.jpg', 'cats/cat.962.jpg', 'cats/cat.963.jpg', 'cats/cat.964.jpg', 'cats/cat.965.jpg', 'cats/cat.966.jpg', 'cats/cat.967.jpg', 'cats/cat.968.jpg', 'cats/cat.969.jpg', 'cats/cat.97.jpg', 'cats/cat.970.jpg', 'cats/cat.971.jpg', 'cats/cat.972.jpg', 'cats/cat.973.jpg', 'cats/cat.974.jpg', 'cats/cat.975.jpg', 'cats/cat.976.jpg', 'cats/cat.977.jpg', 'cats/cat.978.jpg', 'cats/cat.979.jpg', 'cats/cat.98.jpg', 'cats/cat.980.jpg', 'cats/cat.981.jpg', 'cats/cat.982.jpg', 'cats/cat.983.jpg', 'cats/cat.984.jpg', 'cats/cat.985.jpg', 'cats/cat.986.jpg', 'cats/cat.987.jpg', 'cats/cat.988.jpg', 'cats/cat.989.jpg', 'cats/cat.99.jpg', 'cats/cat.990.jpg', 'cats/cat.991.jpg', 'cats/cat.992.jpg', 'cats/cat.993.jpg', 'cats/cat.994.jpg', 'cats/cat.995.jpg', 'cats/cat.996.jpg', 'cats/cat.997.jpg', 'cats/cat.998.jpg', 'cats/cat.999.jpg', 'dogs/dog.0.jpg', 'dogs/dog.1.jpg', 'dogs/dog.10.jpg', 'dogs/dog.100.jpg', 'dogs/dog.101.jpg', 'dogs/dog.102.jpg', 'dogs/dog.103.jpg', 'dogs/dog.104.jpg', 'dogs/dog.105.jpg', 'dogs/dog.106.jpg', 'dogs/dog.107.jpg', 'dogs/dog.108.jpg', 'dogs/dog.109.jpg', 'dogs/dog.11.jpg', 'dogs/dog.110.jpg', 'dogs/dog.111.jpg', 'dogs/dog.112.jpg', 'dogs/dog.113.jpg', 'dogs/dog.114.jpg', 'dogs/dog.115.jpg', 'dogs/dog.116.jpg', 'dogs/dog.117.jpg', 'dogs/dog.118.jpg', 'dogs/dog.119.jpg', 'dogs/dog.12.jpg', 'dogs/dog.120.jpg', 'dogs/dog.121.jpg', 'dogs/dog.122.jpg', 'dogs/dog.123.jpg', 'dogs/dog.124.jpg', 'dogs/dog.125.jpg', 'dogs/dog.126.jpg', 'dogs/dog.127.jpg', 'dogs/dog.128.jpg', 'dogs/dog.129.jpg', 'dogs/dog.13.jpg', 'dogs/dog.130.jpg', 'dogs/dog.131.jpg', 'dogs/dog.132.jpg', 'dogs/dog.133.jpg', 'dogs/dog.134.jpg', 'dogs/dog.135.jpg', 'dogs/dog.136.jpg', 'dogs/dog.137.jpg', 'dogs/dog.138.jpg', 'dogs/dog.139.jpg', 'dogs/dog.14.jpg', 'dogs/dog.140.jpg', 'dogs/dog.141.jpg', 'dogs/dog.142.jpg', 'dogs/dog.143.jpg', 'dogs/dog.144.jpg', 'dogs/dog.145.jpg', 'dogs/dog.146.jpg', 'dogs/dog.147.jpg', 'dogs/dog.148.jpg', 'dogs/dog.149.jpg', 'dogs/dog.15.jpg', 'dogs/dog.150.jpg', 'dogs/dog.151.jpg', 'dogs/dog.152.jpg', 'dogs/dog.153.jpg', 'dogs/dog.154.jpg', 'dogs/dog.155.jpg', 'dogs/dog.156.jpg', 'dogs/dog.157.jpg', 'dogs/dog.158.jpg', 'dogs/dog.159.jpg', 'dogs/dog.16.jpg', 'dogs/dog.160.jpg', 'dogs/dog.161.jpg', 'dogs/dog.162.jpg', 'dogs/dog.163.jpg', 'dogs/dog.164.jpg', 'dogs/dog.165.jpg', 'dogs/dog.166.jpg', 'dogs/dog.167.jpg', 'dogs/dog.168.jpg', 'dogs/dog.169.jpg', 'dogs/dog.17.jpg', 'dogs/dog.170.jpg', 'dogs/dog.171.jpg', 'dogs/dog.172.jpg', 'dogs/dog.173.jpg', 'dogs/dog.174.jpg', 'dogs/dog.175.jpg', 'dogs/dog.176.jpg', 'dogs/dog.177.jpg', 'dogs/dog.178.jpg', 'dogs/dog.179.jpg', 'dogs/dog.18.jpg', 'dogs/dog.180.jpg', 'dogs/dog.181.jpg', 'dogs/dog.182.jpg', 'dogs/dog.183.jpg', 'dogs/dog.184.jpg', 'dogs/dog.185.jpg', 'dogs/dog.186.jpg', 'dogs/dog.187.jpg', 'dogs/dog.188.jpg', 'dogs/dog.189.jpg', 'dogs/dog.19.jpg', 'dogs/dog.190.jpg', 'dogs/dog.191.jpg', 'dogs/dog.192.jpg', 'dogs/dog.193.jpg', 'dogs/dog.194.jpg', 'dogs/dog.195.jpg', 'dogs/dog.196.jpg', 'dogs/dog.197.jpg', 'dogs/dog.198.jpg', 'dogs/dog.199.jpg', 'dogs/dog.2.jpg', 'dogs/dog.20.jpg', 'dogs/dog.200.jpg', 'dogs/dog.201.jpg', 'dogs/dog.202.jpg', 'dogs/dog.203.jpg', 'dogs/dog.204.jpg', 'dogs/dog.205.jpg', 'dogs/dog.206.jpg', 'dogs/dog.207.jpg', 'dogs/dog.208.jpg', 'dogs/dog.209.jpg', 'dogs/dog.21.jpg', 'dogs/dog.210.jpg', 'dogs/dog.211.jpg', 'dogs/dog.212.jpg', 'dogs/dog.213.jpg', 'dogs/dog.214.jpg', 'dogs/dog.215.jpg', 'dogs/dog.216.jpg', 'dogs/dog.217.jpg', 'dogs/dog.218.jpg', 'dogs/dog.219.jpg', 'dogs/dog.22.jpg', 'dogs/dog.220.jpg', 'dogs/dog.221.jpg', 'dogs/dog.222.jpg', 'dogs/dog.223.jpg', 'dogs/dog.224.jpg', 'dogs/dog.225.jpg', 'dogs/dog.226.jpg', 'dogs/dog.227.jpg', 'dogs/dog.228.jpg', 'dogs/dog.229.jpg', 'dogs/dog.23.jpg', 'dogs/dog.230.jpg', 'dogs/dog.231.jpg', 'dogs/dog.232.jpg', 'dogs/dog.233.jpg', 'dogs/dog.234.jpg', 'dogs/dog.235.jpg', 'dogs/dog.236.jpg', 'dogs/dog.237.jpg', 'dogs/dog.238.jpg', 'dogs/dog.239.jpg', 'dogs/dog.24.jpg', 'dogs/dog.240.jpg', 'dogs/dog.241.jpg', 'dogs/dog.242.jpg', 'dogs/dog.243.jpg', 'dogs/dog.244.jpg', 'dogs/dog.245.jpg', 'dogs/dog.246.jpg', 'dogs/dog.247.jpg', 'dogs/dog.248.jpg', 'dogs/dog.249.jpg', 'dogs/dog.25.jpg', 'dogs/dog.250.jpg', 'dogs/dog.251.jpg', 'dogs/dog.252.jpg', 'dogs/dog.253.jpg', 'dogs/dog.254.jpg', 'dogs/dog.255.jpg', 'dogs/dog.256.jpg', 'dogs/dog.257.jpg', 'dogs/dog.258.jpg', 'dogs/dog.259.jpg', 'dogs/dog.26.jpg', 'dogs/dog.260.jpg', 'dogs/dog.261.jpg', 'dogs/dog.262.jpg', 'dogs/dog.263.jpg', 'dogs/dog.264.jpg', 'dogs/dog.265.jpg', 'dogs/dog.266.jpg', 'dogs/dog.267.jpg', 'dogs/dog.268.jpg', 'dogs/dog.269.jpg', 'dogs/dog.27.jpg', 'dogs/dog.270.jpg', 'dogs/dog.271.jpg', 'dogs/dog.272.jpg', 'dogs/dog.273.jpg', 'dogs/dog.274.jpg', 'dogs/dog.275.jpg', 'dogs/dog.276.jpg', 'dogs/dog.277.jpg', 'dogs/dog.278.jpg', 'dogs/dog.279.jpg', 'dogs/dog.28.jpg', 'dogs/dog.280.jpg', 'dogs/dog.281.jpg', 'dogs/dog.282.jpg', 'dogs/dog.283.jpg', 'dogs/dog.284.jpg', 'dogs/dog.285.jpg', 'dogs/dog.286.jpg', 'dogs/dog.287.jpg', 'dogs/dog.288.jpg', 'dogs/dog.289.jpg', 'dogs/dog.29.jpg', 'dogs/dog.290.jpg', 'dogs/dog.291.jpg', 'dogs/dog.292.jpg', 'dogs/dog.293.jpg', 'dogs/dog.294.jpg', 'dogs/dog.295.jpg', 'dogs/dog.296.jpg', 'dogs/dog.297.jpg', 'dogs/dog.298.jpg', 'dogs/dog.299.jpg', 'dogs/dog.3.jpg', 'dogs/dog.30.jpg', 'dogs/dog.300.jpg', 'dogs/dog.301.jpg', 'dogs/dog.302.jpg', 'dogs/dog.303.jpg', 'dogs/dog.304.jpg', 'dogs/dog.305.jpg', 'dogs/dog.306.jpg', 'dogs/dog.307.jpg', 'dogs/dog.308.jpg', 'dogs/dog.309.jpg', 'dogs/dog.31.jpg', 'dogs/dog.310.jpg', 'dogs/dog.311.jpg', 'dogs/dog.312.jpg', 'dogs/dog.313.jpg', 'dogs/dog.314.jpg', 'dogs/dog.315.jpg', 'dogs/dog.316.jpg', 'dogs/dog.317.jpg', 'dogs/dog.318.jpg', 'dogs/dog.319.jpg', 'dogs/dog.32.jpg', 'dogs/dog.320.jpg', 'dogs/dog.321.jpg', 'dogs/dog.322.jpg', 'dogs/dog.323.jpg', 'dogs/dog.324.jpg', 'dogs/dog.325.jpg', 'dogs/dog.326.jpg', 'dogs/dog.327.jpg', 'dogs/dog.328.jpg', 'dogs/dog.329.jpg', 'dogs/dog.33.jpg', 'dogs/dog.330.jpg', 'dogs/dog.331.jpg', 'dogs/dog.332.jpg', 'dogs/dog.333.jpg', 'dogs/dog.334.jpg', 'dogs/dog.335.jpg', 'dogs/dog.336.jpg', 'dogs/dog.337.jpg', 'dogs/dog.338.jpg', 'dogs/dog.339.jpg', 'dogs/dog.34.jpg', 'dogs/dog.340.jpg', 'dogs/dog.341.jpg', 'dogs/dog.342.jpg', 'dogs/dog.343.jpg', 'dogs/dog.344.jpg', 'dogs/dog.345.jpg', 'dogs/dog.346.jpg', 'dogs/dog.347.jpg', 'dogs/dog.348.jpg', 'dogs/dog.349.jpg', 'dogs/dog.35.jpg', 'dogs/dog.350.jpg', 'dogs/dog.351.jpg', 'dogs/dog.352.jpg', 'dogs/dog.353.jpg', 'dogs/dog.354.jpg', 'dogs/dog.355.jpg', 'dogs/dog.356.jpg', 'dogs/dog.357.jpg', 'dogs/dog.358.jpg', 'dogs/dog.359.jpg', 'dogs/dog.36.jpg', 'dogs/dog.360.jpg', 'dogs/dog.361.jpg', 'dogs/dog.362.jpg', 'dogs/dog.363.jpg', 'dogs/dog.364.jpg', 'dogs/dog.365.jpg', 'dogs/dog.366.jpg', 'dogs/dog.367.jpg', 'dogs/dog.368.jpg', 'dogs/dog.369.jpg', 'dogs/dog.37.jpg', 'dogs/dog.370.jpg', 'dogs/dog.371.jpg', 'dogs/dog.372.jpg', 'dogs/dog.373.jpg', 'dogs/dog.374.jpg', 'dogs/dog.375.jpg', 'dogs/dog.376.jpg', 'dogs/dog.377.jpg', 'dogs/dog.378.jpg', 'dogs/dog.379.jpg', 'dogs/dog.38.jpg', 'dogs/dog.380.jpg', 'dogs/dog.381.jpg', 'dogs/dog.382.jpg', 'dogs/dog.383.jpg', 'dogs/dog.384.jpg', 'dogs/dog.385.jpg', 'dogs/dog.386.jpg', 'dogs/dog.387.jpg', 'dogs/dog.388.jpg', 'dogs/dog.389.jpg', 'dogs/dog.39.jpg', 'dogs/dog.390.jpg', 'dogs/dog.391.jpg', 'dogs/dog.392.jpg', 'dogs/dog.393.jpg', 'dogs/dog.394.jpg', 'dogs/dog.395.jpg', 'dogs/dog.396.jpg', 'dogs/dog.397.jpg', 'dogs/dog.398.jpg', 'dogs/dog.399.jpg', 'dogs/dog.4.jpg', 'dogs/dog.40.jpg', 'dogs/dog.400.jpg', 'dogs/dog.401.jpg', 'dogs/dog.402.jpg', 'dogs/dog.403.jpg', 'dogs/dog.404.jpg', 'dogs/dog.405.jpg', 'dogs/dog.406.jpg', 'dogs/dog.407.jpg', 'dogs/dog.408.jpg', 'dogs/dog.409.jpg', 'dogs/dog.41.jpg', 'dogs/dog.410.jpg', 'dogs/dog.411.jpg', 'dogs/dog.412.jpg', 'dogs/dog.413.jpg', 'dogs/dog.414.jpg', 'dogs/dog.415.jpg', 'dogs/dog.416.jpg', 'dogs/dog.417.jpg', 'dogs/dog.418.jpg', 'dogs/dog.419.jpg', 'dogs/dog.42.jpg', 'dogs/dog.420.jpg', 'dogs/dog.421.jpg', 'dogs/dog.422.jpg', 'dogs/dog.423.jpg', 'dogs/dog.424.jpg', 'dogs/dog.425.jpg', 'dogs/dog.426.jpg', 'dogs/dog.427.jpg', 'dogs/dog.428.jpg', 'dogs/dog.429.jpg', 'dogs/dog.43.jpg', 'dogs/dog.430.jpg', 'dogs/dog.431.jpg', 'dogs/dog.432.jpg', 'dogs/dog.433.jpg', 'dogs/dog.434.jpg', 'dogs/dog.435.jpg', 'dogs/dog.436.jpg', 'dogs/dog.437.jpg', 'dogs/dog.438.jpg', 'dogs/dog.439.jpg', 'dogs/dog.44.jpg', 'dogs/dog.440.jpg', 'dogs/dog.441.jpg', 'dogs/dog.442.jpg', 'dogs/dog.443.jpg', 'dogs/dog.444.jpg', 'dogs/dog.445.jpg', 'dogs/dog.446.jpg', 'dogs/dog.447.jpg', 'dogs/dog.448.jpg', 'dogs/dog.449.jpg', 'dogs/dog.45.jpg', 'dogs/dog.450.jpg', 'dogs/dog.451.jpg', 'dogs/dog.452.jpg', 'dogs/dog.453.jpg', 'dogs/dog.454.jpg', 'dogs/dog.455.jpg', 'dogs/dog.456.jpg', 'dogs/dog.457.jpg', 'dogs/dog.458.jpg', 'dogs/dog.459.jpg', 'dogs/dog.46.jpg', 'dogs/dog.460.jpg', 'dogs/dog.461.jpg', 'dogs/dog.462.jpg', 'dogs/dog.463.jpg', 'dogs/dog.464.jpg', 'dogs/dog.465.jpg', 'dogs/dog.466.jpg', 'dogs/dog.467.jpg', 'dogs/dog.468.jpg', 'dogs/dog.469.jpg', 'dogs/dog.47.jpg', 'dogs/dog.470.jpg', 'dogs/dog.471.jpg', 'dogs/dog.472.jpg', 'dogs/dog.473.jpg', 'dogs/dog.474.jpg', 'dogs/dog.475.jpg', 'dogs/dog.476.jpg', 'dogs/dog.477.jpg', 'dogs/dog.478.jpg', 'dogs/dog.479.jpg', 'dogs/dog.48.jpg', 'dogs/dog.480.jpg', 'dogs/dog.481.jpg', 'dogs/dog.482.jpg', 'dogs/dog.483.jpg', 'dogs/dog.484.jpg', 'dogs/dog.485.jpg', 'dogs/dog.486.jpg', 'dogs/dog.487.jpg', 'dogs/dog.488.jpg', 'dogs/dog.489.jpg', 'dogs/dog.49.jpg', 'dogs/dog.490.jpg', 'dogs/dog.491.jpg', 'dogs/dog.492.jpg', 'dogs/dog.493.jpg', 'dogs/dog.494.jpg', 'dogs/dog.495.jpg', 'dogs/dog.496.jpg', 'dogs/dog.497.jpg', 'dogs/dog.498.jpg', 'dogs/dog.499.jpg', 'dogs/dog.5.jpg', 'dogs/dog.50.jpg', 'dogs/dog.500.jpg', 'dogs/dog.501.jpg', 'dogs/dog.502.jpg', 'dogs/dog.503.jpg', 'dogs/dog.504.jpg', 'dogs/dog.505.jpg', 'dogs/dog.506.jpg', 'dogs/dog.507.jpg', 'dogs/dog.508.jpg', 'dogs/dog.509.jpg', 'dogs/dog.51.jpg', 'dogs/dog.510.jpg', 'dogs/dog.511.jpg', 'dogs/dog.512.jpg', 'dogs/dog.513.jpg', 'dogs/dog.514.jpg', 'dogs/dog.515.jpg', 'dogs/dog.516.jpg', 'dogs/dog.517.jpg', 'dogs/dog.518.jpg', 'dogs/dog.519.jpg', 'dogs/dog.52.jpg', 'dogs/dog.520.jpg', 'dogs/dog.521.jpg', 'dogs/dog.522.jpg', 'dogs/dog.523.jpg', 'dogs/dog.524.jpg', 'dogs/dog.525.jpg', 'dogs/dog.526.jpg', 'dogs/dog.527.jpg', 'dogs/dog.528.jpg', 'dogs/dog.529.jpg', 'dogs/dog.53.jpg', 'dogs/dog.530.jpg', 'dogs/dog.531.jpg', 'dogs/dog.532.jpg', 'dogs/dog.533.jpg', 'dogs/dog.534.jpg', 'dogs/dog.535.jpg', 'dogs/dog.536.jpg', 'dogs/dog.537.jpg', 'dogs/dog.538.jpg', 'dogs/dog.539.jpg', 'dogs/dog.54.jpg', 'dogs/dog.540.jpg', 'dogs/dog.541.jpg', 'dogs/dog.542.jpg', 'dogs/dog.543.jpg', 'dogs/dog.544.jpg', 'dogs/dog.545.jpg', 'dogs/dog.546.jpg', 'dogs/dog.547.jpg', 'dogs/dog.548.jpg', 'dogs/dog.549.jpg', 'dogs/dog.55.jpg', 'dogs/dog.550.jpg', 'dogs/dog.551.jpg', 'dogs/dog.552.jpg', 'dogs/dog.553.jpg', 'dogs/dog.554.jpg', 'dogs/dog.555.jpg', 'dogs/dog.556.jpg', 'dogs/dog.557.jpg', 'dogs/dog.558.jpg', 'dogs/dog.559.jpg', 'dogs/dog.56.jpg', 'dogs/dog.560.jpg', 'dogs/dog.561.jpg', 'dogs/dog.562.jpg', 'dogs/dog.563.jpg', 'dogs/dog.564.jpg', 'dogs/dog.565.jpg', 'dogs/dog.566.jpg', 'dogs/dog.567.jpg', 'dogs/dog.568.jpg', 'dogs/dog.569.jpg', 'dogs/dog.57.jpg', 'dogs/dog.570.jpg', 'dogs/dog.571.jpg', 'dogs/dog.572.jpg', 'dogs/dog.573.jpg', 'dogs/dog.574.jpg', 'dogs/dog.575.jpg', 'dogs/dog.576.jpg', 'dogs/dog.577.jpg', 'dogs/dog.578.jpg', 'dogs/dog.579.jpg', 'dogs/dog.58.jpg', 'dogs/dog.580.jpg', 'dogs/dog.581.jpg', 'dogs/dog.582.jpg', 'dogs/dog.583.jpg', 'dogs/dog.584.jpg', 'dogs/dog.585.jpg', 'dogs/dog.586.jpg', 'dogs/dog.587.jpg', 'dogs/dog.588.jpg', 'dogs/dog.589.jpg', 'dogs/dog.59.jpg', 'dogs/dog.590.jpg', 'dogs/dog.591.jpg', 'dogs/dog.592.jpg', 'dogs/dog.593.jpg', 'dogs/dog.594.jpg', 'dogs/dog.595.jpg', 'dogs/dog.596.jpg', 'dogs/dog.597.jpg', 'dogs/dog.598.jpg', 'dogs/dog.599.jpg', 'dogs/dog.6.jpg', 'dogs/dog.60.jpg', 'dogs/dog.600.jpg', 'dogs/dog.601.jpg', 'dogs/dog.602.jpg', 'dogs/dog.603.jpg', 'dogs/dog.604.jpg', 'dogs/dog.605.jpg', 'dogs/dog.606.jpg', 'dogs/dog.607.jpg', 'dogs/dog.608.jpg', 'dogs/dog.609.jpg', 'dogs/dog.61.jpg', 'dogs/dog.610.jpg', 'dogs/dog.611.jpg', 'dogs/dog.612.jpg', 'dogs/dog.613.jpg', 'dogs/dog.614.jpg', 'dogs/dog.615.jpg', 'dogs/dog.616.jpg', 'dogs/dog.617.jpg', 'dogs/dog.618.jpg', 'dogs/dog.619.jpg', 'dogs/dog.62.jpg', 'dogs/dog.620.jpg', 'dogs/dog.621.jpg', 'dogs/dog.622.jpg', 'dogs/dog.623.jpg', 'dogs/dog.624.jpg', 'dogs/dog.625.jpg', 'dogs/dog.626.jpg', 'dogs/dog.627.jpg', 'dogs/dog.628.jpg', 'dogs/dog.629.jpg', 'dogs/dog.63.jpg', 'dogs/dog.630.jpg', 'dogs/dog.631.jpg', 'dogs/dog.632.jpg', 'dogs/dog.633.jpg', 'dogs/dog.634.jpg', 'dogs/dog.635.jpg', 'dogs/dog.636.jpg', 'dogs/dog.637.jpg', 'dogs/dog.638.jpg', 'dogs/dog.639.jpg', 'dogs/dog.64.jpg', 'dogs/dog.640.jpg', 'dogs/dog.641.jpg', 'dogs/dog.642.jpg', 'dogs/dog.643.jpg', 'dogs/dog.644.jpg', 'dogs/dog.645.jpg', 'dogs/dog.646.jpg', 'dogs/dog.647.jpg', 'dogs/dog.648.jpg', 'dogs/dog.649.jpg', 'dogs/dog.65.jpg', 'dogs/dog.650.jpg', 'dogs/dog.651.jpg', 'dogs/dog.652.jpg', 'dogs/dog.653.jpg', 'dogs/dog.654.jpg', 'dogs/dog.655.jpg', 'dogs/dog.656.jpg', 'dogs/dog.657.jpg', 'dogs/dog.658.jpg', 'dogs/dog.659.jpg', 'dogs/dog.66.jpg', 'dogs/dog.660.jpg', 'dogs/dog.661.jpg', 'dogs/dog.662.jpg', 'dogs/dog.663.jpg', 'dogs/dog.664.jpg', 'dogs/dog.665.jpg', 'dogs/dog.666.jpg', 'dogs/dog.667.jpg', 'dogs/dog.668.jpg', 'dogs/dog.669.jpg', 'dogs/dog.67.jpg', 'dogs/dog.670.jpg', 'dogs/dog.671.jpg', 'dogs/dog.672.jpg', 'dogs/dog.673.jpg', 'dogs/dog.674.jpg', 'dogs/dog.675.jpg', 'dogs/dog.676.jpg', 'dogs/dog.677.jpg', 'dogs/dog.678.jpg', 'dogs/dog.679.jpg', 'dogs/dog.68.jpg', 'dogs/dog.680.jpg', 'dogs/dog.681.jpg', 'dogs/dog.682.jpg', 'dogs/dog.683.jpg', 'dogs/dog.684.jpg', 'dogs/dog.685.jpg', 'dogs/dog.686.jpg', 'dogs/dog.687.jpg', 'dogs/dog.688.jpg', 'dogs/dog.689.jpg', 'dogs/dog.69.jpg', 'dogs/dog.690.jpg', 'dogs/dog.691.jpg', 'dogs/dog.692.jpg', 'dogs/dog.693.jpg', 'dogs/dog.694.jpg', 'dogs/dog.695.jpg', 'dogs/dog.696.jpg', 'dogs/dog.697.jpg', 'dogs/dog.698.jpg', 'dogs/dog.699.jpg', 'dogs/dog.7.jpg', 'dogs/dog.70.jpg', 'dogs/dog.700.jpg', 'dogs/dog.701.jpg', 'dogs/dog.702.jpg', 'dogs/dog.703.jpg', 'dogs/dog.704.jpg', 'dogs/dog.705.jpg', 'dogs/dog.706.jpg', 'dogs/dog.707.jpg', 'dogs/dog.708.jpg', 'dogs/dog.709.jpg', 'dogs/dog.71.jpg', 'dogs/dog.710.jpg', 'dogs/dog.711.jpg', 'dogs/dog.712.jpg', 'dogs/dog.713.jpg', 'dogs/dog.714.jpg', 'dogs/dog.715.jpg', 'dogs/dog.716.jpg', 'dogs/dog.717.jpg', 'dogs/dog.718.jpg', 'dogs/dog.719.jpg', 'dogs/dog.72.jpg', 'dogs/dog.720.jpg', 'dogs/dog.721.jpg', 'dogs/dog.722.jpg', 'dogs/dog.723.jpg', 'dogs/dog.724.jpg', 'dogs/dog.725.jpg', 'dogs/dog.726.jpg', 'dogs/dog.727.jpg', 'dogs/dog.728.jpg', 'dogs/dog.729.jpg', 'dogs/dog.73.jpg', 'dogs/dog.730.jpg', 'dogs/dog.731.jpg', 'dogs/dog.732.jpg', 'dogs/dog.733.jpg', 'dogs/dog.734.jpg', 'dogs/dog.735.jpg', 'dogs/dog.736.jpg', 'dogs/dog.737.jpg', 'dogs/dog.738.jpg', 'dogs/dog.739.jpg', 'dogs/dog.74.jpg', 'dogs/dog.740.jpg', 'dogs/dog.741.jpg', 'dogs/dog.742.jpg', 'dogs/dog.743.jpg', 'dogs/dog.744.jpg', 'dogs/dog.745.jpg', 'dogs/dog.746.jpg', 'dogs/dog.747.jpg', 'dogs/dog.748.jpg', 'dogs/dog.749.jpg', 'dogs/dog.75.jpg', 'dogs/dog.750.jpg', 'dogs/dog.751.jpg', 'dogs/dog.752.jpg', 'dogs/dog.753.jpg', 'dogs/dog.754.jpg', 'dogs/dog.755.jpg', 'dogs/dog.756.jpg', 'dogs/dog.757.jpg', 'dogs/dog.758.jpg', 'dogs/dog.759.jpg', 'dogs/dog.76.jpg', 'dogs/dog.760.jpg', 'dogs/dog.761.jpg', 'dogs/dog.762.jpg', 'dogs/dog.763.jpg', 'dogs/dog.764.jpg', 'dogs/dog.765.jpg', 'dogs/dog.766.jpg', 'dogs/dog.767.jpg', 'dogs/dog.768.jpg', 'dogs/dog.769.jpg', 'dogs/dog.77.jpg', 'dogs/dog.770.jpg', 'dogs/dog.771.jpg', 'dogs/dog.772.jpg', 'dogs/dog.773.jpg', 'dogs/dog.774.jpg', 'dogs/dog.775.jpg', 'dogs/dog.776.jpg', 'dogs/dog.777.jpg', 'dogs/dog.778.jpg', 'dogs/dog.779.jpg', 'dogs/dog.78.jpg', 'dogs/dog.780.jpg', 'dogs/dog.781.jpg', 'dogs/dog.782.jpg', 'dogs/dog.783.jpg', 'dogs/dog.784.jpg', 'dogs/dog.785.jpg', 'dogs/dog.786.jpg', 'dogs/dog.787.jpg', 'dogs/dog.788.jpg', 'dogs/dog.789.jpg', 'dogs/dog.79.jpg', 'dogs/dog.790.jpg', 'dogs/dog.791.jpg', 'dogs/dog.792.jpg', 'dogs/dog.793.jpg', 'dogs/dog.794.jpg', 'dogs/dog.795.jpg', 'dogs/dog.796.jpg', 'dogs/dog.797.jpg', 'dogs/dog.798.jpg', 'dogs/dog.799.jpg', 'dogs/dog.8.jpg', 'dogs/dog.80.jpg', 'dogs/dog.800.jpg', 'dogs/dog.801.jpg', 'dogs/dog.802.jpg', 'dogs/dog.803.jpg', 'dogs/dog.804.jpg', 'dogs/dog.805.jpg', 'dogs/dog.806.jpg', 'dogs/dog.807.jpg', 'dogs/dog.808.jpg', 'dogs/dog.809.jpg', 'dogs/dog.81.jpg', 'dogs/dog.810.jpg', 'dogs/dog.811.jpg', 'dogs/dog.812.jpg', 'dogs/dog.813.jpg', 'dogs/dog.814.jpg', 'dogs/dog.815.jpg', 'dogs/dog.816.jpg', 'dogs/dog.817.jpg', 'dogs/dog.818.jpg', 'dogs/dog.819.jpg', 'dogs/dog.82.jpg', 'dogs/dog.820.jpg', 'dogs/dog.821.jpg', 'dogs/dog.822.jpg', 'dogs/dog.823.jpg', 'dogs/dog.824.jpg', 'dogs/dog.825.jpg', 'dogs/dog.826.jpg', 'dogs/dog.827.jpg', 'dogs/dog.828.jpg', 'dogs/dog.829.jpg', 'dogs/dog.83.jpg', 'dogs/dog.830.jpg', 'dogs/dog.831.jpg', 'dogs/dog.832.jpg', 'dogs/dog.833.jpg', 'dogs/dog.834.jpg', 'dogs/dog.835.jpg', 'dogs/dog.836.jpg', 'dogs/dog.837.jpg', 'dogs/dog.838.jpg', 'dogs/dog.839.jpg', 'dogs/dog.84.jpg', 'dogs/dog.840.jpg', 'dogs/dog.841.jpg', 'dogs/dog.842.jpg', 'dogs/dog.843.jpg', 'dogs/dog.844.jpg', 'dogs/dog.845.jpg', 'dogs/dog.846.jpg', 'dogs/dog.847.jpg', 'dogs/dog.848.jpg', 'dogs/dog.849.jpg', 'dogs/dog.85.jpg', 'dogs/dog.850.jpg', 'dogs/dog.851.jpg', 'dogs/dog.852.jpg', 'dogs/dog.853.jpg', 'dogs/dog.854.jpg', 'dogs/dog.855.jpg', 'dogs/dog.856.jpg', 'dogs/dog.857.jpg', 'dogs/dog.858.jpg', 'dogs/dog.859.jpg', 'dogs/dog.86.jpg', 'dogs/dog.860.jpg', 'dogs/dog.861.jpg', 'dogs/dog.862.jpg', 'dogs/dog.863.jpg', 'dogs/dog.864.jpg', 'dogs/dog.865.jpg', 'dogs/dog.866.jpg', 'dogs/dog.867.jpg', 'dogs/dog.868.jpg', 'dogs/dog.869.jpg', 'dogs/dog.87.jpg', 'dogs/dog.870.jpg', 'dogs/dog.871.jpg', 'dogs/dog.872.jpg', 'dogs/dog.873.jpg', 'dogs/dog.874.jpg', 'dogs/dog.875.jpg', 'dogs/dog.876.jpg', 'dogs/dog.877.jpg', 'dogs/dog.878.jpg', 'dogs/dog.879.jpg', 'dogs/dog.88.jpg', 'dogs/dog.880.jpg', 'dogs/dog.881.jpg', 'dogs/dog.882.jpg', 'dogs/dog.883.jpg', 'dogs/dog.884.jpg', 'dogs/dog.885.jpg', 'dogs/dog.886.jpg', 'dogs/dog.887.jpg', 'dogs/dog.888.jpg', 'dogs/dog.889.jpg', 'dogs/dog.89.jpg', 'dogs/dog.890.jpg', 'dogs/dog.891.jpg', 'dogs/dog.892.jpg', 'dogs/dog.893.jpg', 'dogs/dog.894.jpg', 'dogs/dog.895.jpg', 'dogs/dog.896.jpg', 'dogs/dog.897.jpg', 'dogs/dog.898.jpg', 'dogs/dog.899.jpg', 'dogs/dog.9.jpg', 'dogs/dog.90.jpg', 'dogs/dog.900.jpg', 'dogs/dog.901.jpg', 'dogs/dog.902.jpg', 'dogs/dog.903.jpg', 'dogs/dog.904.jpg', 'dogs/dog.905.jpg', 'dogs/dog.906.jpg', 'dogs/dog.907.jpg', 'dogs/dog.908.jpg', 'dogs/dog.909.jpg', 'dogs/dog.91.jpg', 'dogs/dog.910.jpg', 'dogs/dog.911.jpg', 'dogs/dog.912.jpg', 'dogs/dog.913.jpg', 'dogs/dog.914.jpg', 'dogs/dog.915.jpg', 'dogs/dog.916.jpg', 'dogs/dog.917.jpg', 'dogs/dog.918.jpg', 'dogs/dog.919.jpg', 'dogs/dog.92.jpg', 'dogs/dog.920.jpg', 'dogs/dog.921.jpg', 'dogs/dog.922.jpg', 'dogs/dog.923.jpg', 'dogs/dog.924.jpg', 'dogs/dog.925.jpg', 'dogs/dog.926.jpg', 'dogs/dog.927.jpg', 'dogs/dog.928.jpg', 'dogs/dog.929.jpg', 'dogs/dog.93.jpg', 'dogs/dog.930.jpg', 'dogs/dog.931.jpg', 'dogs/dog.932.jpg', 'dogs/dog.933.jpg', 'dogs/dog.934.jpg', 'dogs/dog.935.jpg', 'dogs/dog.936.jpg', 'dogs/dog.937.jpg', 'dogs/dog.938.jpg', 'dogs/dog.939.jpg', 'dogs/dog.94.jpg', 'dogs/dog.940.jpg', 'dogs/dog.941.jpg', 'dogs/dog.942.jpg', 'dogs/dog.943.jpg', 'dogs/dog.944.jpg', 'dogs/dog.945.jpg', 'dogs/dog.946.jpg', 'dogs/dog.947.jpg', 'dogs/dog.948.jpg', 'dogs/dog.949.jpg', 'dogs/dog.95.jpg', 'dogs/dog.950.jpg', 'dogs/dog.951.jpg', 'dogs/dog.952.jpg', 'dogs/dog.953.jpg', 'dogs/dog.954.jpg', 'dogs/dog.955.jpg', 'dogs/dog.956.jpg', 'dogs/dog.957.jpg', 'dogs/dog.958.jpg', 'dogs/dog.959.jpg', 'dogs/dog.96.jpg', 'dogs/dog.960.jpg', 'dogs/dog.961.jpg', 'dogs/dog.962.jpg', 'dogs/dog.963.jpg', 'dogs/dog.964.jpg', 'dogs/dog.965.jpg', 'dogs/dog.966.jpg', 'dogs/dog.967.jpg', 'dogs/dog.968.jpg', 'dogs/dog.969.jpg', 'dogs/dog.97.jpg', 'dogs/dog.970.jpg', 'dogs/dog.971.jpg', 'dogs/dog.972.jpg', 'dogs/dog.973.jpg', 'dogs/dog.974.jpg', 'dogs/dog.975.jpg', 'dogs/dog.976.jpg', 'dogs/dog.977.jpg', 'dogs/dog.978.jpg', 'dogs/dog.979.jpg', 'dogs/dog.98.jpg', 'dogs/dog.980.jpg', 'dogs/dog.981.jpg', 'dogs/dog.982.jpg', 'dogs/dog.983.jpg', 'dogs/dog.984.jpg', 'dogs/dog.985.jpg', 'dogs/dog.986.jpg', 'dogs/dog.987.jpg', 'dogs/dog.988.jpg', 'dogs/dog.989.jpg', 'dogs/dog.99.jpg', 'dogs/dog.990.jpg', 'dogs/dog.991.jpg', 'dogs/dog.992.jpg', 'dogs/dog.993.jpg', 'dogs/dog.994.jpg', 'dogs/dog.995.jpg', 'dogs/dog.996.jpg', 'dogs/dog.997.jpg', 'dogs/dog.998.jpg', 'dogs/dog.999.jpg']\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "H61lNYcQ9J6w", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 34 | |
| }, | |
| "outputId": "821d93c2-cebd-4bef-cab2-e883496ca692" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "!ls -l bottleneck_features_train.npy" | |
| ], | |
| "execution_count": 13, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "-rw-r--r-- 1 root root 65536128 Dec 4 11:20 bottleneck_features_train.npy\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "JIVtyKFe65cM", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 88 | |
| }, | |
| "outputId": "f158504f-d0f1-4060-dbdf-a89817ae5741" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "\n", | |
| "generator = datagen.flow_from_directory(\n", | |
| " validation_dir,\n", | |
| " target_size=target_size,\n", | |
| " batch_size=batch_size,\n", | |
| " class_mode=None,\n", | |
| " shuffle=False)\n", | |
| "print('validation generator class: ', generator.class_indices)\n", | |
| "print(\"validation filenames: \", generator.filenames)\n", | |
| "bottleneck_features_validation = model.predict_generator(\n", | |
| " generator, nb_validation_samples // batch_size)\n", | |
| "np.save(\n", | |
| " open('bottleneck_features_validation.npy', 'wb'),\n", | |
| " bottleneck_features_validation)" | |
| ], | |
| "execution_count": 14, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "Found 1000 images belonging to 2 classes.\n", | |
| "validation generator class: {'cats': 0, 'dogs': 1}\n", | |
| "validation filenames: ['cats/cat.2000.jpg', 'cats/cat.2001.jpg', 'cats/cat.2002.jpg', 'cats/cat.2003.jpg', 'cats/cat.2004.jpg', 'cats/cat.2005.jpg', 'cats/cat.2006.jpg', 'cats/cat.2007.jpg', 'cats/cat.2008.jpg', 'cats/cat.2009.jpg', 'cats/cat.2010.jpg', 'cats/cat.2011.jpg', 'cats/cat.2012.jpg', 'cats/cat.2013.jpg', 'cats/cat.2014.jpg', 'cats/cat.2015.jpg', 'cats/cat.2016.jpg', 'cats/cat.2017.jpg', 'cats/cat.2018.jpg', 'cats/cat.2019.jpg', 'cats/cat.2020.jpg', 'cats/cat.2021.jpg', 'cats/cat.2022.jpg', 'cats/cat.2023.jpg', 'cats/cat.2024.jpg', 'cats/cat.2025.jpg', 'cats/cat.2026.jpg', 'cats/cat.2027.jpg', 'cats/cat.2028.jpg', 'cats/cat.2029.jpg', 'cats/cat.2030.jpg', 'cats/cat.2031.jpg', 'cats/cat.2032.jpg', 'cats/cat.2033.jpg', 'cats/cat.2034.jpg', 'cats/cat.2035.jpg', 'cats/cat.2036.jpg', 'cats/cat.2037.jpg', 'cats/cat.2038.jpg', 'cats/cat.2039.jpg', 'cats/cat.2040.jpg', 'cats/cat.2041.jpg', 'cats/cat.2042.jpg', 'cats/cat.2043.jpg', 'cats/cat.2044.jpg', 'cats/cat.2045.jpg', 'cats/cat.2046.jpg', 'cats/cat.2047.jpg', 'cats/cat.2048.jpg', 'cats/cat.2049.jpg', 'cats/cat.2050.jpg', 'cats/cat.2051.jpg', 'cats/cat.2052.jpg', 'cats/cat.2053.jpg', 'cats/cat.2054.jpg', 'cats/cat.2055.jpg', 'cats/cat.2056.jpg', 'cats/cat.2057.jpg', 'cats/cat.2058.jpg', 'cats/cat.2059.jpg', 'cats/cat.2060.jpg', 'cats/cat.2061.jpg', 'cats/cat.2062.jpg', 'cats/cat.2063.jpg', 'cats/cat.2064.jpg', 'cats/cat.2065.jpg', 'cats/cat.2066.jpg', 'cats/cat.2067.jpg', 'cats/cat.2068.jpg', 'cats/cat.2069.jpg', 'cats/cat.2070.jpg', 'cats/cat.2071.jpg', 'cats/cat.2072.jpg', 'cats/cat.2073.jpg', 'cats/cat.2074.jpg', 'cats/cat.2075.jpg', 'cats/cat.2076.jpg', 'cats/cat.2077.jpg', 'cats/cat.2078.jpg', 'cats/cat.2079.jpg', 'cats/cat.2080.jpg', 'cats/cat.2081.jpg', 'cats/cat.2082.jpg', 'cats/cat.2083.jpg', 'cats/cat.2084.jpg', 'cats/cat.2085.jpg', 'cats/cat.2086.jpg', 'cats/cat.2087.jpg', 'cats/cat.2088.jpg', 'cats/cat.2089.jpg', 'cats/cat.2090.jpg', 'cats/cat.2091.jpg', 'cats/cat.2092.jpg', 'cats/cat.2093.jpg', 'cats/cat.2094.jpg', 'cats/cat.2095.jpg', 'cats/cat.2096.jpg', 'cats/cat.2097.jpg', 'cats/cat.2098.jpg', 'cats/cat.2099.jpg', 'cats/cat.2100.jpg', 'cats/cat.2101.jpg', 'cats/cat.2102.jpg', 'cats/cat.2103.jpg', 'cats/cat.2104.jpg', 'cats/cat.2105.jpg', 'cats/cat.2106.jpg', 'cats/cat.2107.jpg', 'cats/cat.2108.jpg', 'cats/cat.2109.jpg', 'cats/cat.2110.jpg', 'cats/cat.2111.jpg', 'cats/cat.2112.jpg', 'cats/cat.2113.jpg', 'cats/cat.2114.jpg', 'cats/cat.2115.jpg', 'cats/cat.2116.jpg', 'cats/cat.2117.jpg', 'cats/cat.2118.jpg', 'cats/cat.2119.jpg', 'cats/cat.2120.jpg', 'cats/cat.2121.jpg', 'cats/cat.2122.jpg', 'cats/cat.2123.jpg', 'cats/cat.2124.jpg', 'cats/cat.2125.jpg', 'cats/cat.2126.jpg', 'cats/cat.2127.jpg', 'cats/cat.2128.jpg', 'cats/cat.2129.jpg', 'cats/cat.2130.jpg', 'cats/cat.2131.jpg', 'cats/cat.2132.jpg', 'cats/cat.2133.jpg', 'cats/cat.2134.jpg', 'cats/cat.2135.jpg', 'cats/cat.2136.jpg', 'cats/cat.2137.jpg', 'cats/cat.2138.jpg', 'cats/cat.2139.jpg', 'cats/cat.2140.jpg', 'cats/cat.2141.jpg', 'cats/cat.2142.jpg', 'cats/cat.2143.jpg', 'cats/cat.2144.jpg', 'cats/cat.2145.jpg', 'cats/cat.2146.jpg', 'cats/cat.2147.jpg', 'cats/cat.2148.jpg', 'cats/cat.2149.jpg', 'cats/cat.2150.jpg', 'cats/cat.2151.jpg', 'cats/cat.2152.jpg', 'cats/cat.2153.jpg', 'cats/cat.2154.jpg', 'cats/cat.2155.jpg', 'cats/cat.2156.jpg', 'cats/cat.2157.jpg', 'cats/cat.2158.jpg', 'cats/cat.2159.jpg', 'cats/cat.2160.jpg', 'cats/cat.2161.jpg', 'cats/cat.2162.jpg', 'cats/cat.2163.jpg', 'cats/cat.2164.jpg', 'cats/cat.2165.jpg', 'cats/cat.2166.jpg', 'cats/cat.2167.jpg', 'cats/cat.2168.jpg', 'cats/cat.2169.jpg', 'cats/cat.2170.jpg', 'cats/cat.2171.jpg', 'cats/cat.2172.jpg', 'cats/cat.2173.jpg', 'cats/cat.2174.jpg', 'cats/cat.2175.jpg', 'cats/cat.2176.jpg', 'cats/cat.2177.jpg', 'cats/cat.2178.jpg', 'cats/cat.2179.jpg', 'cats/cat.2180.jpg', 'cats/cat.2181.jpg', 'cats/cat.2182.jpg', 'cats/cat.2183.jpg', 'cats/cat.2184.jpg', 'cats/cat.2185.jpg', 'cats/cat.2186.jpg', 'cats/cat.2187.jpg', 'cats/cat.2188.jpg', 'cats/cat.2189.jpg', 'cats/cat.2190.jpg', 'cats/cat.2191.jpg', 'cats/cat.2192.jpg', 'cats/cat.2193.jpg', 'cats/cat.2194.jpg', 'cats/cat.2195.jpg', 'cats/cat.2196.jpg', 'cats/cat.2197.jpg', 'cats/cat.2198.jpg', 'cats/cat.2199.jpg', 'cats/cat.2200.jpg', 'cats/cat.2201.jpg', 'cats/cat.2202.jpg', 'cats/cat.2203.jpg', 'cats/cat.2204.jpg', 'cats/cat.2205.jpg', 'cats/cat.2206.jpg', 'cats/cat.2207.jpg', 'cats/cat.2208.jpg', 'cats/cat.2209.jpg', 'cats/cat.2210.jpg', 'cats/cat.2211.jpg', 'cats/cat.2212.jpg', 'cats/cat.2213.jpg', 'cats/cat.2214.jpg', 'cats/cat.2215.jpg', 'cats/cat.2216.jpg', 'cats/cat.2217.jpg', 'cats/cat.2218.jpg', 'cats/cat.2219.jpg', 'cats/cat.2220.jpg', 'cats/cat.2221.jpg', 'cats/cat.2222.jpg', 'cats/cat.2223.jpg', 'cats/cat.2224.jpg', 'cats/cat.2225.jpg', 'cats/cat.2226.jpg', 'cats/cat.2227.jpg', 'cats/cat.2228.jpg', 'cats/cat.2229.jpg', 'cats/cat.2230.jpg', 'cats/cat.2231.jpg', 'cats/cat.2232.jpg', 'cats/cat.2233.jpg', 'cats/cat.2234.jpg', 'cats/cat.2235.jpg', 'cats/cat.2236.jpg', 'cats/cat.2237.jpg', 'cats/cat.2238.jpg', 'cats/cat.2239.jpg', 'cats/cat.2240.jpg', 'cats/cat.2241.jpg', 'cats/cat.2242.jpg', 'cats/cat.2243.jpg', 'cats/cat.2244.jpg', 'cats/cat.2245.jpg', 'cats/cat.2246.jpg', 'cats/cat.2247.jpg', 'cats/cat.2248.jpg', 'cats/cat.2249.jpg', 'cats/cat.2250.jpg', 'cats/cat.2251.jpg', 'cats/cat.2252.jpg', 'cats/cat.2253.jpg', 'cats/cat.2254.jpg', 'cats/cat.2255.jpg', 'cats/cat.2256.jpg', 'cats/cat.2257.jpg', 'cats/cat.2258.jpg', 'cats/cat.2259.jpg', 'cats/cat.2260.jpg', 'cats/cat.2261.jpg', 'cats/cat.2262.jpg', 'cats/cat.2263.jpg', 'cats/cat.2264.jpg', 'cats/cat.2265.jpg', 'cats/cat.2266.jpg', 'cats/cat.2267.jpg', 'cats/cat.2268.jpg', 'cats/cat.2269.jpg', 'cats/cat.2270.jpg', 'cats/cat.2271.jpg', 'cats/cat.2272.jpg', 'cats/cat.2273.jpg', 'cats/cat.2274.jpg', 'cats/cat.2275.jpg', 'cats/cat.2276.jpg', 'cats/cat.2277.jpg', 'cats/cat.2278.jpg', 'cats/cat.2279.jpg', 'cats/cat.2280.jpg', 'cats/cat.2281.jpg', 'cats/cat.2282.jpg', 'cats/cat.2283.jpg', 'cats/cat.2284.jpg', 'cats/cat.2285.jpg', 'cats/cat.2286.jpg', 'cats/cat.2287.jpg', 'cats/cat.2288.jpg', 'cats/cat.2289.jpg', 'cats/cat.2290.jpg', 'cats/cat.2291.jpg', 'cats/cat.2292.jpg', 'cats/cat.2293.jpg', 'cats/cat.2294.jpg', 'cats/cat.2295.jpg', 'cats/cat.2296.jpg', 'cats/cat.2297.jpg', 'cats/cat.2298.jpg', 'cats/cat.2299.jpg', 'cats/cat.2300.jpg', 'cats/cat.2301.jpg', 'cats/cat.2302.jpg', 'cats/cat.2303.jpg', 'cats/cat.2304.jpg', 'cats/cat.2305.jpg', 'cats/cat.2306.jpg', 'cats/cat.2307.jpg', 'cats/cat.2308.jpg', 'cats/cat.2309.jpg', 'cats/cat.2310.jpg', 'cats/cat.2311.jpg', 'cats/cat.2312.jpg', 'cats/cat.2313.jpg', 'cats/cat.2314.jpg', 'cats/cat.2315.jpg', 'cats/cat.2316.jpg', 'cats/cat.2317.jpg', 'cats/cat.2318.jpg', 'cats/cat.2319.jpg', 'cats/cat.2320.jpg', 'cats/cat.2321.jpg', 'cats/cat.2322.jpg', 'cats/cat.2323.jpg', 'cats/cat.2324.jpg', 'cats/cat.2325.jpg', 'cats/cat.2326.jpg', 'cats/cat.2327.jpg', 'cats/cat.2328.jpg', 'cats/cat.2329.jpg', 'cats/cat.2330.jpg', 'cats/cat.2331.jpg', 'cats/cat.2332.jpg', 'cats/cat.2333.jpg', 'cats/cat.2334.jpg', 'cats/cat.2335.jpg', 'cats/cat.2336.jpg', 'cats/cat.2337.jpg', 'cats/cat.2338.jpg', 'cats/cat.2339.jpg', 'cats/cat.2340.jpg', 'cats/cat.2341.jpg', 'cats/cat.2342.jpg', 'cats/cat.2343.jpg', 'cats/cat.2344.jpg', 'cats/cat.2345.jpg', 'cats/cat.2346.jpg', 'cats/cat.2347.jpg', 'cats/cat.2348.jpg', 'cats/cat.2349.jpg', 'cats/cat.2350.jpg', 'cats/cat.2351.jpg', 'cats/cat.2352.jpg', 'cats/cat.2353.jpg', 'cats/cat.2354.jpg', 'cats/cat.2355.jpg', 'cats/cat.2356.jpg', 'cats/cat.2357.jpg', 'cats/cat.2358.jpg', 'cats/cat.2359.jpg', 'cats/cat.2360.jpg', 'cats/cat.2361.jpg', 'cats/cat.2362.jpg', 'cats/cat.2363.jpg', 'cats/cat.2364.jpg', 'cats/cat.2365.jpg', 'cats/cat.2366.jpg', 'cats/cat.2367.jpg', 'cats/cat.2368.jpg', 'cats/cat.2369.jpg', 'cats/cat.2370.jpg', 'cats/cat.2371.jpg', 'cats/cat.2372.jpg', 'cats/cat.2373.jpg', 'cats/cat.2374.jpg', 'cats/cat.2375.jpg', 'cats/cat.2376.jpg', 'cats/cat.2377.jpg', 'cats/cat.2378.jpg', 'cats/cat.2379.jpg', 'cats/cat.2380.jpg', 'cats/cat.2381.jpg', 'cats/cat.2382.jpg', 'cats/cat.2383.jpg', 'cats/cat.2384.jpg', 'cats/cat.2385.jpg', 'cats/cat.2386.jpg', 'cats/cat.2387.jpg', 'cats/cat.2388.jpg', 'cats/cat.2389.jpg', 'cats/cat.2390.jpg', 'cats/cat.2391.jpg', 'cats/cat.2392.jpg', 'cats/cat.2393.jpg', 'cats/cat.2394.jpg', 'cats/cat.2395.jpg', 'cats/cat.2396.jpg', 'cats/cat.2397.jpg', 'cats/cat.2398.jpg', 'cats/cat.2399.jpg', 'cats/cat.2400.jpg', 'cats/cat.2401.jpg', 'cats/cat.2402.jpg', 'cats/cat.2403.jpg', 'cats/cat.2404.jpg', 'cats/cat.2405.jpg', 'cats/cat.2406.jpg', 'cats/cat.2407.jpg', 'cats/cat.2408.jpg', 'cats/cat.2409.jpg', 'cats/cat.2410.jpg', 'cats/cat.2411.jpg', 'cats/cat.2412.jpg', 'cats/cat.2413.jpg', 'cats/cat.2414.jpg', 'cats/cat.2415.jpg', 'cats/cat.2416.jpg', 'cats/cat.2417.jpg', 'cats/cat.2418.jpg', 'cats/cat.2419.jpg', 'cats/cat.2420.jpg', 'cats/cat.2421.jpg', 'cats/cat.2422.jpg', 'cats/cat.2423.jpg', 'cats/cat.2424.jpg', 'cats/cat.2425.jpg', 'cats/cat.2426.jpg', 'cats/cat.2427.jpg', 'cats/cat.2428.jpg', 'cats/cat.2429.jpg', 'cats/cat.2430.jpg', 'cats/cat.2431.jpg', 'cats/cat.2432.jpg', 'cats/cat.2433.jpg', 'cats/cat.2434.jpg', 'cats/cat.2435.jpg', 'cats/cat.2436.jpg', 'cats/cat.2437.jpg', 'cats/cat.2438.jpg', 'cats/cat.2439.jpg', 'cats/cat.2440.jpg', 'cats/cat.2441.jpg', 'cats/cat.2442.jpg', 'cats/cat.2443.jpg', 'cats/cat.2444.jpg', 'cats/cat.2445.jpg', 'cats/cat.2446.jpg', 'cats/cat.2447.jpg', 'cats/cat.2448.jpg', 'cats/cat.2449.jpg', 'cats/cat.2450.jpg', 'cats/cat.2451.jpg', 'cats/cat.2452.jpg', 'cats/cat.2453.jpg', 'cats/cat.2454.jpg', 'cats/cat.2455.jpg', 'cats/cat.2456.jpg', 'cats/cat.2457.jpg', 'cats/cat.2458.jpg', 'cats/cat.2459.jpg', 'cats/cat.2460.jpg', 'cats/cat.2461.jpg', 'cats/cat.2462.jpg', 'cats/cat.2463.jpg', 'cats/cat.2464.jpg', 'cats/cat.2465.jpg', 'cats/cat.2466.jpg', 'cats/cat.2467.jpg', 'cats/cat.2468.jpg', 'cats/cat.2469.jpg', 'cats/cat.2470.jpg', 'cats/cat.2471.jpg', 'cats/cat.2472.jpg', 'cats/cat.2473.jpg', 'cats/cat.2474.jpg', 'cats/cat.2475.jpg', 'cats/cat.2476.jpg', 'cats/cat.2477.jpg', 'cats/cat.2478.jpg', 'cats/cat.2479.jpg', 'cats/cat.2480.jpg', 'cats/cat.2481.jpg', 'cats/cat.2482.jpg', 'cats/cat.2483.jpg', 'cats/cat.2484.jpg', 'cats/cat.2485.jpg', 'cats/cat.2486.jpg', 'cats/cat.2487.jpg', 'cats/cat.2488.jpg', 'cats/cat.2489.jpg', 'cats/cat.2490.jpg', 'cats/cat.2491.jpg', 'cats/cat.2492.jpg', 'cats/cat.2493.jpg', 'cats/cat.2494.jpg', 'cats/cat.2495.jpg', 'cats/cat.2496.jpg', 'cats/cat.2497.jpg', 'cats/cat.2498.jpg', 'cats/cat.2499.jpg', 'dogs/dog.2000.jpg', 'dogs/dog.2001.jpg', 'dogs/dog.2002.jpg', 'dogs/dog.2003.jpg', 'dogs/dog.2004.jpg', 'dogs/dog.2005.jpg', 'dogs/dog.2006.jpg', 'dogs/dog.2007.jpg', 'dogs/dog.2008.jpg', 'dogs/dog.2009.jpg', 'dogs/dog.2010.jpg', 'dogs/dog.2011.jpg', 'dogs/dog.2012.jpg', 'dogs/dog.2013.jpg', 'dogs/dog.2014.jpg', 'dogs/dog.2015.jpg', 'dogs/dog.2016.jpg', 'dogs/dog.2017.jpg', 'dogs/dog.2018.jpg', 'dogs/dog.2019.jpg', 'dogs/dog.2020.jpg', 'dogs/dog.2021.jpg', 'dogs/dog.2022.jpg', 'dogs/dog.2023.jpg', 'dogs/dog.2024.jpg', 'dogs/dog.2025.jpg', 'dogs/dog.2026.jpg', 'dogs/dog.2027.jpg', 'dogs/dog.2028.jpg', 'dogs/dog.2029.jpg', 'dogs/dog.2030.jpg', 'dogs/dog.2031.jpg', 'dogs/dog.2032.jpg', 'dogs/dog.2033.jpg', 'dogs/dog.2034.jpg', 'dogs/dog.2035.jpg', 'dogs/dog.2036.jpg', 'dogs/dog.2037.jpg', 'dogs/dog.2038.jpg', 'dogs/dog.2039.jpg', 'dogs/dog.2040.jpg', 'dogs/dog.2041.jpg', 'dogs/dog.2042.jpg', 'dogs/dog.2043.jpg', 'dogs/dog.2044.jpg', 'dogs/dog.2045.jpg', 'dogs/dog.2046.jpg', 'dogs/dog.2047.jpg', 'dogs/dog.2048.jpg', 'dogs/dog.2049.jpg', 'dogs/dog.2050.jpg', 'dogs/dog.2051.jpg', 'dogs/dog.2052.jpg', 'dogs/dog.2053.jpg', 'dogs/dog.2054.jpg', 'dogs/dog.2055.jpg', 'dogs/dog.2056.jpg', 'dogs/dog.2057.jpg', 'dogs/dog.2058.jpg', 'dogs/dog.2059.jpg', 'dogs/dog.2060.jpg', 'dogs/dog.2061.jpg', 'dogs/dog.2062.jpg', 'dogs/dog.2063.jpg', 'dogs/dog.2064.jpg', 'dogs/dog.2065.jpg', 'dogs/dog.2066.jpg', 'dogs/dog.2067.jpg', 'dogs/dog.2068.jpg', 'dogs/dog.2069.jpg', 'dogs/dog.2070.jpg', 'dogs/dog.2071.jpg', 'dogs/dog.2072.jpg', 'dogs/dog.2073.jpg', 'dogs/dog.2074.jpg', 'dogs/dog.2075.jpg', 'dogs/dog.2076.jpg', 'dogs/dog.2077.jpg', 'dogs/dog.2078.jpg', 'dogs/dog.2079.jpg', 'dogs/dog.2080.jpg', 'dogs/dog.2081.jpg', 'dogs/dog.2082.jpg', 'dogs/dog.2083.jpg', 'dogs/dog.2084.jpg', 'dogs/dog.2085.jpg', 'dogs/dog.2086.jpg', 'dogs/dog.2087.jpg', 'dogs/dog.2088.jpg', 'dogs/dog.2089.jpg', 'dogs/dog.2090.jpg', 'dogs/dog.2091.jpg', 'dogs/dog.2092.jpg', 'dogs/dog.2093.jpg', 'dogs/dog.2094.jpg', 'dogs/dog.2095.jpg', 'dogs/dog.2096.jpg', 'dogs/dog.2097.jpg', 'dogs/dog.2098.jpg', 'dogs/dog.2099.jpg', 'dogs/dog.2100.jpg', 'dogs/dog.2101.jpg', 'dogs/dog.2102.jpg', 'dogs/dog.2103.jpg', 'dogs/dog.2104.jpg', 'dogs/dog.2105.jpg', 'dogs/dog.2106.jpg', 'dogs/dog.2107.jpg', 'dogs/dog.2108.jpg', 'dogs/dog.2109.jpg', 'dogs/dog.2110.jpg', 'dogs/dog.2111.jpg', 'dogs/dog.2112.jpg', 'dogs/dog.2113.jpg', 'dogs/dog.2114.jpg', 'dogs/dog.2115.jpg', 'dogs/dog.2116.jpg', 'dogs/dog.2117.jpg', 'dogs/dog.2118.jpg', 'dogs/dog.2119.jpg', 'dogs/dog.2120.jpg', 'dogs/dog.2121.jpg', 'dogs/dog.2122.jpg', 'dogs/dog.2123.jpg', 'dogs/dog.2124.jpg', 'dogs/dog.2125.jpg', 'dogs/dog.2126.jpg', 'dogs/dog.2127.jpg', 'dogs/dog.2128.jpg', 'dogs/dog.2129.jpg', 'dogs/dog.2130.jpg', 'dogs/dog.2131.jpg', 'dogs/dog.2132.jpg', 'dogs/dog.2133.jpg', 'dogs/dog.2134.jpg', 'dogs/dog.2135.jpg', 'dogs/dog.2136.jpg', 'dogs/dog.2137.jpg', 'dogs/dog.2138.jpg', 'dogs/dog.2139.jpg', 'dogs/dog.2140.jpg', 'dogs/dog.2141.jpg', 'dogs/dog.2142.jpg', 'dogs/dog.2143.jpg', 'dogs/dog.2144.jpg', 'dogs/dog.2145.jpg', 'dogs/dog.2146.jpg', 'dogs/dog.2147.jpg', 'dogs/dog.2148.jpg', 'dogs/dog.2149.jpg', 'dogs/dog.2150.jpg', 'dogs/dog.2151.jpg', 'dogs/dog.2152.jpg', 'dogs/dog.2153.jpg', 'dogs/dog.2154.jpg', 'dogs/dog.2155.jpg', 'dogs/dog.2156.jpg', 'dogs/dog.2157.jpg', 'dogs/dog.2158.jpg', 'dogs/dog.2159.jpg', 'dogs/dog.2160.jpg', 'dogs/dog.2161.jpg', 'dogs/dog.2162.jpg', 'dogs/dog.2163.jpg', 'dogs/dog.2164.jpg', 'dogs/dog.2165.jpg', 'dogs/dog.2166.jpg', 'dogs/dog.2167.jpg', 'dogs/dog.2168.jpg', 'dogs/dog.2169.jpg', 'dogs/dog.2170.jpg', 'dogs/dog.2171.jpg', 'dogs/dog.2172.jpg', 'dogs/dog.2173.jpg', 'dogs/dog.2174.jpg', 'dogs/dog.2175.jpg', 'dogs/dog.2176.jpg', 'dogs/dog.2177.jpg', 'dogs/dog.2178.jpg', 'dogs/dog.2179.jpg', 'dogs/dog.2180.jpg', 'dogs/dog.2181.jpg', 'dogs/dog.2182.jpg', 'dogs/dog.2183.jpg', 'dogs/dog.2184.jpg', 'dogs/dog.2185.jpg', 'dogs/dog.2186.jpg', 'dogs/dog.2187.jpg', 'dogs/dog.2188.jpg', 'dogs/dog.2189.jpg', 'dogs/dog.2190.jpg', 'dogs/dog.2191.jpg', 'dogs/dog.2192.jpg', 'dogs/dog.2193.jpg', 'dogs/dog.2194.jpg', 'dogs/dog.2195.jpg', 'dogs/dog.2196.jpg', 'dogs/dog.2197.jpg', 'dogs/dog.2198.jpg', 'dogs/dog.2199.jpg', 'dogs/dog.2200.jpg', 'dogs/dog.2201.jpg', 'dogs/dog.2202.jpg', 'dogs/dog.2203.jpg', 'dogs/dog.2204.jpg', 'dogs/dog.2205.jpg', 'dogs/dog.2206.jpg', 'dogs/dog.2207.jpg', 'dogs/dog.2208.jpg', 'dogs/dog.2209.jpg', 'dogs/dog.2210.jpg', 'dogs/dog.2211.jpg', 'dogs/dog.2212.jpg', 'dogs/dog.2213.jpg', 'dogs/dog.2214.jpg', 'dogs/dog.2215.jpg', 'dogs/dog.2216.jpg', 'dogs/dog.2217.jpg', 'dogs/dog.2218.jpg', 'dogs/dog.2219.jpg', 'dogs/dog.2220.jpg', 'dogs/dog.2221.jpg', 'dogs/dog.2222.jpg', 'dogs/dog.2223.jpg', 'dogs/dog.2224.jpg', 'dogs/dog.2225.jpg', 'dogs/dog.2226.jpg', 'dogs/dog.2227.jpg', 'dogs/dog.2228.jpg', 'dogs/dog.2229.jpg', 'dogs/dog.2230.jpg', 'dogs/dog.2231.jpg', 'dogs/dog.2232.jpg', 'dogs/dog.2233.jpg', 'dogs/dog.2234.jpg', 'dogs/dog.2235.jpg', 'dogs/dog.2236.jpg', 'dogs/dog.2237.jpg', 'dogs/dog.2238.jpg', 'dogs/dog.2239.jpg', 'dogs/dog.2240.jpg', 'dogs/dog.2241.jpg', 'dogs/dog.2242.jpg', 'dogs/dog.2243.jpg', 'dogs/dog.2244.jpg', 'dogs/dog.2245.jpg', 'dogs/dog.2246.jpg', 'dogs/dog.2247.jpg', 'dogs/dog.2248.jpg', 'dogs/dog.2249.jpg', 'dogs/dog.2250.jpg', 'dogs/dog.2251.jpg', 'dogs/dog.2252.jpg', 'dogs/dog.2253.jpg', 'dogs/dog.2254.jpg', 'dogs/dog.2255.jpg', 'dogs/dog.2256.jpg', 'dogs/dog.2257.jpg', 'dogs/dog.2258.jpg', 'dogs/dog.2259.jpg', 'dogs/dog.2260.jpg', 'dogs/dog.2261.jpg', 'dogs/dog.2262.jpg', 'dogs/dog.2263.jpg', 'dogs/dog.2264.jpg', 'dogs/dog.2265.jpg', 'dogs/dog.2266.jpg', 'dogs/dog.2267.jpg', 'dogs/dog.2268.jpg', 'dogs/dog.2269.jpg', 'dogs/dog.2270.jpg', 'dogs/dog.2271.jpg', 'dogs/dog.2272.jpg', 'dogs/dog.2273.jpg', 'dogs/dog.2274.jpg', 'dogs/dog.2275.jpg', 'dogs/dog.2276.jpg', 'dogs/dog.2277.jpg', 'dogs/dog.2278.jpg', 'dogs/dog.2279.jpg', 'dogs/dog.2280.jpg', 'dogs/dog.2281.jpg', 'dogs/dog.2282.jpg', 'dogs/dog.2283.jpg', 'dogs/dog.2284.jpg', 'dogs/dog.2285.jpg', 'dogs/dog.2286.jpg', 'dogs/dog.2287.jpg', 'dogs/dog.2288.jpg', 'dogs/dog.2289.jpg', 'dogs/dog.2290.jpg', 'dogs/dog.2291.jpg', 'dogs/dog.2292.jpg', 'dogs/dog.2293.jpg', 'dogs/dog.2294.jpg', 'dogs/dog.2295.jpg', 'dogs/dog.2296.jpg', 'dogs/dog.2297.jpg', 'dogs/dog.2298.jpg', 'dogs/dog.2299.jpg', 'dogs/dog.2300.jpg', 'dogs/dog.2301.jpg', 'dogs/dog.2302.jpg', 'dogs/dog.2303.jpg', 'dogs/dog.2304.jpg', 'dogs/dog.2305.jpg', 'dogs/dog.2306.jpg', 'dogs/dog.2307.jpg', 'dogs/dog.2308.jpg', 'dogs/dog.2309.jpg', 'dogs/dog.2310.jpg', 'dogs/dog.2311.jpg', 'dogs/dog.2312.jpg', 'dogs/dog.2313.jpg', 'dogs/dog.2314.jpg', 'dogs/dog.2315.jpg', 'dogs/dog.2316.jpg', 'dogs/dog.2317.jpg', 'dogs/dog.2318.jpg', 'dogs/dog.2319.jpg', 'dogs/dog.2320.jpg', 'dogs/dog.2321.jpg', 'dogs/dog.2322.jpg', 'dogs/dog.2323.jpg', 'dogs/dog.2324.jpg', 'dogs/dog.2325.jpg', 'dogs/dog.2326.jpg', 'dogs/dog.2327.jpg', 'dogs/dog.2328.jpg', 'dogs/dog.2329.jpg', 'dogs/dog.2330.jpg', 'dogs/dog.2331.jpg', 'dogs/dog.2332.jpg', 'dogs/dog.2333.jpg', 'dogs/dog.2334.jpg', 'dogs/dog.2335.jpg', 'dogs/dog.2336.jpg', 'dogs/dog.2337.jpg', 'dogs/dog.2338.jpg', 'dogs/dog.2339.jpg', 'dogs/dog.2340.jpg', 'dogs/dog.2341.jpg', 'dogs/dog.2342.jpg', 'dogs/dog.2343.jpg', 'dogs/dog.2344.jpg', 'dogs/dog.2345.jpg', 'dogs/dog.2346.jpg', 'dogs/dog.2347.jpg', 'dogs/dog.2348.jpg', 'dogs/dog.2349.jpg', 'dogs/dog.2350.jpg', 'dogs/dog.2351.jpg', 'dogs/dog.2352.jpg', 'dogs/dog.2353.jpg', 'dogs/dog.2354.jpg', 'dogs/dog.2355.jpg', 'dogs/dog.2356.jpg', 'dogs/dog.2357.jpg', 'dogs/dog.2358.jpg', 'dogs/dog.2359.jpg', 'dogs/dog.2360.jpg', 'dogs/dog.2361.jpg', 'dogs/dog.2362.jpg', 'dogs/dog.2363.jpg', 'dogs/dog.2364.jpg', 'dogs/dog.2365.jpg', 'dogs/dog.2366.jpg', 'dogs/dog.2367.jpg', 'dogs/dog.2368.jpg', 'dogs/dog.2369.jpg', 'dogs/dog.2370.jpg', 'dogs/dog.2371.jpg', 'dogs/dog.2372.jpg', 'dogs/dog.2373.jpg', 'dogs/dog.2374.jpg', 'dogs/dog.2375.jpg', 'dogs/dog.2376.jpg', 'dogs/dog.2377.jpg', 'dogs/dog.2378.jpg', 'dogs/dog.2379.jpg', 'dogs/dog.2380.jpg', 'dogs/dog.2381.jpg', 'dogs/dog.2382.jpg', 'dogs/dog.2383.jpg', 'dogs/dog.2384.jpg', 'dogs/dog.2385.jpg', 'dogs/dog.2386.jpg', 'dogs/dog.2387.jpg', 'dogs/dog.2388.jpg', 'dogs/dog.2389.jpg', 'dogs/dog.2390.jpg', 'dogs/dog.2391.jpg', 'dogs/dog.2392.jpg', 'dogs/dog.2393.jpg', 'dogs/dog.2394.jpg', 'dogs/dog.2395.jpg', 'dogs/dog.2396.jpg', 'dogs/dog.2397.jpg', 'dogs/dog.2398.jpg', 'dogs/dog.2399.jpg', 'dogs/dog.2400.jpg', 'dogs/dog.2401.jpg', 'dogs/dog.2402.jpg', 'dogs/dog.2403.jpg', 'dogs/dog.2404.jpg', 'dogs/dog.2405.jpg', 'dogs/dog.2406.jpg', 'dogs/dog.2407.jpg', 'dogs/dog.2408.jpg', 'dogs/dog.2409.jpg', 'dogs/dog.2410.jpg', 'dogs/dog.2411.jpg', 'dogs/dog.2412.jpg', 'dogs/dog.2413.jpg', 'dogs/dog.2414.jpg', 'dogs/dog.2415.jpg', 'dogs/dog.2416.jpg', 'dogs/dog.2417.jpg', 'dogs/dog.2418.jpg', 'dogs/dog.2419.jpg', 'dogs/dog.2420.jpg', 'dogs/dog.2421.jpg', 'dogs/dog.2422.jpg', 'dogs/dog.2423.jpg', 'dogs/dog.2424.jpg', 'dogs/dog.2425.jpg', 'dogs/dog.2426.jpg', 'dogs/dog.2427.jpg', 'dogs/dog.2428.jpg', 'dogs/dog.2429.jpg', 'dogs/dog.2430.jpg', 'dogs/dog.2431.jpg', 'dogs/dog.2432.jpg', 'dogs/dog.2433.jpg', 'dogs/dog.2434.jpg', 'dogs/dog.2435.jpg', 'dogs/dog.2436.jpg', 'dogs/dog.2437.jpg', 'dogs/dog.2438.jpg', 'dogs/dog.2439.jpg', 'dogs/dog.2440.jpg', 'dogs/dog.2441.jpg', 'dogs/dog.2442.jpg', 'dogs/dog.2443.jpg', 'dogs/dog.2444.jpg', 'dogs/dog.2445.jpg', 'dogs/dog.2446.jpg', 'dogs/dog.2447.jpg', 'dogs/dog.2448.jpg', 'dogs/dog.2449.jpg', 'dogs/dog.2450.jpg', 'dogs/dog.2451.jpg', 'dogs/dog.2452.jpg', 'dogs/dog.2453.jpg', 'dogs/dog.2454.jpg', 'dogs/dog.2455.jpg', 'dogs/dog.2456.jpg', 'dogs/dog.2457.jpg', 'dogs/dog.2458.jpg', 'dogs/dog.2459.jpg', 'dogs/dog.2460.jpg', 'dogs/dog.2461.jpg', 'dogs/dog.2462.jpg', 'dogs/dog.2463.jpg', 'dogs/dog.2464.jpg', 'dogs/dog.2465.jpg', 'dogs/dog.2466.jpg', 'dogs/dog.2467.jpg', 'dogs/dog.2468.jpg', 'dogs/dog.2469.jpg', 'dogs/dog.2470.jpg', 'dogs/dog.2471.jpg', 'dogs/dog.2472.jpg', 'dogs/dog.2473.jpg', 'dogs/dog.2474.jpg', 'dogs/dog.2475.jpg', 'dogs/dog.2476.jpg', 'dogs/dog.2477.jpg', 'dogs/dog.2478.jpg', 'dogs/dog.2479.jpg', 'dogs/dog.2480.jpg', 'dogs/dog.2481.jpg', 'dogs/dog.2482.jpg', 'dogs/dog.2483.jpg', 'dogs/dog.2484.jpg', 'dogs/dog.2485.jpg', 'dogs/dog.2486.jpg', 'dogs/dog.2487.jpg', 'dogs/dog.2488.jpg', 'dogs/dog.2489.jpg', 'dogs/dog.2490.jpg', 'dogs/dog.2491.jpg', 'dogs/dog.2492.jpg', 'dogs/dog.2493.jpg', 'dogs/dog.2494.jpg', 'dogs/dog.2495.jpg', 'dogs/dog.2496.jpg', 'dogs/dog.2497.jpg', 'dogs/dog.2498.jpg', 'dogs/dog.2499.jpg']\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "OR8dgt9a9RGi", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 34 | |
| }, | |
| "outputId": "9d5860b7-a838-4efa-8e68-7eca1b0e4f54" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "!ls -l bottleneck_features_validation.npy" | |
| ], | |
| "execution_count": 15, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "-rw-r--r-- 1 root root 32768128 Dec 4 11:26 bottleneck_features_validation.npy\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "Uk1wkSoI-T37", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 1754 | |
| }, | |
| "outputId": "4f5755a0-1952-473b-ff5c-34b8f11104f0" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "# train model\n", | |
| "train_data = np.load(open('bottleneck_features_train.npy', 'rb'))\n", | |
| "# print('nb_train_samples : ', type(nb_train_samples))\n", | |
| "# print('nb_train_samples/2 : ', type(nb_train_samples // 2))\n", | |
| "train_labels = np.array([0] * (nb_train_samples // 2) +\n", | |
| " [1] * (nb_train_samples // 2))\n", | |
| "\n", | |
| "validation_data = np.load(open('bottleneck_features_validation.npy', 'rb'))\n", | |
| "validation_labels = np.array([0] * (nb_validation_samples // 2) +\n", | |
| " [1] * (nb_validation_samples // 2))\n", | |
| "\n", | |
| "model = models.Sequential()\n", | |
| "model.add(layers.Flatten(input_shape=train_data.shape[1:]))\n", | |
| "model.add(layers.Dense(512, activation='relu'))\n", | |
| "model.add(layers.Dropout(0.6))\n", | |
| "model.add(layers.Dense(1, activation='sigmoid'))\n", | |
| "\n", | |
| "model.compile(\n", | |
| " optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])\n", | |
| "\n", | |
| "history = model.fit(\n", | |
| " train_data,\n", | |
| " train_labels,\n", | |
| " epochs=epochs,\n", | |
| " batch_size=batch_size,\n", | |
| " validation_data=(validation_data, validation_labels))\n", | |
| "model.save_weights(top_model_weights_path)" | |
| ], | |
| "execution_count": 18, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "Train on 2000 samples, validate on 1000 samples\n", | |
| "Epoch 1/50\n", | |
| "2000/2000 [==============================] - 7s 4ms/step - loss: 1.0155 - acc: 0.7320 - val_loss: 0.3015 - val_acc: 0.8680\n", | |
| "Epoch 2/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.4096 - acc: 0.8325 - val_loss: 0.2947 - val_acc: 0.8730\n", | |
| "Epoch 3/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.3537 - acc: 0.8710 - val_loss: 0.5964 - val_acc: 0.8020\n", | |
| "Epoch 4/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.3018 - acc: 0.8850 - val_loss: 0.3743 - val_acc: 0.8650\n", | |
| "Epoch 5/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.3111 - acc: 0.8905 - val_loss: 0.3262 - val_acc: 0.8800\n", | |
| "Epoch 6/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.2583 - acc: 0.9060 - val_loss: 0.4083 - val_acc: 0.8580\n", | |
| "Epoch 7/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.2428 - acc: 0.9140 - val_loss: 0.4222 - val_acc: 0.8690\n", | |
| "Epoch 8/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.2048 - acc: 0.9325 - val_loss: 0.4899 - val_acc: 0.8700\n", | |
| "Epoch 9/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.1862 - acc: 0.9345 - val_loss: 0.4171 - val_acc: 0.8780\n", | |
| "Epoch 10/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.1785 - acc: 0.9385 - val_loss: 0.4873 - val_acc: 0.8790\n", | |
| "Epoch 11/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.1741 - acc: 0.9450 - val_loss: 0.4426 - val_acc: 0.8840\n", | |
| "Epoch 12/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.1409 - acc: 0.9510 - val_loss: 0.4843 - val_acc: 0.8740\n", | |
| "Epoch 13/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.1334 - acc: 0.9540 - val_loss: 0.4878 - val_acc: 0.8810\n", | |
| "Epoch 14/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.1326 - acc: 0.9540 - val_loss: 0.5596 - val_acc: 0.8770\n", | |
| "Epoch 15/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.1459 - acc: 0.9545 - val_loss: 0.5185 - val_acc: 0.8830\n", | |
| "Epoch 16/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.1040 - acc: 0.9670 - val_loss: 0.5573 - val_acc: 0.8760\n", | |
| "Epoch 17/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.1251 - acc: 0.9645 - val_loss: 0.5958 - val_acc: 0.8860\n", | |
| "Epoch 18/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0910 - acc: 0.9720 - val_loss: 0.5806 - val_acc: 0.8830\n", | |
| "Epoch 19/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0897 - acc: 0.9720 - val_loss: 0.6113 - val_acc: 0.8860\n", | |
| "Epoch 20/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0816 - acc: 0.9705 - val_loss: 0.6464 - val_acc: 0.8810\n", | |
| "Epoch 21/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0849 - acc: 0.9735 - val_loss: 0.7174 - val_acc: 0.8820\n", | |
| "Epoch 22/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0928 - acc: 0.9730 - val_loss: 0.7420 - val_acc: 0.8740\n", | |
| "Epoch 23/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0741 - acc: 0.9755 - val_loss: 0.8563 - val_acc: 0.8630\n", | |
| "Epoch 24/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0673 - acc: 0.9765 - val_loss: 1.1630 - val_acc: 0.8370\n", | |
| "Epoch 25/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0578 - acc: 0.9780 - val_loss: 0.6442 - val_acc: 0.8810\n", | |
| "Epoch 26/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0379 - acc: 0.9900 - val_loss: 0.7080 - val_acc: 0.8840\n", | |
| "Epoch 27/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0447 - acc: 0.9860 - val_loss: 0.7785 - val_acc: 0.8800\n", | |
| "Epoch 28/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0393 - acc: 0.9865 - val_loss: 0.8135 - val_acc: 0.8770\n", | |
| "Epoch 29/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0441 - acc: 0.9820 - val_loss: 0.7344 - val_acc: 0.8780\n", | |
| "Epoch 30/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0531 - acc: 0.9845 - val_loss: 0.7719 - val_acc: 0.8860\n", | |
| "Epoch 31/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0412 - acc: 0.9875 - val_loss: 0.8162 - val_acc: 0.8810\n", | |
| "Epoch 32/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0348 - acc: 0.9870 - val_loss: 0.8200 - val_acc: 0.8820\n", | |
| "Epoch 33/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0396 - acc: 0.9885 - val_loss: 0.9704 - val_acc: 0.8790\n", | |
| "Epoch 34/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0484 - acc: 0.9865 - val_loss: 0.8083 - val_acc: 0.8840\n", | |
| "Epoch 35/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0484 - acc: 0.9920 - val_loss: 0.9631 - val_acc: 0.8810\n", | |
| "Epoch 36/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0217 - acc: 0.9935 - val_loss: 0.9341 - val_acc: 0.8840\n", | |
| "Epoch 37/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0450 - acc: 0.9890 - val_loss: 0.8205 - val_acc: 0.8900\n", | |
| "Epoch 38/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0219 - acc: 0.9940 - val_loss: 0.8559 - val_acc: 0.8860\n", | |
| "Epoch 39/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0324 - acc: 0.9930 - val_loss: 0.8956 - val_acc: 0.8830\n", | |
| "Epoch 40/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0327 - acc: 0.9895 - val_loss: 0.9187 - val_acc: 0.8840\n", | |
| "Epoch 41/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0348 - acc: 0.9900 - val_loss: 1.2203 - val_acc: 0.8750\n", | |
| "Epoch 42/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0179 - acc: 0.9925 - val_loss: 0.9446 - val_acc: 0.8830\n", | |
| "Epoch 43/50\n", | |
| "2000/2000 [==============================] - 7s 3ms/step - loss: 0.0305 - acc: 0.9915 - val_loss: 0.9414 - val_acc: 0.8840\n", | |
| "Epoch 44/50\n", | |
| "2000/2000 [==============================] - 8s 4ms/step - loss: 0.0178 - acc: 0.9920 - val_loss: 0.9813 - val_acc: 0.8890\n", | |
| "Epoch 45/50\n", | |
| "2000/2000 [==============================] - 9s 4ms/step - loss: 0.0170 - acc: 0.9955 - val_loss: 1.2164 - val_acc: 0.8810\n", | |
| "Epoch 46/50\n", | |
| "2000/2000 [==============================] - 9s 5ms/step - loss: 0.0550 - acc: 0.9880 - val_loss: 1.0383 - val_acc: 0.8840\n", | |
| "Epoch 47/50\n", | |
| "2000/2000 [==============================] - 9s 4ms/step - loss: 0.0272 - acc: 0.9950 - val_loss: 1.0475 - val_acc: 0.8780\n", | |
| "Epoch 48/50\n", | |
| "2000/2000 [==============================] - 9s 4ms/step - loss: 0.0117 - acc: 0.9945 - val_loss: 0.9205 - val_acc: 0.8810\n", | |
| "Epoch 49/50\n", | |
| "2000/2000 [==============================] - 9s 4ms/step - loss: 0.0222 - acc: 0.9915 - val_loss: 1.0063 - val_acc: 0.8870\n", | |
| "Epoch 50/50\n", | |
| "2000/2000 [==============================] - 9s 4ms/step - loss: 0.0155 - acc: 0.9955 - val_loss: 0.9929 - val_acc: 0.8850\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "P7krRR2S_FJS", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "import matplotlib.pyplot as plt\n", | |
| "\n", | |
| "def plot(history):\n", | |
| " acc = history.history['acc']\n", | |
| " val_acc = history.history['val_acc']\n", | |
| " loss = history.history['loss']\n", | |
| " val_loss = history.history['val_loss']\n", | |
| " epochs = range(1, len(acc) + 1)\n", | |
| " plt.plot(epochs, acc, 'bo', label='Training acc')\n", | |
| " plt.plot(epochs, val_acc, 'b', label='Validation acc')\n", | |
| " plt.title('Training and validation accuracy')\n", | |
| " plt.legend()\n", | |
| " plt.figure()\n", | |
| " plt.plot(epochs, loss, 'bo', label='Training loss')\n", | |
| " plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", | |
| " plt.title('Training and validation loss')\n", | |
| " plt.legend()\n", | |
| " plt.show()" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "jlbno3cDAE89", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 707 | |
| }, | |
| "outputId": "74df5d09-9504-4f2e-a10e-426b3be4364c" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "plot(history)" | |
| ], | |
| "execution_count": 21, | |
| "outputs": [ | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x7f1a925d79e8>" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| } | |
| }, | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeEAAAFZCAYAAACv05cWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd4k2X3wPHvk9UBBVpogTJlLxEU\nB4KyipQlP1QURUFB4XULiCKKqCiigAwnghOQpYCvypCtL1OmgGwF2gKlpQVaOtIkz++Px3TQpE3a\npE2b87kurtKMJ3dvSk7udY6iqqqKEEIIIUqcrrQbIIQQQvgrCcJCCCFEKZEgLIQQQpQSCcJCCCFE\nKZEgLIQQQpQSCcJCCCFEKZEgLMqFCRMmEB0dTXR0NC1btqRLly7Z36emprp1rejoaBITEwt8zLRp\n01i4cGFxmuxxjz76KMuWLfPItZo2bcr58+dZu3Ytr7zySrFeb8mSJdl/d6VvXTV27Fg++eQTj1xL\niNJiKO0GCOEJb775Zvbfu3btyvvvv0+7du2KdK3Vq1cX+pjRo0cX6dplTffu3enevXuRn5+QkMDc\nuXO5//77Adf6Vgh/IiNh4RceeeQRpk+fTs+ePdmzZw+JiYkMGzaM6OhounbtyldffZX9WPsocMeO\nHTzwwANMmzaNnj170rVrV3bu3AnkHYV17dqVRYsWcd9999GxY0cmT56cfa3PPvuM9u3bc++997Jg\nwQK6du3qsH1Lly6lZ8+e3HXXXQwaNIi4uDgAli1bxnPPPce4cePo0aMHvXr14vjx4wDExMQwYMAA\noqKiGD16NFarNd91N2/eTN++ffPc1q9fP3777bcC+8Bu2bJlPProo4W+3vr16+nbty89evTgnnvu\n4fDhwwAMHDiQs2fPEh0djdlszu5bgG+//ZZevXoRHR3Nk08+SVJSUnbfzpo1i8cee4wuXbrw2GOP\nkZ6e7uyfFoAjR44wcOBAoqOj6devH7///jsAV69e5emnn6Znz55069aN1157jaysLKe3C1HSJAgL\nv3Hw4EF++eUXbrzxRj799FNq167N6tWr+eabb5g2bRrnzp3L95y//vqLG264gVWrVvHQQw/x6aef\nOrz2H3/8weLFi/nhhx+YP38+58+f5/jx48ydO5cff/yR7777zuko8OLFi7z11lt89dVX/Prrr9St\n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\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x7f1a925aa748>" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "dxwvuAaBApY0", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 34 | |
| }, | |
| "outputId": "8b7e1372-2f16-4637-f9ab-a32e8def6865" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "from keras.applications import VGG16\n", | |
| "from keras import layers\n", | |
| "from keras import models\n", | |
| "from keras import optimizers\n", | |
| "\n", | |
| "base_model = VGG16(\n", | |
| " weights='imagenet', include_top=False, input_shape=(150, 150, 3))\n", | |
| "print('Model loaded.')\n", | |
| "\n", | |
| "# build a classifier model to put on top of the convolutional model\n", | |
| "top_model = models.Sequential()\n", | |
| "top_model.add(layers.Flatten(input_shape=base_model.output_shape[1:]))\n", | |
| "top_model.add(layers.Dense(512, activation='relu'))\n", | |
| "top_model.add(layers.Dropout(0.6))\n", | |
| "top_model.add(layers.Dense(1, activation='sigmoid'))\n", | |
| "\n", | |
| "# note that it is necessary to start with a fully-trained\n", | |
| "# classifier, including the top classifier,\n", | |
| "# in order to successfully do fine-tuning\n", | |
| "top_model.load_weights(top_model_weights_path)\n", | |
| "\n", | |
| "\n", | |
| "# add the model on top of the convolutional base\n", | |
| "# model.add(top_model)\n", | |
| "model = models.Model(\n", | |
| " inputs=base_model.input, outputs=top_model(base_model.output))\n", | |
| "\n", | |
| "# set the first 25 layers (up to the last conv block)\n", | |
| "# to non-trainable (weights will not be updated)\n", | |
| "for layer in model.layers[:15]:\n", | |
| " layer.trainable = False\n", | |
| "\n" | |
| ], | |
| "execution_count": 26, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "Model loaded.\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "2EJ1pwclBL1d", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "# compile the model with a SGD/momentum optimizer\n", | |
| "# and a very slow learning rate.\n", | |
| "model.compile(\n", | |
| " loss='binary_crossentropy',\n", | |
| " optimizer=optimizers.SGD(lr=1e-4, momentum=0.9),\n", | |
| " metrics=['accuracy'])" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "4qQkLacIBUce", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 850 | |
| }, | |
| "outputId": "24ae3169-c5f6-431c-e957-388826fab911" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "# prepare data augmentation configuration\n", | |
| "train_datagen = ImageDataGenerator(\n", | |
| " rescale=1. / 255,\n", | |
| " shear_range=0.2,\n", | |
| " zoom_range=0.2,\n", | |
| " horizontal_flip=True)\n", | |
| "\n", | |
| "\n", | |
| "test_datagen = ImageDataGenerator(rescale=1. / 255)\n", | |
| "\n", | |
| "train_generator = train_datagen.flow_from_directory(\n", | |
| " train_dir,\n", | |
| " target_size=target_size,\n", | |
| " batch_size=batch_size,\n", | |
| " class_mode='binary')\n", | |
| "\n", | |
| "validation_generator = test_datagen.flow_from_directory(\n", | |
| " validation_dir,\n", | |
| " target_size=target_size,\n", | |
| " batch_size=batch_size,\n", | |
| " class_mode='binary')\n", | |
| "\n", | |
| "model.summary()" | |
| ], | |
| "execution_count": 28, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "Found 2000 images belonging to 2 classes.\n", | |
| "Found 1000 images belonging to 2 classes.\n", | |
| "_________________________________________________________________\n", | |
| "Layer (type) Output Shape Param # \n", | |
| "=================================================================\n", | |
| "input_8 (InputLayer) (None, 150, 150, 3) 0 \n", | |
| "_________________________________________________________________\n", | |
| "block1_conv1 (Conv2D) (None, 150, 150, 64) 1792 \n", | |
| "_________________________________________________________________\n", | |
| "block1_conv2 (Conv2D) (None, 150, 150, 64) 36928 \n", | |
| "_________________________________________________________________\n", | |
| "block1_pool (MaxPooling2D) (None, 75, 75, 64) 0 \n", | |
| "_________________________________________________________________\n", | |
| "block2_conv1 (Conv2D) (None, 75, 75, 128) 73856 \n", | |
| "_________________________________________________________________\n", | |
| "block2_conv2 (Conv2D) (None, 75, 75, 128) 147584 \n", | |
| "_________________________________________________________________\n", | |
| "block2_pool (MaxPooling2D) (None, 37, 37, 128) 0 \n", | |
| "_________________________________________________________________\n", | |
| "block3_conv1 (Conv2D) (None, 37, 37, 256) 295168 \n", | |
| "_________________________________________________________________\n", | |
| "block3_conv2 (Conv2D) (None, 37, 37, 256) 590080 \n", | |
| "_________________________________________________________________\n", | |
| "block3_conv3 (Conv2D) (None, 37, 37, 256) 590080 \n", | |
| "_________________________________________________________________\n", | |
| "block3_pool (MaxPooling2D) (None, 18, 18, 256) 0 \n", | |
| "_________________________________________________________________\n", | |
| "block4_conv1 (Conv2D) (None, 18, 18, 512) 1180160 \n", | |
| "_________________________________________________________________\n", | |
| "block4_conv2 (Conv2D) (None, 18, 18, 512) 2359808 \n", | |
| "_________________________________________________________________\n", | |
| "block4_conv3 (Conv2D) (None, 18, 18, 512) 2359808 \n", | |
| "_________________________________________________________________\n", | |
| "block4_pool (MaxPooling2D) (None, 9, 9, 512) 0 \n", | |
| "_________________________________________________________________\n", | |
| "block5_conv1 (Conv2D) (None, 9, 9, 512) 2359808 \n", | |
| "_________________________________________________________________\n", | |
| "block5_conv2 (Conv2D) (None, 9, 9, 512) 2359808 \n", | |
| "_________________________________________________________________\n", | |
| "block5_conv3 (Conv2D) (None, 9, 9, 512) 2359808 \n", | |
| "_________________________________________________________________\n", | |
| "block5_pool (MaxPooling2D) (None, 4, 4, 512) 0 \n", | |
| "_________________________________________________________________\n", | |
| "sequential_7 (Sequential) (None, 1) 4195329 \n", | |
| "=================================================================\n", | |
| "Total params: 18,910,017\n", | |
| "Trainable params: 11,274,753\n", | |
| "Non-trainable params: 7,635,264\n", | |
| "_________________________________________________________________\n" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "id": "01oYHQGfBeAq", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 51 | |
| }, | |
| "outputId": "201f6ae1-42be-454d-e7d7-45f9ffb32a4c" | |
| }, | |
| "cell_type": "code", | |
| "source": [ | |
| "nb_train_samples = 2000\n", | |
| "nb_validation_samples = 1000\n", | |
| "\n", | |
| "history = model.fit_generator(\n", | |
| " train_generator,\n", | |
| " steps_per_epoch=nb_train_samples // batch_size,\n", | |
| " epochs=epochs,\n", | |
| " validation_data=validation_generator,\n", | |
| " validation_steps=nb_validation_samples // batch_size)\n", | |
| "\n", | |
| "top_model_weights_path_fix_basemodel = 'fc_model_fix_basemodel.h5'\n", | |
| "model.save_weights(top_model_weights_path_fix_basemodel)" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": [ | |
| "Epoch 1/50\n", | |
| " 35/100 [=========>....................] - ETA: 6:29 - loss: 0.9995 - acc: 0.8414" | |
| ], | |
| "name": "stdout" | |
| } | |
| ] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment