daily pastebin goal
13%
SHARE
TWEET

Untitled

a guest Nov 17th, 2017 59 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {
  2.  "cells": [
  3.   {
  4.    "cell_type": "code",
  5.    "execution_count": 1,
  6.    "metadata": {
  7.     "collapsed": true
  8.    },
  9.    "outputs": [],
  10.    "source": [
  11.     "%matplotlib inline\n",
  12.     "import numpy as np\n",
  13.     "import matplotlib.pyplot as plt"
  14.    ]
  15.   },
  16.   {
  17.    "cell_type": "markdown",
  18.    "metadata": {},
  19.    "source": [
  20.     "### 深層学習用フレームワーク Chainer を使用"
  21.    ]
  22.   },
  23.   {
  24.    "cell_type": "code",
  25.    "execution_count": 2,
  26.    "metadata": {
  27.     "collapsed": false
  28.    },
  29.    "outputs": [],
  30.    "source": [
  31.     "import chainer\n",
  32.     "import chainer.functions as F\n",
  33.     "import chainer.links as L\n",
  34.     "from chainer import training\n",
  35.     "from chainer.training import extensions"
  36.    ]
  37.   },
  38.   {
  39.    "cell_type": "markdown",
  40.    "metadata": {},
  41.    "source": [
  42.     "## CNNを構築"
  43.    ]
  44.   },
  45.   {
  46.    "cell_type": "code",
  47.    "execution_count": 3,
  48.    "metadata": {
  49.     "collapsed": false
  50.    },
  51.    "outputs": [],
  52.    "source": [
  53.     "class SimpleConv(chainer.Chain):\n",
  54.     "    def __init__(self, in_size, out_size):\n",
  55.     "        w = chainer.initializers.HeNormal(scale=0.02)\n",
  56.     "        super(SimpleConv, self).__init__(\n",
  57.     "        c0 = L.Convolution2D(in_size, 16, 3, 1, 1,\n",
  58.     "                             initial_bias=None, initialW=w),\n",
  59.     "        c1 = L.Convolution2D(16, 32, 3, 1, 1,\n",
  60.     "                             initial_bias=None, initialW=w),\n",
  61.     "        l1 = L.Linear(None, 100),\n",
  62.     "        l2 = L.Linear(100, out_size),\n",
  63.     "        )\n",
  64.     "        \n",
  65.     "    def __call__(self, x):\n",
  66.     "        h = F.relu(self.c0(x))\n",
  67.     "        h = F.max_pooling_2d(h, 2, 2)\n",
  68.     "        h = F.relu(self.c1(h))\n",
  69.     "        h = F.max_pooling_2d(h, 2, 2)\n",
  70.     "        h = F.relu(self.l1(h))\n",
  71.     "        return self.l2(h)"
  72.    ]
  73.   },
  74.   {
  75.    "cell_type": "code",
  76.    "execution_count": 4,
  77.    "metadata": {
  78.     "collapsed": false
  79.    },
  80.    "outputs": [],
  81.    "source": [
  82.     "model = L.Classifier(SimpleConv(1, 10))\n",
  83.     "optimizer = chainer.optimizers.SGD()\n",
  84.     "optimizer.setup(model)"
  85.    ]
  86.   },
  87.   {
  88.    "cell_type": "markdown",
  89.    "metadata": {},
  90.    "source": [
  91.     "## 訓練データの取得"
  92.    ]
  93.   },
  94.   {
  95.    "cell_type": "code",
  96.    "execution_count": 5,
  97.    "metadata": {
  98.     "collapsed": false
  99.    },
  100.    "outputs": [],
  101.    "source": [
  102.     "batch_size = 128\n",
  103.     "train, test = chainer.datasets.get_mnist(ndim=3)\n",
  104.     "\n",
  105.     "train_iter = chainer.iterators.SerialIterator(train, batch_size)\n",
  106.     "test_iter = chainer.iterators.SerialIterator(test, batch_size, repeat=False, shuffle=False)"
  107.    ]
  108.   },
  109.   {
  110.    "cell_type": "markdown",
  111.    "metadata": {},
  112.    "source": [
  113.     "## 学習する"
  114.    ]
  115.   },
  116.   {
  117.    "cell_type": "code",
  118.    "execution_count": null,
  119.    "metadata": {
  120.     "collapsed": false,
  121.     "scrolled": false
  122.    },
  123.    "outputs": [],
  124.    "source": [
  125.     "max_epoch = 30\n",
  126.     "\n",
  127.     "updater = training.StandardUpdater(train_iter, optimizer)\n",
  128.     "trainer = training.Trainer(updater, (max_epoch, 'epoch'), out='CNNresult')\n",
  129.     "\n",
  130.     "# 記録用\n",
  131.     "trainer.extend(extensions.LogReport())\n",
  132.     "trainer.extend(extensions.Evaluator(test_iter, model))\n",
  133.     "trainer.extend(extensions.PlotReport(['main/accuracy', 'validation/main/accuracy'], file_name='acc.png'))\n",
  134.     "trainer.extend(extensions.PrintReport(['epoch', 'main/accuracy', 'validation/main/accuracy', 'elapsed_time']))\n",
  135.     "trainer.extend(extensions.snapshot_object(model.predictor, filename='model_epoch-{.updater.epoch}'), trigger=(max_epoch, ('epoch')))\n",
  136.     "\n",
  137.     "trainer.run()"
  138.    ]
  139.   },
  140.   {
  141.    "cell_type": "markdown",
  142.    "metadata": {},
  143.    "source": [
  144.     "## 結果を確かめる"
  145.    ]
  146.   },
  147.   {
  148.    "cell_type": "code",
  149.    "execution_count": 6,
  150.    "metadata": {
  151.     "collapsed": false
  152.    },
  153.    "outputs": [],
  154.    "source": [
  155.     "learned_model = SimpleConv(1, 10)\n",
  156.     "chainer.serializers.load_npz('CNNresult/model_epoch-30', learned_model)"
  157.    ]
  158.   },
  159.   {
  160.    "cell_type": "code",
  161.    "execution_count": 7,
  162.    "metadata": {
  163.     "collapsed": false
  164.    },
  165.    "outputs": [
  166.     {
  167.      "name": "stdout",
  168.      "output_type": "stream",
  169.      "text": [
  170.       "正解ラベル: 5\n",
  171.       "予測ラベル: 5\n"
  172.      ]
  173.     },
  174.     {
  175.      "data": {
  176.       "image/png": "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\nSUVORK5CYII=\n",
  177.       "text/plain": [
  178.        "<matplotlib.figure.Figure at 0x1d16230d978>"
  179.       ]
  180.      },
  181.      "metadata": {},
  182.      "output_type": "display_data"
  183.     }
  184.    ],
  185.    "source": [
  186.     "data_number = 2003\n",
  187.     "img = test[data_number][0]\n",
  188.     "y = learned_model(img[None,...])\n",
  189.     "\n",
  190.     "plt.imshow(test[data_number][0][0,:,:], 'gray')\n",
  191.     "print('正解ラベル: ' + str(test[data_number][1]))\n",
  192.     "print('予測ラベル: ' + str(y.data.argmax()))"
  193.    ]
  194.   },
  195.   {
  196.    "cell_type": "markdown",
  197.    "metadata": {},
  198.    "source": [
  199.     "## 間違いデータも確認"
  200.    ]
  201.   },
  202.   {
  203.    "cell_type": "code",
  204.    "execution_count": 8,
  205.    "metadata": {
  206.     "collapsed": false
  207.    },
  208.    "outputs": [],
  209.    "source": [
  210.     "fault = []\n",
  211.     "for i in range(len(test)):\n",
  212.     "    tmp = test[i][0]\n",
  213.     "    y = learned_model(tmp[None,...])\n",
  214.     "    if test[i][1] != y.data.argmax():\n",
  215.     "        fault.append(i)"
  216.    ]
  217.   },
  218.   {
  219.    "cell_type": "code",
  220.    "execution_count": 16,
  221.    "metadata": {
  222.     "collapsed": false
  223.    },
  224.    "outputs": [
  225.     {
  226.      "name": "stdout",
  227.      "output_type": "stream",
  228.      "text": [
  229.       "正解ラベル: 2\n",
  230.       "予測ラベル: 7\n"
  231.      ]
  232.     },
  233.     {
  234.      "data": {
  235.       "image/png": "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\n",
  236.       "text/plain": [
  237.        "<matplotlib.figure.Figure at 0x1d1622d0f28>"
  238.       ]
  239.      },
  240.      "metadata": {},
  241.      "output_type": "display_data"
  242.     }
  243.    ],
  244.    "source": [
  245.     "data_number = 2\n",
  246.     "img = test[fault[data_number]][0]\n",
  247.     "y = learned_model(img[None,...])\n",
  248.     "\n",
  249.     "plt.imshow(test[fault[data_number]][0][0,:,:], 'gray')\n",
  250.     "print('正解ラベル: ' + str(test[fault[data_number]][1]))\n",
  251.     "print('予測ラベル: ' + str(y.data.argmax()))"
  252.    ]
  253.   },
  254.   {
  255.    "cell_type": "code",
  256.    "execution_count": null,
  257.    "metadata": {
  258.     "collapsed": true
  259.    },
  260.    "outputs": [],
  261.    "source": []
  262.   }
  263.  ],
  264.  "metadata": {
  265.   "kernelspec": {
  266.    "display_name": "Python [conda root]",
  267.    "language": "python",
  268.    "name": "conda-root-py"
  269.   },
  270.   "language_info": {
  271.    "codemirror_mode": {
  272.     "name": "ipython",
  273.     "version": 3
  274.    },
  275.    "file_extension": ".py",
  276.    "mimetype": "text/x-python",
  277.    "name": "python",
  278.    "nbconvert_exporter": "python",
  279.    "pygments_lexer": "ipython3",
  280.    "version": "3.5.2"
  281.   }
  282.  },
  283.  "nbformat": 4,
  284.  "nbformat_minor": 1
  285. }
RAW Paste Data
Top