{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 語単位のone-hotベクトル表現" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "# This is our initial data; one entry per \"sample\"\n", "# (in this toy example, a \"sample\" is just a sentence, but\n", "# it could be an entire document).\n", "samples = ['The cat sat on the mat.', 'The dog ate my homework.']\n", "# First, build an index of all tokens in the data.\n", "token_index = {}\n", "for sample in samples:\n", " # We simply tokenize the samples via the `split` method.\n", " # in real life, we would also strip punctuation and special characters\n", " # from the samples.\n", " for word in sample.split():\n", " if word not in token_index:\n", " # Assign a unique index to each unique word\n", " token_index[word] = len(token_index) + 1\n", " # Note that we don't attribute index 0 to anything.\n", "# Next, we vectorize our samples.\n", "# We will only consider the first `max_length` words in each sample.\n", "max_length = 10\n", "# This is where we store our results:\n", "results = np.zeros((len(samples), max_length, max(token_index.values()) + 1))\n", "for i, sample in enumerate(samples):\n", " for j, word in enumerate(sample.split()):\n", " index = token_index.get(word)\n", " results[i, j, index] = 1." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]],\n", "\n", " [[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Found 9 unique tokens.\n" ] } ], "source": [ "from keras.preprocessing.text import Tokenizer\n", "\n", "samples = ['The cat sat on the mat.', 'The dog ate my homework.']\n", "# We create a tokenizer, configured to only take\n", "# into account the top-1000 most common on words\n", "tokenizer = Tokenizer(num_words=1000)\n", "# The builds the word index\n", "tokenizer.fit_on_texts(samples)\n", "# This turns strings into lists of integer indices.\n", "sequences = tokenizer.texts_to_sequences(samples)\n", "# You could also directly get the one-hot binary representations.\n", "# Note that other vectorization modes than one-hot encoding are supported!\n", "one_hot_results = tokenizer.texts_to_matrix(samples, mode='binary')\n", "# This is how you can recover the word index that was computed\n", "word_index = tokenizer.word_index\n", "print('Found %s unique tokens.' % len(word_index))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 1., 1., ..., 0., 0., 0.],\n", " [ 0., 1., 0., ..., 0., 0., 0.]])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "one_hot_results" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[[1, 6, 9, 2, 1, 4], [1, 5, 3, 7, 8]]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sequences" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Word埋め込みベクトル(単語のIDをベクトル形式に変換)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from keras.layers import Embedding\n", "# The Embedding layer takes at least two arguments:\n", "# the number of possible tokens, here 1000 (1 + maximum word index),\n", "# and the dimensionality of the embeddings, here 64.\n", "embedding_layer = Embedding(1000, 64)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from keras.datasets import imdb\n", "from keras.preprocessing import sequence\n", "\n", "max_features = 10000 # number of words to consider as features\n", "maxlen = 20 # cut texts after this number of words (among top max_features most common words)\n", "\n", "# Load the data as lists of integers.\n", "(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)\n", "\n", "# This turns our lists of integers\n", "# into a 2D integer tensor of shape `(samples, maxlen)`\n", "x_train = sequence.pad_sequences(x_train, maxlen=maxlen)\n", "x_test = sequence.pad_sequences(x_test, maxlen=maxlen)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "embedding_2 (Embedding) (None, 20, 8) 80000 \n", "_________________________________________________________________\n", "flatten_1 (Flatten) (None, 160) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 1) 161 \n", "=================================================================\n", "Total params: 80,161\n", "Trainable params: 80,161\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "Train on 20000 samples, validate on 5000 samples\n", "Epoch 1/10\n", "20000/20000 [==============================] - 2s - loss: 0.6561 - acc: 0.6479 - val_loss: 0.5909 - val_acc: 0.7146\n", "Epoch 2/10\n", "20000/20000 [==============================] - 1s - loss: 0.5193 - acc: 0.7591 - val_loss: 0.5121 - val_acc: 0.7366\n", "Epoch 3/10\n", "20000/20000 [==============================] - 1s - loss: 0.4516 - acc: 0.7929 - val_loss: 0.4952 - val_acc: 0.7466\n", "Epoch 4/10\n", "20000/20000 [==============================] - 1s - loss: 0.4194 - acc: 0.8064 - val_loss: 0.4907 - val_acc: 0.7538\n", "Epoch 5/10\n", "20000/20000 [==============================] - 1s - loss: 0.3968 - acc: 0.8199 - val_loss: 0.4916 - val_acc: 0.7578\n", "Epoch 6/10\n", "20000/20000 [==============================] - 1s - loss: 0.3787 - acc: 0.8314 - val_loss: 0.4954 - val_acc: 0.7586\n", "Epoch 7/10\n", "20000/20000 [==============================] - 1s - loss: 0.3627 - acc: 0.8416 - val_loss: 0.5004 - val_acc: 0.7572\n", "Epoch 8/10\n", "20000/20000 [==============================] - 1s - loss: 0.3477 - acc: 0.8482 - val_loss: 0.5058 - val_acc: 0.7574\n", "Epoch 9/10\n", "20000/20000 [==============================] - 1s - loss: 0.3333 - acc: 0.8582 - val_loss: 0.5122 - val_acc: 0.7524\n", "Epoch 10/10\n", "20000/20000 [==============================] - 1s - loss: 0.3197 - acc: 0.8669 - val_loss: 0.5182 - val_acc: 0.7548\n" ] } ], "source": [ "from keras.models import Sequential\n", "from keras.layers import Flatten, Dense\n", "model = Sequential()\n", "# We specify the maximum input length to our Embedding layer\n", "# so we can later flatten the embedded inputs\n", "model.add(Embedding(10000, 8, input_length=maxlen))\n", "# After the Embedding layer, our activations have shape `(samples, maxlen, 8)`\n", "# Flatten the 3D tensor of embeddings into a 2D tensor of shape `(samples, maxlen * 8)`\n", "model.add(Flatten())\n", "# Add the classifier on top\n", "model.add(Dense(1, activation='sigmoid'))\n", "model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])\n", "model.summary()\n", "history = model.fit(x_train, y_train,\n", " epochs=10,\n", " batch_size=32,\n", " validation_split=0.2)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading data...\n", "(25000, 'train sequences')\n", "(25000, 'test sequences')\n", "Pad sequences (samples x time)\n", "('input_train shape:', (25000, 500))\n", "('input_test shape:', (25000, 500))\n" ] } ], "source": [ "from keras.layers import SimpleRNN\n", "from keras.models import Sequential\n", "\n", "max_features = 10000 # number of words to consider as features\n", "maxlen = 500 # cut texts after this number of words (among top max_features most common words)\n", "batch_size = 32\n", "\n", "print('Loading data...')\n", "(input_train, y_train), (input_test, y_test) = imdb.load_data(nb_words=max_features)\n", "print(len(input_train), 'train sequences')\n", "print(len(input_test), 'test sequences')\n", "print('Pad sequences (samples x time)')\n", "input_train = sequence.pad_sequences(input_train, maxlen=maxlen)\n", "input_test = sequence.pad_sequences(input_test, maxlen=maxlen)\n", "print('input_train shape:', input_train.shape)\n", "print('input_test shape:', input_test.shape)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 20000 samples, validate on 5000 samples\n", "Epoch 1/8\n", "20000/20000 [==============================] - 33s - loss: 0.6576 - acc: 0.6001 - val_loss: 0.7177 - val_acc: 0.5362\n", "Epoch 2/8\n", "20000/20000 [==============================] - 36s - loss: 0.4236 - acc: 0.8206 - val_loss: 0.4580 - val_acc: 0.7914\n", "Epoch 3/8\n", "20000/20000 [==============================] - 32s - loss: 0.2923 - acc: 0.8826 - val_loss: 0.3666 - val_acc: 0.8472\n", "Epoch 4/8\n", "20000/20000 [==============================] - 32s - loss: 0.2055 - acc: 0.9227 - val_loss: 0.4738 - val_acc: 0.7870\n", "Epoch 5/8\n", "20000/20000 [==============================] - 32s - loss: 0.1464 - acc: 0.9477 - val_loss: 0.4484 - val_acc: 0.8308\n", "Epoch 6/8\n", "20000/20000 [==============================] - 32s - loss: 0.0942 - acc: 0.9684 - val_loss: 1.7280 - val_acc: 0.5814\n", "Epoch 7/8\n", "20000/20000 [==============================] - 32s - loss: 0.0807 - acc: 0.9742 - val_loss: 0.6480 - val_acc: 0.7598\n", "Epoch 8/8\n", "20000/20000 [==============================] - 33s - loss: 0.0427 - acc: 0.9872 - val_loss: 0.5870 - val_acc: 0.7986\n" ] } ], "source": [ "from keras.layers import Dense\n", "\n", "model = Sequential()\n", "model.add(Embedding(max_features, 32))\n", "model.add(SimpleRNN(32))\n", "model.add(Dense(1, activation='sigmoid'))\n", "model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])\n", "history = model.fit(input_train, y_train, nb_epoch=8, batch_size=128, validation_split=0.2)\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt \n", "import seaborn\n", "\n", "%matplotlib inline\n", "\n", "history_dict = history.history\n", "\n", "# history_dictをpandasnのデータフレームに変換\n", "d = pd.DataFrame(history_dict)\n", "# loss, val_lossをプロット\n", "d[['loss', 'val_loss']].plot()\n", "plt.show()\n", "\n", "d[['acc', 'val_acc']].plot()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 20000 samples, validate on 5000 samples\n", "Epoch 1/10\n", "20000/20000 [==============================] - 181s - loss: 0.5529 - acc: 0.7366 - val_loss: 0.3917 - val_acc: 0.8424\n", "Epoch 2/10\n", "20000/20000 [==============================] - 178s - loss: 0.3070 - acc: 0.8762 - val_loss: 0.3548 - val_acc: 0.8478\n", "Epoch 3/10\n", "20000/20000 [==============================] - 186s - loss: 0.2414 - acc: 0.9083 - val_loss: 0.3468 - val_acc: 0.8466\n", "Epoch 4/10\n", "20000/20000 [==============================] - 194s - loss: 0.2050 - acc: 0.9249 - val_loss: 0.3181 - val_acc: 0.8852\n", "Epoch 5/10\n", "20000/20000 [==============================] - 196s - loss: 0.1837 - acc: 0.9330 - val_loss: 0.2947 - val_acc: 0.8820\n", "Epoch 6/10\n", "20000/20000 [==============================] - 165s - loss: 0.1626 - acc: 0.9411 - val_loss: 0.3284 - val_acc: 0.8526\n", "Epoch 7/10\n", "20000/20000 [==============================] - 171s - loss: 0.1506 - acc: 0.9479 - val_loss: 0.3142 - val_acc: 0.8808\n", "Epoch 8/10\n", "20000/20000 [==============================] - 176s - loss: 0.1378 - acc: 0.9503 - val_loss: 0.3504 - val_acc: 0.8858\n", "Epoch 9/10\n", "20000/20000 [==============================] - 170s - loss: 0.1269 - acc: 0.9564 - val_loss: 0.3428 - val_acc: 0.8758\n", "Epoch 10/10\n", "20000/20000 [==============================] - 168s - loss: 0.1153 - acc: 0.9602 - val_loss: 0.3337 - val_acc: 0.8708\n" ] } ], "source": [ "from keras.layers import LSTM\n", "\n", "model = Sequential()\n", "model.add(Embedding(max_features, 32))\n", "model.add(LSTM(32))\n", "model.add(Dense(1, activation='sigmoid'))\n", "model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])\n", "history = model.fit(input_train, y_train, nb_epoch=10, batch_size=128, validation_split=0.2)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "history_dict = history.history\n", "\n", "# history_dictをpandasnのデータフレームに変換\n", "d = pd.DataFrame(history_dict)\n", "# loss, val_lossをプロット\n", "d[['loss', 'val_loss']].plot()\n", "plt.show()\n", "\n", "d[['acc', 'val_acc']].plot()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Archive: jena_climate_2009_2016.csv.zip\n", " inflating: jena_climate_2009_2016.csv \n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "--2017-07-15 07:41:46-- https://s3.amazonaws.com/keras-datasets/jena_climate_2009_2016.csv.zip\n", "Resolving s3.amazonaws.com (s3.amazonaws.com)... 52.216.228.83\n", "Connecting to s3.amazonaws.com (s3.amazonaws.com)|52.216.228.83|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 13568290 (13M) [application/zip]\n", "Saving to: 'jena_climate_2009_2016.csv.zip'\n", "\n", " 0K .......... .......... .......... .......... .......... 0% 72.7K 3m1s\n", " 50K .......... .......... .......... .......... .......... 0% 244K 1m57s\n", " 100K .......... .......... .......... .......... .......... 1% 256K 95s\n", " 150K .......... .......... .......... .......... .......... 1% 356K 80s\n", " 200K .......... .......... .......... .......... .......... 1% 567K 68s\n", " 250K .......... .......... .......... .......... .......... 2% 479K 61s\n", " 300K .......... .......... .......... .......... .......... 2% 544K 56s\n", " 350K .......... .......... .......... .......... .......... 3% 3.99M 49s\n", " 400K .......... .......... .......... .......... .......... 3% 503K 46s\n", " 450K .......... .......... .......... .......... .......... 3% 1.79M 42s\n", " 500K .......... .......... .......... .......... .......... 4% 527K 40s\n", " 550K .......... .......... .......... .......... .......... 4% 1.70M 37s\n", " 600K .......... .......... .......... .......... .......... 4% 810K 36s\n", " 650K .......... .......... .......... .......... .......... 5% 3.31M 33s\n", " 700K .......... .......... .......... .......... .......... 5% 1.43M 31s\n", " 750K .......... .......... .......... .......... .......... 6% 684K 30s\n", " 800K .......... .......... .......... .......... .......... 6% 3.70M 29s\n", " 850K .......... .......... .......... .......... .......... 6% 825K 28s\n", " 900K .......... .......... .......... .......... .......... 7% 3.95M 26s\n", " 950K .......... .......... .......... .......... .......... 7% 5.17M 25s\n", " 1000K .......... .......... .......... .......... .......... 7% 514K 25s\n", " 1050K .......... .......... .......... .......... .......... 8% 3.90M 24s\n", " 1100K .......... .......... .......... .......... .......... 8% 778K 23s\n", " 1150K .......... .......... .......... .......... .......... 9% 2.78M 23s\n", " 1200K .......... .......... .......... .......... .......... 9% 6.49M 22s\n", " 1250K .......... .......... .......... .......... .......... 9% 540K 22s\n", " 1300K .......... .......... .......... .......... .......... 10% 5.45M 21s\n", " 1350K .......... .......... .......... .......... .......... 10% 741K 21s\n", " 1400K .......... .......... .......... .......... .......... 10% 4.52M 20s\n", " 1450K .......... .......... .......... .......... .......... 11% 5.88M 19s\n", " 1500K .......... .......... .......... .......... .......... 11% 573K 19s\n", " 1550K .......... .......... .......... .......... .......... 12% 2.99M 19s\n", " 1600K .......... .......... .......... .......... .......... 12% 1.00M 18s\n", " 1650K .......... .......... .......... .......... .......... 12% 2.10M 18s\n", " 1700K .......... .......... .......... .......... .......... 13% 4.95M 17s\n", " 1750K .......... .......... .......... .......... .......... 13% 2.74M 17s\n", " 1800K .......... .......... .......... .......... .......... 13% 686K 17s\n", " 1850K .......... .......... .......... .......... .......... 14% 3.43M 16s\n", " 1900K .......... .......... .......... .......... .......... 14% 5.97M 16s\n", " 1950K .......... .......... .......... .......... .......... 15% 515K 16s\n", " 2000K .......... .......... .......... .......... .......... 15% 3.23M 16s\n", " 2050K .......... .......... .......... .......... .......... 15% 5.26M 15s\n", " 2100K .......... .......... .......... .......... .......... 16% 199K 16s\n", " 2150K .......... .......... .......... .......... .......... 16% 5.02M 16s\n", " 2200K .......... .......... .......... .......... .......... 16% 6.11M 15s\n", " 2250K .......... .......... .......... .......... .......... 17% 5.64M 15s\n", " 2300K .......... .......... .......... .......... .......... 17% 7.23M 15s\n", " 2350K .......... .......... .......... .......... .......... 18% 8.02M 14s\n", " 2400K .......... .......... .......... .......... .......... 18% 8.19M 14s\n", " 2450K .......... .......... .......... .......... .......... 18% 7.97M 14s\n", " 2500K .......... .......... .......... .......... .......... 19% 7.00M 13s\n", " 2550K .......... .......... .......... .......... .......... 19% 8.88M 13s\n", " 2600K .......... .......... .......... .......... .......... 19% 9.14M 13s\n", " 2650K .......... .......... .......... .......... .......... 20% 778K 13s\n", " 2700K .......... .......... .......... .......... .......... 20% 3.02M 12s\n", " 2750K .......... .......... .......... .......... .......... 21% 4.15M 12s\n", " 2800K .......... .......... .......... .......... .......... 21% 1.35M 12s\n", " 2850K .......... .......... .......... .......... .......... 21% 3.38M 12s\n", " 2900K .......... .......... .......... .......... .......... 22% 4.83M 12s\n", " 2950K .......... .......... .......... .......... .......... 22% 582K 12s\n", " 3000K .......... .......... .......... .......... .......... 23% 959K 12s\n", " 3050K .......... .......... .......... .......... .......... 23% 4.76M 11s\n", " 3100K .......... .......... .......... .......... .......... 23% 1.90M 11s\n", " 3150K .......... .......... .......... .......... .......... 24% 4.61M 11s\n", " 3200K .......... .......... .......... .......... .......... 24% 5.57M 11s\n", " 3250K .......... .......... .......... .......... .......... 24% 4.49M 11s\n", " 3300K .......... .......... .......... .......... .......... 25% 724K 11s\n", " 3350K .......... .......... .......... .......... .......... 25% 498K 11s\n", " 3400K .......... .......... .......... .......... .......... 26% 4.25M 11s\n", " 3450K .......... .......... .......... .......... .......... 26% 5.99M 10s\n", " 3500K .......... .......... .......... .......... .......... 26% 4.90M 10s\n", " 3550K .......... .......... .......... .......... .......... 27% 5.01M 10s\n", " 3600K .......... .......... .......... .......... .......... 27% 6.39M 10s\n", " 3650K .......... .......... .......... .......... .......... 27% 5.88M 10s\n", " 3700K .......... .......... .......... .......... .......... 28% 383K 10s\n", " 3750K .......... .......... .......... .......... .......... 28% 807K 10s\n", " 3800K .......... .......... .......... .......... .......... 29% 3.35M 10s\n", " 3850K .......... .......... .......... .......... .......... 29% 3.05M 10s\n", " 3900K .......... .......... .......... .......... .......... 29% 4.30M 9s\n", " 3950K .......... .......... .......... .......... .......... 30% 4.30M 9s\n", " 4000K .......... .......... .......... .......... .......... 30% 4.50M 9s\n", " 4050K .......... .......... .......... .......... .......... 30% 821K 9s\n", " 4100K .......... .......... .......... .......... .......... 31% 1.08M 9s\n", " 4150K .......... .......... .......... .......... .......... 31% 1.49M 9s\n", " 4200K .......... .......... .......... .......... .......... 32% 4.14M 9s\n", " 4250K .......... .......... .......... .......... .......... 32% 4.18M 9s\n", " 4300K .......... .......... .......... .......... .......... 32% 4.65M 9s\n", " 4350K .......... .......... .......... .......... .......... 33% 2.62M 8s\n", " 4400K .......... .......... .......... .......... .......... 33% 4.71M 8s\n", " 4450K .......... .......... .......... .......... .......... 33% 606K 8s\n", " 4500K .......... .......... .......... .......... .......... 34% 1.25M 8s\n", " 4550K .......... .......... .......... .......... .......... 34% 3.83M 8s\n", " 4600K .......... .......... .......... .......... .......... 35% 4.09M 8s\n", " 4650K .......... .......... .......... .......... .......... 35% 2.48M 8s\n", " 4700K .......... .......... .......... .......... .......... 35% 2.42M 8s\n", " 4750K .......... .......... .......... .......... .......... 36% 4.15M 8s\n", " 4800K .......... .......... .......... .......... .......... 36% 842K 8s\n", " 4850K .......... .......... .......... .......... .......... 36% 1.42M 8s\n", " 4900K .......... .......... .......... .......... .......... 37% 2.00M 8s\n", " 4950K .......... .......... .......... .......... .......... 37% 3.92M 8s\n", " 5000K .......... .......... .......... .......... .......... 38% 853K 7s\n", " 5050K .......... .......... .......... .......... .......... 38% 4.85M 7s\n", " 5100K .......... .......... .......... .......... .......... 38% 5.89M 7s\n", " 5150K .......... .......... .......... .......... .......... 39% 7.99M 7s\n", " 5200K .......... .......... .......... .......... .......... 39% 831K 7s\n", " 5250K .......... .......... .......... .......... .......... 39% 1.75M 7s\n", " 5300K .......... .......... .......... .......... .......... 40% 3.36M 7s\n", " 5350K .......... .......... .......... .......... .......... 40% 903K 7s\n", " 5400K .......... .......... .......... .......... .......... 41% 4.38M 7s\n", " 5450K .......... .......... .......... .......... .......... 41% 2.31M 7s\n", " 5500K .......... .......... .......... .......... .......... 41% 5.51M 7s\n", " 5550K .......... .......... .......... .......... .......... 42% 188K 7s\n", " 5600K .......... .......... .......... .......... .......... 42% 3.57M 7s\n", " 5650K .......... .......... .......... .......... .......... 43% 6.24M 7s\n", " 5700K .......... .......... .......... .......... .......... 43% 6.29M 7s\n", " 5750K .......... .......... .......... .......... .......... 43% 7.46M 7s\n", " 5800K .......... .......... .......... .......... .......... 44% 8.71M 7s\n", " 5850K .......... .......... .......... .......... .......... 44% 9.08M 6s\n", " 5900K .......... .......... .......... .......... .......... 44% 8.39M 6s\n", " 5950K .......... .......... .......... .......... .......... 45% 10.4M 6s\n", " 6000K .......... .......... .......... .......... .......... 45% 12.7M 6s\n", " 6050K .......... .......... .......... .......... .......... 46% 1.04M 6s\n", " 6100K .......... .......... .......... .......... .......... 46% 3.94M 6s\n", " 6150K .......... .......... .......... .......... .......... 46% 5.93M 6s\n", " 6200K .......... .......... .......... .......... .......... 47% 885K 6s\n", " 6250K .......... .......... .......... .......... .......... 47% 2.03M 6s\n", " 6300K .......... .......... .......... .......... .......... 47% 3.53M 6s\n", " 6350K .......... .......... .......... .......... .......... 48% 5.56M 6s\n", " 6400K .......... .......... .......... .......... .......... 48% 614K 6s\n", " 6450K .......... .......... .......... .......... .......... 49% 3.32M 6s\n", " 6500K .......... .......... .......... .......... .......... 49% 2.74M 6s\n", " 6550K .......... .......... .......... .......... .......... 49% 687K 6s\n", " 6600K .......... .......... .......... .......... .......... 50% 4.16M 5s\n", " 6650K .......... .......... .......... .......... .......... 50% 253K 6s\n", " 6700K .......... .......... .......... .......... .......... 50% 3.26M 6s\n", " 6750K .......... .......... .......... .......... .......... 51% 8.01M 5s\n", " 6800K .......... .......... .......... .......... .......... 51% 9.79M 5s\n", " 6850K .......... .......... .......... .......... .......... 52% 10.2M 5s\n", " 6900K .......... .......... .......... .......... .......... 52% 9.01M 5s\n", " 6950K .......... .......... .......... .......... .......... 52% 9.25M 5s\n", " 7000K .......... .......... .......... .......... .......... 53% 10.0M 5s\n", " 7050K .......... .......... .......... .......... .......... 53% 816K 5s\n", " 7100K .......... .......... .......... .......... .......... 53% 5.10M 5s\n", " 7150K .......... .......... .......... .......... .......... 54% 787K 5s\n", " 7200K .......... .......... .......... .......... .......... 54% 2.97M 5s\n", " 7250K .......... .......... .......... .......... .......... 55% 6.25M 5s\n", " 7300K .......... .......... .......... .......... .......... 55% 564K 5s\n", " 7350K .......... .......... .......... .......... .......... 55% 3.67M 5s\n", " 7400K .......... .......... .......... .......... .......... 56% 935K 5s\n", " 7450K .......... .......... .......... .......... .......... 56% 1.14M 5s\n", " 7500K .......... .......... .......... .......... .......... 56% 5.06M 5s\n", " 7550K .......... .......... .......... .......... .......... 57% 778K 5s\n", " 7600K .......... .......... .......... .......... .......... 57% 2.34M 5s\n", " 7650K .......... .......... .......... .......... .......... 58% 5.77M 4s\n", " 7700K .......... .......... .......... .......... .......... 58% 646K 4s\n", " 7750K .......... .......... .......... .......... .......... 58% 2.11M 4s\n", " 7800K .......... .......... .......... .......... .......... 59% 4.75M 4s\n", " 7850K .......... .......... .......... .......... .......... 59% 753K 4s\n", " 7900K .......... .......... .......... .......... .......... 59% 2.21M 4s\n", " 7950K .......... .......... .......... .......... .......... 60% 4.93M 4s\n", " 8000K .......... .......... .......... .......... .......... 60% 625K 4s\n", " 8050K .......... .......... .......... .......... .......... 61% 3.94M 4s\n", " 8100K .......... .......... .......... .......... .......... 61% 843K 4s\n", " 8150K .......... .......... .......... .......... .......... 61% 1.98M 4s\n", " 8200K .......... .......... .......... .......... .......... 62% 3.94M 4s\n", " 8250K .......... .......... .......... .......... .......... 62% 658K 4s\n", " 8300K .......... .......... .......... .......... .......... 63% 3.53M 4s\n", " 8350K .......... .......... .......... .......... .......... 63% 5.31M 4s\n", " 8400K .......... .......... .......... .......... .......... 63% 696K 4s\n", " 8450K .......... .......... .......... .......... .......... 64% 2.79M 4s\n", " 8500K .......... .......... .......... .......... .......... 64% 5.85M 4s\n", " 8550K .......... .......... .......... .......... .......... 64% 680K 4s\n", " 8600K .......... .......... .......... .......... .......... 65% 3.28M 4s\n", " 8650K .......... .......... .......... .......... .......... 65% 4.49M 4s\n", " 8700K .......... .......... .......... .......... .......... 66% 533K 4s\n", " 8750K .......... .......... .......... .......... .......... 66% 3.76M 4s\n", " 8800K .......... .......... .......... .......... .......... 66% 6.96M 4s\n", " 8850K .......... .......... .......... .......... .......... 67% 870K 3s\n", " 8900K .......... .......... .......... .......... .......... 67% 4.57M 3s\n", " 8950K .......... .......... .......... .......... .......... 67% 541K 3s\n", " 9000K .......... .......... .......... .......... .......... 68% 3.55M 3s\n", " 9050K .......... .......... .......... .......... .......... 68% 4.48M 3s\n", " 9100K .......... .......... .......... .......... .......... 69% 987K 3s\n", " 9150K .......... .......... .......... .......... .......... 69% 1.12M 3s\n", " 9200K .......... .......... .......... .......... .......... 69% 3.72M 3s\n", " 9250K .......... .......... .......... .......... .......... 70% 786K 3s\n", " 9300K .......... .......... .......... .......... .......... 70% 4.29M 3s\n", " 9350K .......... .......... .......... .......... .......... 70% 5.41M 3s\n", " 9400K .......... .......... .......... .......... .......... 71% 910K 3s\n", " 9450K .......... .......... .......... .......... .......... 71% 1.13M 3s\n", " 9500K .......... .......... .......... .......... .......... 72% 3.98M 3s\n", " 9550K .......... .......... .......... .......... .......... 72% 574K 3s\n", " 9600K .......... .......... .......... .......... .......... 72% 3.54M 3s\n", " 9650K .......... .......... .......... .......... .......... 73% 5.61M 3s\n", " 9700K .......... .......... .......... .......... .......... 73% 1.10M 3s\n", " 9750K .......... .......... .......... .......... .......... 73% 1.70M 3s\n", " 9800K .......... .......... .......... .......... .......... 74% 545K 3s\n", " 9850K .......... .......... .......... .......... .......... 74% 3.36M 3s\n", " 9900K .......... .......... .......... .......... .......... 75% 3.89M 3s\n", " 9950K .......... .......... .......... .......... .......... 75% 2.14M 3s\n", " 10000K .......... .......... .......... .......... .......... 75% 941K 3s\n", " 10050K .......... .......... .......... .......... .......... 76% 3.45M 2s\n", " 10100K .......... .......... .......... .......... .......... 76% 588K 2s\n", " 10150K .......... .......... .......... .......... .......... 76% 3.07M 2s\n", " 10200K .......... .......... .......... .......... .......... 77% 221K 2s\n", " 10250K .......... .......... .......... .......... .......... 77% 8.39M 2s\n", " 10300K .......... .......... .......... .......... .......... 78% 5.85M 2s\n", " 10350K .......... .......... .......... .......... .......... 78% 7.67M 2s\n", " 10400K .......... .......... .......... .......... .......... 78% 7.28M 2s\n", " 10450K .......... .......... .......... .......... .......... 79% 7.59M 2s\n", " 10500K .......... .......... .......... .......... .......... 79% 6.60M 2s\n", " 10550K .......... .......... .......... .......... .......... 79% 6.30M 2s\n", " 10600K .......... .......... .......... .......... .......... 80% 474K 2s\n", " 10650K .......... .......... .......... .......... .......... 80% 2.55M 2s\n", " 10700K .......... .......... .......... .......... .......... 81% 4.75M 2s\n", " 10750K .......... .......... .......... .......... .......... 81% 4.91M 2s\n", " 10800K .......... .......... .......... .......... .......... 81% 748K 2s\n", " 10850K .......... .......... .......... .......... .......... 82% 499K 2s\n", " 10900K .......... .......... .......... .......... .......... 82% 2.54M 2s\n", " 10950K .......... .......... .......... .......... .......... 83% 5.11M 2s\n", " 11000K .......... .......... .......... .......... .......... 83% 5.30M 2s\n", " 11050K .......... .......... .......... .......... .......... 83% 993K 2s\n", " 11100K .......... .......... .......... .......... .......... 84% 441K 2s\n", " 11150K .......... .......... .......... .......... .......... 84% 4.11M 2s\n", " 11200K .......... .......... .......... .......... .......... 84% 5.11M 2s\n", " 11250K .......... .......... .......... .......... .......... 85% 5.01M 2s\n", " 11300K .......... .......... .......... .......... .......... 85% 938K 1s\n", " 11350K .......... .......... .......... .......... .......... 86% 465K 1s\n", " 11400K .......... .......... .......... .......... .......... 86% 3.83M 1s\n", " 11450K .......... .......... .......... .......... .......... 86% 4.46M 1s\n", " 11500K .......... .......... .......... .......... .......... 87% 4.27M 1s\n", " 11550K .......... .......... .......... .......... .......... 87% 659K 1s\n", " 11600K .......... .......... .......... .......... .......... 87% 614K 1s\n", " 11650K .......... .......... .......... .......... .......... 88% 2.89M 1s\n", " 11700K .......... .......... .......... .......... .......... 88% 4.38M 1s\n", " 11750K .......... .......... .......... .......... .......... 89% 1.00M 1s\n", " 11800K .......... .......... .......... .......... .......... 89% 1.40M 1s\n", " 11850K .......... .......... .......... .......... .......... 89% 488K 1s\n", " 11900K .......... .......... .......... .......... .......... 90% 3.85M 1s\n", " 11950K .......... .......... .......... .......... .......... 90% 5.46M 1s\n", " 12000K .......... .......... .......... .......... .......... 90% 6.86M 1s\n", " 12050K .......... .......... .......... .......... .......... 91% 797K 1s\n", " 12100K .......... .......... .......... .......... .......... 91% 483K 1s\n", " 12150K .......... .......... .......... .......... .......... 92% 4.03M 1s\n", " 12200K .......... .......... .......... .......... .......... 92% 3.20M 1s\n", " 12250K .......... .......... .......... .......... .......... 92% 4.15M 1s\n", " 12300K .......... .......... .......... .......... .......... 93% 764K 1s\n", " 12350K .......... .......... .......... .......... .......... 93% 334K 1s\n", " 12400K .......... .......... .......... .......... .......... 93% 3.00M 1s\n", " 12450K .......... .......... .......... .......... .......... 94% 236K 1s\n", " 12500K .......... .......... .......... .......... .......... 94% 2.64M 1s\n", " 12550K .......... .......... .......... .......... .......... 95% 7.10M 1s\n", " 12600K .......... .......... .......... .......... .......... 95% 7.03M 0s\n", " 12650K .......... .......... .......... .......... .......... 95% 9.04M 0s\n", " 12700K .......... .......... .......... .......... .......... 96% 10.3M 0s\n", " 12750K .......... .......... .......... .......... .......... 96% 538K 0s\n", " 12800K .......... .......... .......... .......... .......... 96% 759K 0s\n", " 12850K .......... .......... .......... .......... .......... 97% 1.67M 0s\n", " 12900K .......... .......... .......... .......... .......... 97% 4.74M 0s\n", " 12950K .......... .......... .......... .......... .......... 98% 606K 0s\n", " 13000K .......... .......... .......... .......... .......... 98% 741K 0s\n", " 13050K .......... .......... .......... .......... .......... 98% 1.42M 0s\n", " 13100K .......... .......... .......... .......... .......... 99% 5.71M 0s\n", " 13150K .......... .......... .......... .......... .......... 99% 547K 0s\n", " 13200K .......... .......... .......... .......... .......... 99% 1.97M 0s\n", " 13250K 100% 540G=11s\n", "\n", "2017-07-15 07:41:58 (1.22 MB/s) - 'jena_climate_2009_2016.csv.zip' saved [13568290/13568290]\n", "\n" ] } ], "source": [ "%%bash\n", "cd Downloads\n", "mkdir jena_climate\n", "cd jena_climate\n", "wget https://s3.amazonaws.com/keras-datasets/jena_climate_2009_2016.csv.zip\n", "unzip jena_climate_2009_2016.csv.zip" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['\"Date Time\"', '\"p (mbar)\"', '\"T (degC)\"', '\"Tpot (K)\"', '\"Tdew (degC)\"', '\"rh (%)\"', '\"VPmax (mbar)\"', '\"VPact (mbar)\"', '\"VPdef (mbar)\"', '\"sh (g/kg)\"', '\"H2OC (mmol/mol)\"', '\"rho (g/m**3)\"', '\"wv (m/s)\"', '\"max. wv (m/s)\"', '\"wd (deg)\"']\n", "420551\n" ] } ], "source": [ "import os\n", "data_dir = 'Downloads/jena_climate'\n", "fname = os.path.join(data_dir, 'jena_climate_2009_2016.csv')\n", "f = open(fname)\n", "data = f.read()\n", "f.close()\n", "lines = data.split('\\n')\n", "header = lines[0].split(',')\n", "lines = lines[1:]\n", "print(header)\n", "print(len(lines))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "float_data = np.zeros((len(lines), len(header) - 1))\n", "for i, line in enumerate(lines):\n", " values = [float(x) for x in line.split(',')[1:]]\n", " float_data[i, :] = values" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt \n", "import seaborn\n", "%matplotlib inline\n", "\n", "temp = float_data[:, 1] # temperature (in degrees Celsius)\n", "plt.plot(range(len(temp)), temp)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nULj+AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(range(1440), temp[:1440])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "データの正規化" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "mean = float_data[:200000].mean(axis=0)\n", "float_data -= mean\n", "std = float_data[:200000].std(axis=0)\n", "float_data /= std" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def generator(data, lookback, delay, min_index, max_index,\n", " shuffle=False, batch_size=128, step=6):\n", " if max_index is None:\n", " max_index = len(data) - delay - 1\n", " i = min_index + lookback\n", " while 1:\n", " if shuffle:\n", " rows = np.random.randint(min_index + lookback, max_index, size=batch_size)\n", " else:\n", " if i + batch_size >= max_index:\n", " i = min_index + lookback\n", " rows = np.arange(i, min(i + batch_size, max_index))\n", " i += len(rows)\n", " samples = np.zeros((len(rows), lookback // step, data.shape[-1]))\n", " targets = np.zeros((len(rows),))\n", " for j, row in enumerate(rows):\n", " indices = range(rows[j] - lookback, rows[j], step)\n", " samples[j] = data[indices]\n", " targets[j] = data[rows[j] + delay][1]\n", " yield samples, targets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "データは10分間隔で測定された温度データ\n", "- loopback = 720 : 5日分のデータ\n", "- steps = 6 : 1時間の6データ数\n", "- delay = 144 : 24時間後の温度を予測" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "lookback = 1440\n", "step = 6\n", "delay = 144\n", "batch_size = 128\n", "\n", "train_gen = generator(float_data, lookback=lookback, delay=delay,\n", " min_index=0, max_index=200000, shuffle=True, step=step,\n", "batch_size=batch_size)\n", "val_gen = generator(float_data, lookback=lookback, delay=delay,\n", " min_index=200001, max_index=300000, step=step, batch_size=batch_size)\n", "test_gen = generator(float_data, lookback=lookback, delay=delay,\n", " min_index=300001, max_index=None, step=step, batch_size=batch_size)\n", "# This is how many steps to draw from `val_gen` in order to see the whole validation set:\n", "val_steps = (300000 - 200001 - lookback) // batch_size\n", "# This is how many steps to draw from `test_gen` in order to see the whole test set:\n", "test_steps = (len(float_data) - 300001 - lookback) // batch_size" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.289735972991\n" ] } ], "source": [ "def evaluate_naive_method():\n", " batch_maes = []\n", " for step in range(val_steps):\n", " samples, targets = next(val_gen)\n", " preds = samples[:, -1, 1]\n", " mae = np.mean(np.abs(preds - targets))\n", " batch_maes.append(mae)\n", " print(np.mean(batch_maes))\n", "evaluate_naive_method()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "celsius_mae = 0.29 * std[1]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2.5672247338393395" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "celsius_mae" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "単純なニューラルネットモデルで、どの程度予測できるか見てみる。\n", "\n", "以下の結果は図6.18とは大きく異なる結果となっている。" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "500/500 [==============================] - 13s - loss: 1.8228 - val_loss: 1.1467\n", "Epoch 2/20\n", "500/500 [==============================] - 13s - loss: 1.4039 - val_loss: 2.0780\n", "Epoch 3/20\n", "500/500 [==============================] - 13s - loss: 3.1643 - val_loss: 4.6592\n", "Epoch 4/20\n", "500/500 [==============================] - 12s - loss: 6.5291 - val_loss: 5.9072\n", "Epoch 5/20\n", "500/500 [==============================] - 12s - loss: 10.6773 - val_loss: 15.8527\n", "Epoch 6/20\n", "500/500 [==============================] - 11s - loss: 15.3495 - val_loss: 18.8217\n", "Epoch 7/20\n", "500/500 [==============================] - 11s - loss: 20.0555 - val_loss: 29.2959\n", "Epoch 8/20\n", "500/500 [==============================] - 12s - loss: 24.8096 - val_loss: 19.2993\n", "Epoch 9/20\n", "500/500 [==============================] - 12s - loss: 29.8820 - val_loss: 26.0697\n", "Epoch 10/20\n", "500/500 [==============================] - 12s - loss: 34.9356 - val_loss: 30.9325\n", "Epoch 11/20\n", "500/500 [==============================] - 12s - loss: 39.6692 - val_loss: 54.1092\n", "Epoch 12/20\n", "500/500 [==============================] - 12s - loss: 44.7078 - val_loss: 53.9539\n", "Epoch 13/20\n", "500/500 [==============================] - 11s - loss: 49.5438 - val_loss: 29.9209\n", "Epoch 14/20\n", "500/500 [==============================] - 11s - loss: 54.2989 - val_loss: 86.8137\n", "Epoch 15/20\n", "500/500 [==============================] - 12s - loss: 59.0245 - val_loss: 73.1270\n", "Epoch 16/20\n", "500/500 [==============================] - 12s - loss: 63.8793 - val_loss: 96.4103\n", "Epoch 17/20\n", "500/500 [==============================] - 11s - loss: 68.6370 - val_loss: 6.3241\n", "Epoch 18/20\n", "500/500 [==============================] - 12s - loss: 74.3662 - val_loss: 51.7965\n", "Epoch 19/20\n", "500/500 [==============================] - 13s - loss: 78.8554 - val_loss: 102.2837\n", "Epoch 20/20\n", "500/500 [==============================] - 13s - loss: 84.1538 - val_loss: 45.6256\n" ] } ], "source": [ "from keras.models import Sequential\n", "from keras import layers\n", "from keras.optimizers import RMSprop\n", "\n", "model = Sequential()\n", "model.add(layers.Flatten(input_shape=(lookback // step, float_data.shape[-1])))\n", "model.add(layers.Dense(32, activation='relu'))\n", "model.add(layers.Dense(1))\n", "model.compile(optimizer=RMSprop(), loss='mae')\n", "history = model.fit_generator(train_gen,\n", " steps_per_epoch=500,\n", " epochs=20,\n", " validation_data=val_gen,\n", " validation_steps=val_steps)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def plot_history(history):\n", " loss = history.history['loss']\n", " val_loss = history.history['val_loss']\n", " epochs = range(len(loss))\n", "\n", " dict = {'loss':loss, 'val_loss': val_loss}\n", " d = pd.DataFrame(dict)\n", "\n", " d.plot()\n", " plt.title('Training and validation loss')\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_history(history)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "リカレントモデルで解く" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "500/500 [==============================] - 267s - loss: 0.3043 - val_loss: 0.2725\n", "Epoch 2/20\n", "500/500 [==============================] - 272s - loss: 0.2850 - val_loss: 0.2770\n", "Epoch 3/20\n", "500/500 [==============================] - 286s - loss: 0.2793 - val_loss: 0.2664\n", "Epoch 4/20\n", "500/500 [==============================] - 267s - loss: 0.2741 - val_loss: 0.2643\n", "Epoch 5/20\n", "500/500 [==============================] - 263s - loss: 0.2674 - val_loss: 0.2684\n", "Epoch 6/20\n", "500/500 [==============================] - 263s - loss: 0.2642 - val_loss: 0.2695\n", "Epoch 7/20\n", "500/500 [==============================] - 264s - loss: 0.2587 - val_loss: 0.2708\n", "Epoch 8/20\n", "500/500 [==============================] - 263s - loss: 0.2551 - val_loss: 0.2699\n", "Epoch 9/20\n", "500/500 [==============================] - 261s - loss: 0.2495 - val_loss: 0.2718\n", "Epoch 10/20\n", "500/500 [==============================] - 262s - loss: 0.2453 - val_loss: 0.2732\n", "Epoch 11/20\n", "500/500 [==============================] - 257s - loss: 0.2415 - val_loss: 0.2772\n", "Epoch 12/20\n", "500/500 [==============================] - 256s - loss: 0.2370 - val_loss: 0.2790\n", "Epoch 13/20\n", "500/500 [==============================] - 256s - loss: 0.2327 - val_loss: 0.2806\n", "Epoch 14/20\n", "500/500 [==============================] - 256s - loss: 0.2298 - val_loss: 0.2820\n", "Epoch 15/20\n", "500/500 [==============================] - 259s - loss: 0.2263 - val_loss: 0.2837\n", "Epoch 16/20\n", "500/500 [==============================] - 283s - loss: 0.2234 - val_loss: 0.2903\n", "Epoch 17/20\n", "500/500 [==============================] - 278s - loss: 0.2200 - val_loss: 0.2876\n", "Epoch 18/20\n", "500/500 [==============================] - 283s - loss: 0.2168 - val_loss: 0.2964\n", "Epoch 19/20\n", "500/500 [==============================] - 273s - loss: 0.2129 - val_loss: 0.2899\n", "Epoch 20/20\n", "500/500 [==============================] - 263s - loss: 0.2095 - val_loss: 0.3016\n" ] } ], "source": [ "model = Sequential()\n", "model.add(layers.GRU(32, input_shape=(None, float_data.shape[-1])))\n", "model.add(layers.Dense(1))\n", "model.compile(optimizer=RMSprop(), loss='mae')\n", "history = model.fit_generator(train_gen,\n", " steps_per_epoch=500,\n", " epochs=20,\n", " validation_data=val_gen,\n", " validation_steps=val_steps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "オーバーフィッティングの兆候として、トレーニングのlossは減少を続けているが、\n", "val_lossは、最初の数エポックで最小となり、その後val_lossはだんだんと増加する傾向が見られる。" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_history(history)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "500/500 [==============================] - 285s - loss: 0.3406 - val_loss: 0.2766\n", "Epoch 2/20\n", "500/500 [==============================] - 291s - loss: 0.3130 - val_loss: 0.2770\n", "Epoch 3/20\n", "500/500 [==============================] - 289s - loss: 0.3068 - val_loss: 0.2689\n", "Epoch 4/20\n", "500/500 [==============================] - 297s - loss: 0.3054 - val_loss: 0.2718\n", "Epoch 5/20\n", "500/500 [==============================] - 286s - loss: 0.3010 - val_loss: 0.2674\n", "Epoch 6/20\n", "500/500 [==============================] - 305s - loss: 0.2957 - val_loss: 0.2661\n", "Epoch 7/20\n", "500/500 [==============================] - 284s - loss: 0.2933 - val_loss: 0.2697\n", "Epoch 8/20\n", "500/500 [==============================] - 282s - loss: 0.2934 - val_loss: 0.2651\n", "Epoch 9/20\n", "500/500 [==============================] - 287s - loss: 0.2912 - val_loss: 0.2669\n", "Epoch 10/20\n", "500/500 [==============================] - 289s - loss: 0.2904 - val_loss: 0.2682\n", "Epoch 11/20\n", "500/500 [==============================] - 290s - loss: 0.2872 - val_loss: 0.2672\n", "Epoch 12/20\n", "500/500 [==============================] - 308s - loss: 0.2863 - val_loss: 0.2628\n", "Epoch 13/20\n", "500/500 [==============================] - 300s - loss: 0.2853 - val_loss: 0.2640\n", "Epoch 14/20\n", "500/500 [==============================] - 288s - loss: 0.2841 - val_loss: 0.2658\n", "Epoch 15/20\n", "500/500 [==============================] - 282s - loss: 0.2835 - val_loss: 0.2634\n", "Epoch 16/20\n", "500/500 [==============================] - 292s - loss: 0.2825 - val_loss: 0.2655\n", "Epoch 17/20\n", "500/500 [==============================] - 283s - loss: 0.2813 - val_loss: 0.2650\n", "Epoch 18/20\n", "500/500 [==============================] - 297s - loss: 0.2804 - val_loss: 0.2635\n", "Epoch 19/20\n", "500/500 [==============================] - 298s - loss: 0.2800 - val_loss: 0.2658\n", "Epoch 20/20\n", "500/500 [==============================] - 296s - loss: 0.2788 - val_loss: 0.2658\n" ] } ], "source": [ "# epochsは20にした\n", "model = Sequential()\n", "model.add(layers.GRU(32,\n", " dropout=0.2,\n", " recurrent_dropout=0.2,\n", " input_shape=(None, float_data.shape[-1])))\n", "model.add(layers.Dense(1))\n", "model.compile(optimizer=RMSprop(), loss='mae')\n", "history_dp = model.fit_generator(train_gen,\n", " steps_per_epoch=500,\n", " epochs=20,\n", " validation_data=val_gen,\n", " validation_steps=val_steps)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_history(history_dp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### リカレント層のスタッキング\n", "\n", "kerasでリカレント層をスタックする場合、すべての内部状態を返す必要がある。このため、return_sequences=Trueオプションを指定する。" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "500/500 [==============================] - 874s - loss: 0.3460 - val_loss: 0.2941\n", "Epoch 2/20\n", "500/500 [==============================] - 837s - loss: 0.3232 - val_loss: 0.2780\n", "Epoch 3/20\n", "500/500 [==============================] - 2138s - loss: 0.3144 - val_loss: 0.2765\n", "Epoch 4/20\n", "500/500 [==============================] - 847s - loss: 0.3107 - val_loss: 0.2841\n", "Epoch 5/20\n", "500/500 [==============================] - 815s - loss: 0.3040 - val_loss: 0.2700\n", "Epoch 6/20\n", "500/500 [==============================] - 809s - loss: 0.3001 - val_loss: 0.2799\n", "Epoch 7/20\n", "500/500 [==============================] - 813s - loss: 0.2958 - val_loss: 0.2796\n", "Epoch 8/20\n", "500/500 [==============================] - 819s - loss: 0.2918 - val_loss: 0.2779\n", "Epoch 9/20\n", "500/500 [==============================] - 811s - loss: 0.2906 - val_loss: 0.2711\n", "Epoch 10/20\n", "500/500 [==============================] - 910s - loss: 0.2867 - val_loss: 0.2899\n", "Epoch 11/20\n", "500/500 [==============================] - 900s - loss: 0.2853 - val_loss: 0.2808\n", "Epoch 12/20\n", "500/500 [==============================] - 937s - loss: 0.2822 - val_loss: 0.2901\n", "Epoch 13/20\n", "500/500 [==============================] - 877s - loss: 0.2827 - val_loss: 0.2857\n", "Epoch 14/20\n", "500/500 [==============================] - 857s - loss: 0.2806 - val_loss: 0.2702\n", "Epoch 15/20\n", "500/500 [==============================] - 817s - loss: 0.2794 - val_loss: 0.2952\n", "Epoch 16/20\n", "500/500 [==============================] - 907s - loss: 0.2747 - val_loss: 0.2737\n", "Epoch 17/20\n", "500/500 [==============================] - 889s - loss: 0.2734 - val_loss: 0.2696\n", "Epoch 18/20\n", "500/500 [==============================] - 873s - loss: 0.2725 - val_loss: 0.2680\n", "Epoch 19/20\n", "500/500 [==============================] - 852s - loss: 0.2720 - val_loss: 0.2937\n", "Epoch 20/20\n", "500/500 [==============================] - 846s - loss: 0.2708 - val_loss: 0.2745\n" ] } ], "source": [ "# epochsは20にした\n", "# 1層の場合との比較のため、dropout=0.2, recurrent_dropout=0.2に変更\n", "model = Sequential()\n", "model.add(layers.GRU(32,\n", " dropout=0.2,\n", " recurrent_dropout=0.2,\n", " return_sequences=True,\n", " input_shape=(None, float_data.shape[-1])))\n", "model.add(layers.GRU(64, activation='relu',\n", " dropout=0.2,\n", " recurrent_dropout=0.2))\n", "model.add(layers.Dense(1))\n", "model.compile(optimizer=RMSprop(), loss='mae')\n", "history_stacked_dp = model.fit_generator(train_gen,\n", " steps_per_epoch=500,\n", " epochs=20,\n", " validation_data=val_gen,\n", " validation_steps=val_steps)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_history(history_dp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### bi-derectional RNN\n", "以下のコードはエラーとなった!" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "ename": "ValueError", "evalue": "The first layer in a Sequential model must get an `input_shape` or `batch_input_shape` argument.", "output_type": "error", "traceback": [ "\u001b[0;31m\u001b[0m", "\u001b[0;31mValueError\u001b[0mTraceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mSequential\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m model.add(layers.Bidirectional(\n\u001b[0;32m----> 3\u001b[0;31m layers.GRU(32, input_shape=(None, float_data.shape[-1]))))\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlayers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDense\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moptimizer\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mRMSprop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'mae'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/sagemath/local/lib/python2.7/site-packages/keras/models.pyc\u001b[0m in \u001b[0;36madd\u001b[0;34m(self, layer)\u001b[0m\n\u001b[1;32m 421\u001b[0m \u001b[0;31m# create an input layer\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 422\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlayer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'batch_input_shape'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 423\u001b[0;31m raise ValueError('The first layer in a '\n\u001b[0m\u001b[1;32m 424\u001b[0m \u001b[0;34m'Sequential model must '\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 425\u001b[0m \u001b[0;34m'get an `input_shape` or '\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: The first layer in a Sequential model must get an `input_shape` or `batch_input_shape` argument." ] } ], "source": [ "model = Sequential()\n", "model.add(layers.Bidirectional(\n", " layers.GRU(32, input_shape=(None, float_data.shape[-1]))))\n", "model.add(layers.Dense(1))\n", "model.compile(optimizer=RMSprop(), loss='mae')\n", "history_dp = model.fit_generator(train_gen_rev,\n", " steps_per_epoch=500,\n", " epochs=20,\n", " validation_data=val_gen_rev,\n", " validation_steps=val_steps)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## 1D CNNとRNNの連携\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# We reuse the `generator` function defined at the previous section.\n", "# This was previously set to 6 (one point per hour).\n", "# Now 3 (one point per 30 min).\n", "step = 3\n", "lookback = 720 # Unchanged\n", "delay = 144 # Unchanged\n", "train_gen = generator(float_data, lookback=lookback, delay=delay,\n", " min_index=0, max_index=200000, shuffle=True, step=step)\n", "val_gen = generator(float_data, lookback=lookback, delay=delay,\n", " min_index=200001, max_index=300000, step=step)\n", "test_gen = generator(float_data, lookback=lookback, delay=delay,\n", " min_index=300001, max_index=None, step=step)\n", "val_steps = (300000 - 200001 - lookback) // 128\n", "test_steps = (len(float_data) - 300001 - lookback) // 128" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "conv1d_3 (Conv1D) (None, None, 32) 2272 \n", "_________________________________________________________________\n", "max_pooling1d_2 (MaxPooling1 (None, None, 32) 0 \n", "_________________________________________________________________\n", "conv1d_4 (Conv1D) (None, None, 32) 5152 \n", "_________________________________________________________________\n", "gru_2 (GRU) (None, 32) 6240 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 1) 33 \n", "=================================================================\n", "Total params: 13,697\n", "Trainable params: 13,697\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "Epoch 1/20\n", "500/500 [==============================] - 165s - loss: 0.3441 - val_loss: 0.2901\n", "Epoch 2/20\n", "500/500 [==============================] - 162s - loss: 0.3092 - val_loss: 0.2984\n", "Epoch 3/20\n", "500/500 [==============================] - 165s - loss: 0.3013 - val_loss: 0.2815\n", "Epoch 4/20\n", "500/500 [==============================] - 180s - loss: 0.2907 - val_loss: 0.2725\n", "Epoch 5/20\n", "500/500 [==============================] - 167s - loss: 0.2867 - val_loss: 0.2717\n", "Epoch 6/20\n", "500/500 [==============================] - 166s - loss: 0.2793 - val_loss: 0.2817\n", "Epoch 7/20\n", "500/500 [==============================] - 162s - loss: 0.2746 - val_loss: 0.2805\n", "Epoch 8/20\n", "500/500 [==============================] - 167s - loss: 0.2709 - val_loss: 0.2781\n", "Epoch 9/20\n", "500/500 [==============================] - 174s - loss: 0.2651 - val_loss: 0.2800\n", "Epoch 10/20\n", "500/500 [==============================] - 173s - loss: 0.2597 - val_loss: 0.2888\n", "Epoch 11/20\n", "500/500 [==============================] - 167s - loss: 0.2560 - val_loss: 0.2859\n", "Epoch 12/20\n", "500/500 [==============================] - 153s - loss: 0.2513 - val_loss: 0.2909\n", "Epoch 13/20\n", "500/500 [==============================] - 166s - loss: 0.2484 - val_loss: 0.2950\n", "Epoch 14/20\n", "500/500 [==============================] - 171s - loss: 0.2455 - val_loss: 0.2897\n", "Epoch 15/20\n", "500/500 [==============================] - 175s - loss: 0.2416 - val_loss: 0.2913\n", "Epoch 16/20\n", "500/500 [==============================] - 167s - loss: 0.2372 - val_loss: 0.2945\n", "Epoch 17/20\n", "500/500 [==============================] - 163s - loss: 0.2358 - val_loss: 0.3052\n", "Epoch 18/20\n", "500/500 [==============================] - 166s - loss: 0.2336 - val_loss: 0.3068\n", "Epoch 19/20\n", "500/500 [==============================] - 175s - loss: 0.2308 - val_loss: 0.3063\n", "Epoch 20/20\n", "500/500 [==============================] - 176s - loss: 0.2285 - val_loss: 0.3097\n" ] } ], "source": [ "from keras.models import Sequential\n", "from keras import layers\n", "from keras.optimizers import RMSprop\n", "model = Sequential()\n", "model.add(layers.Conv1D(32, 5, activation='relu',\n", " input_shape=(None, float_data.shape[-1])))\n", "model.add(layers.MaxPooling1D(3))\n", "model.add(layers.Conv1D(32, 5, activation='relu'))\n", "model.add(layers.GRU(32, dropout=0.1, recurrent_dropout=0.5))\n", "model.add(layers.Dense(1))\n", "model.summary()\n", "model.compile(optimizer=RMSprop(), loss='mae')\n", "history = model.fit_generator(train_gen,\n", " steps_per_epoch=500,\n", " epochs=20,\n", " validation_data=val_gen,\n", " validation_steps=val_steps)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_history(history)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }