{ "cells": [ { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "import cv2\n", "from IPython import display\n", "import itertools\n", "from PIL import Image\n", "from io import BytesIO\n", "import numpy as np\n", "\n", "def display_image(arr):\n", " b = BytesIO()\n", " Image.fromarray(np.uint8(arr)).save(b, format='png')\n", " data = b.getvalue()\n", " display.display(display.Image(data=data, format='png', embed=True))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import shogicam.data\n", "import shogicam.util\n", "from shogicam.constant import *\n", "\n", "data = shogicam.data.load_validation_board_data('../data/board')" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_image((data[5][0][6][:, :, 0] * 256))" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "scrolled": false }, "outputs": [], "source": [ "import shogicam.data\n", "import shogicam.util\n", "from shogicam.constant import *\n", "\n", "data = shogicam.data.load_validation_board_data('../data/board')\n", "data_sente = shogicam.data.load_validation_board_data('../data/board', True)\n", "\n", "x_all = np.empty((0, 64, 64, 1))\n", "y_all = np.empty((0, data[0][1].shape[1]))\n", "for (x, y) in data:\n", " x_all = np.r_[x_all, x]\n", " y_all = np.r_[y_all, y]" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "from scipy.ndimage.interpolation import zoom\n", "# display_image(x_all[0])\n", "# zoomed = zoom(x_all[0], 1.3)\n", "# shp = zoomed.shape\n", "# xstart = int((shp[0] - 64) / 2)\n", "# ystart = int((shp[1] - 64) / 2)\n", "# zoomed = zoomed[xstart:(xstart + 64), ystart:(ystart + 64), :]\n", "# display_image(zoomed)\n", "\n", "def zoom_images(imgs, scale=1.3):\n", " ret = []\n", " for img in imgs:\n", " zoomed = zoom(img.reshape(64, 64), scale)\n", " shp = zoomed.shape\n", " xstart = int((shp[0] - 64) / 2)\n", " ystart = int((shp[1] - 64) / 2)\n", " ret.append(zoomed[xstart:(xstart + 64), ystart:(ystart + 64)].reshape((64, 64, 1)))\n", " return np.array(ret)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "from keras.models import load_model\n", "\n", "# model = load_model('../models/purple.h5')\n", "model = load_model('../models/blue3.h5')" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.5/dist-packages/scipy/ndimage/interpolation.py:616: UserWarning: From scipy 0.13.0, the output shape of zoom() is calculated with round() instead of int() - for these inputs the size of the returned array has changed.\n", " \"the returned array has changed.\", UserWarning)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[0.97368420738922923, 0.94736841791554505, 0.94736841791554505, 0.94736841791554505, 0.86842104949449239, 0.86842104949449239]\n", "0.973684207389\n", "[0.92307692613357151, 0.94871795024627292, 0.92307692460524726, 0.89743589896422171, 0.794871795635957, 0.71794872024120426]\n", "0.948717950246\n", "[0.97297297297297303, 0.97297297297297303, 0.97297297297297303, 0.97297297297297303, 0.97297297297297303, 0.94594594594594594]\n", "0.972972972973\n", "[0.875, 0.90625, 0.84375, 0.75, 0.6875, 0.625]\n", "0.90625\n", "[0.85714285884584696, 0.48571428656578064, 0.37142857228006637, 0.34285714370863779, 0.25714285714285712, 0.14285714285714285]\n", "0.857142858846\n", "[0.6470588235294118, 0.76470588235294112, 0.73529411764705888, 0.73529411764705888, 0.67647058823529416, 0.6470588235294118]\n", "0.735294117647\n", "[0.86666667461395264, 0.89999997615814209, 0.86666667461395264, 0.86666667461395264, 0.86666667461395264, 0.80000001192092896]\n", "0.866666674614\n", "[0.71428571513720918, 0.77142857228006634, 0.80000000085149492, 0.77142857313156132, 0.8000000017029899, 0.77142857228006634]\n", "0.800000001703\n", "0.885714286779\n" ] } ], "source": [ "n_all = 0\n", "acc_all = 0.0\n", "for (x, y) in data:\n", "# print(model.evaluate(x, y, verbose=False))\n", "# print(model.evaluate(zoom_images(x, 1.1), y, verbose=False))\n", "# print(model.evaluate(zoom_images(x, 1.2), y, verbose=False))\n", "# print(model.evaluate(zoom_images(x, 1.3), y, verbose=False))\n", "# print(model.evaluate(zoom_images(x, 1.4), y, verbose=False))\n", "# print(model.evaluate(zoom_images(x, 1.5), y, verbose=False))\n", " loss, acc = model.evaluate(x, y, verbose=False)\n", " losses = [loss]\n", " accs = [acc]\n", "\n", " scales = [1.1, 1.2, 1.3, 1.4, 1.5]\n", " for scale in scales:\n", " loss, acc = model.evaluate(zoom_images(x, scale), y, verbose=False)\n", " losses.append(loss)\n", " accs.append(acc)\n", " print(accs)\n", "\n", " acc = accs[np.argmin(losses)]\n", "# print(np.argmin(losses))\n", " print(acc)\n", " n_all += len(x)\n", " acc_all += len(x) * acc\n", "\n", "print(acc_all / n_all)\n", "# print(model.evaluate(x_all, y_all, verbose=False))\n", "# print(model.evaluate(zoom_images(x_all), y_all, verbose=False))" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [], "source": [ "import shogicam.data\n", "import shogicam.util\n", "from shogicam.constant import *\n", "import keras\n", "\n", "x_all, y_all = shogicam.data.load_data('../data')\n", "x_all = x_all.reshape(x_all.shape[0], 64, 64, 1)\n", "x_all /= 255\n", "\n", "y_all = keras.utils.to_categorical(y_all[:, 0], NUM_CLASSES)\n", "\n", "data = shogicam.data.load_validation_board_data('../data/board')\n", "\n", "x_v = np.empty((0, 64, 64, 1))\n", "y_v = np.empty((0, data[0][1].shape[1]))\n", "for (x, y) in data:\n", " x_v = np.r_[x_v, x]\n", " y_v = np.r_[y_v, y]" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "王\n" ] } ], "source": [ "import keras\n", "from shogicam.constant import *\n", "\n", "display_image(x_all[1][:, :, 0] * 256)\n", "print(get_label(y_all[1][0]))\n", "\n", "y_all = keras.utils.to_categorical(y_all[:, 0], NUM_CLASSES)" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [], "source": [ "pred_arr = model.predict(x_all)\n", "res = np.argmax(pred_arr, axis=1)\n", "ans = np.argmax(y_all, axis=1)\n", "correct = np.where(res == ans)[0]\n", "errors = np.where(res != ans)[0]" ] }, { "cell_type": "code", "execution_count": 118, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAAAAACPAi4CAAAIyklEQVR4nE1XW5Nd51Xs7vXtfeY+mtFIM5aQLEchJk64mELAg4MDSUFRIQHioiiKB16o4p/xzENIDEnlAi5VUsaB2DKOLwqWLVuWfJV1G539rdU8HHmO9uP30NVrre5eaxMATmlyqLeYHEo0GKoOltrkAUjGBFZpmCynQvPGjngXQAOArGDHgJQqGwoj5lBxZDu3feODzqkPWRjzvtrkgRPHTLbEZwBDplplc4+GjJad0bmycu7x0xvoN9959fqnKWYPZg+nWs5byyQAEAD21So5ZAZNMhVoW6fPn1u3AaZ86+ob//epWSn2oEsxMdxvfAZwpltKNGe07OPQ1z/3pTPr90MTmjJDveLujdde/3gCkB7o3qoUVz8DeEQotKSHqsaVxx7/wlpGzcc2R5M7W3dFTXHt8uV3phomh5NRecTgdCI0sRWG9bOf//w2AAfnA6YahSmGOey6v1LytcuXrkOTI2vg20cMWhqRVLvw9E4mSHgl59GmDHmaxVTCNI05oOLWxf8sVZGJ9z6bQqRbFYXZnw/dAwsWKJaSMF0GJIkyhrWzys6oagYAAYAHJYLVNjfZBlARIIkABYBBcoFAmdttYnUqlwCYo1VGm/ZkCeWaKmHb4IMyTcKgJG1ssgc6Wx0BVNTEyBr2u8Eg1CLkRssqw4RtkqTItkV1q0+xLKG3cIWmgwmEZiLEKlOmQUok5Uoa4HCQNXIK9SMpi/MYYKwcGK2qRFeFKBUQNkCxgwGDbMeDE2dV47KEauoOjHsUCgJIOZiZCJUEEaIIo8BjQxE9xukIYFCi1TwO1qwWgQANukTAFmhKkCsQIW2sOcFpGo4AOsNzDdNOAa4EpLBFw5kkIBZAis1VXN9UuCKWDKKKLWt2qixKyvKC9Kf/8+a9Xs6qogooFEOzXZYiU0dNnA9MjTkdoAmgo0xQ5uovnzv1+LndIIQESBLmsBfuCix1MHYH51w5AbBYNNABo4YnP3n1OxcJgCRUpFiOPVej1Y4YTANdArdEEQRYTKWUG3ELa2XBBh2AKWp7vN8H9KWQOHWweGKlF6tgKGQCnF641x99Uqoi0QgKJrmxjpYlHQEo0BHe6aaDJCsxgDX/70s9/PZhgTDsssUobqw7Ifclg84hi2eLhESYgo188Ue3Tn7x/We/9+7cMAAvYgCxpVbV4qgHbuhj76chsmATZXt6418/euybq6/96L+uPvnEsbDVVKAhnbyE5kUqNwAohufD7FG3ArxwMOf/++wHjz3z/s9/6xvPvXPzV7973gobMOy2G5V6yExjTTEmt+90AchmGHef//HHjz6z+9ZrV8/8zffeePWDM18800QmVaXtqKiHpDzPVr09kkYBBGh+8sPvf/Trf7v15qu3rlw6+LsLdeP1H/7HtSrIgHisIcFa2tkZPNwv0CIaXW/9+JX+9FfuPf/y1Xsbvz/G18bnPrx7970/esKASm1z8zCSyx70Aam1X7NkgPO4/fzFj/f/9NgLL71/f/rDrx9D2/ja+g/uHd6azm7AJLIdf0/jtGQwTNE8P6AIJOavX7wye/qpwx/cPnb+1s/HnTS0+tTaT67fe/eTjWCBbHvhKZYMPMvi7DRkut38zvX21JdOrk3fbL778ouXv9/Pnl+P4fd2nr3iLMHZGHuACkcAmKs5tudENsRXZy0QHlfvXXnpSn/vw/bi/lfPS2e+/bPN41IRtvZXb3tcloDmPjs7m4yoGI/TcEZ/94WXb63m+JVfvXn7/j+OWj34RswgG7Y3h8D0UAme9fv7fXFfmCoa/uW/vXX8L1f/eeuP+dbdO1nmOIa58CDXNj/B4sBYeKEd1sqjc7ocaFSD683vvrP/DxdYs0s/69tfXwVDMMGAII2bwYWUBQA5idOJoqkHk2D+4vr0O9u87Xv//unBX3y5CXOBVgkGNezlg6W2WK6oYWXfpuFyIJztN1764Ke3f/Oqb/KJv9oHhbAWsahOxInZ/Vq6MdGs9blIm+VIoL7w98+98tPX79XOnz2+y0lWFo0MOw14U8SyB6HO/RXaYCzCA4yz33pm5dqH/JMLa56yYLG4sCNc2lpPL6eQitzvAmCACRo+nN6++OWTH905ffnjW3fqt88bsgFQSYY31punZQ/K45kJixwo0LB/8vbGI6s3pum7N+fzwpV/mgGLzSbaiNXN1OyhRDIP0ANhqJWNrgtv/yKy+kRgFFdmMjNI07CF2NFDDDhvK6esB1EEFcI73/6XV7Rx/ODE9jAQuwFZtlsnVRU63mq5F6pxZedQxYJMK5yI43/9B2tbqzPh/uipRc8GqGCYlmNvvPOQmXI8pQqJpnJgQsk4tlM9WhjRR7i4WLEADVCbbZwvpTz0Y92wWWbvIEhXYjBAAkiTAqlFtqOMzfX5Usqex7ku2ClnIE0oGEERToYkKRoNGlTQsDa5vNLYpr1S0TSdVe4l0LZpsgzSVLLRlOEIqm35IQZeP5lUSFx8jYANM2GEQJMOGoUEgaKGnXG53kNrq4sFXGUYBoGEAVEOIukEWA4IsAFol21pZ54diix00pZoFknAEKpswka3CRC06Gq7a8spDDxFLtZ1UEigvOBKACiIMAKoBz8pBr29sTzzqMeq0UUivVC7CpIlIkJVNAJkYGE4p2vcWtp57HtVgCiFRIAKQgCFKhAkaYRswotbgW1nyUArexAqZIMUyQQahSoScMhJ22mWCkXTiJ3lFIbt2fRAb8wHz85MgzaQVeaDoRsohNSKe7MjgNUDipYMIlwBygboXuWFghm0baQhJwFydznG2clCyS6TBnqZdFF4cLSBKBtAUu5ZQGbV2voRwNq5LIIOLYiykrCNRhILYCZgpzthgjBXdo8ANvd7VRZp2mQRNBOVgMooOMsSwSiWmabJtn2UBzu7pRIKTHargIoKdwDdGS6AcJlllAtEITGcPALYa/NcjBBKKpNZmeGJ3cicksyAadOeGtx7JmvzCODytUOTLjlqETgGCrRJmChlsKyC4FSBqDIPAeD/AWrdZb70YTWbAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "全\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "と\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAAAAACPAi4CAAAFdUlEQVR4nO2Wa1CUVRjHf7ssN5flHsICCyjoJGjKgGZpNyNTKieni401jWMyU/EhLWZssKYmZ7JpNCfzk45O42XM1DQVGpPwNhKZmoKAsoCAECC4y7Jc9sLSh/ey77u7oH7v+fL8n3P+z/8957znOedoeFAbdKvjScEAaISoWTMSrCNp2BPb29p5C2dWl8OpZIcQ0W2dFEcIAMGPdBIeulJJqGp84JFIVi44reCm1T60wIhKIM45PjOwDRhUAuLkHsJaE9UCfQ8r0JuhFtB45K7VhfUPIGDRq+OjPRKq1JJ4wz9h8IhVFVf49DedktD2YNB/3uIr8CmZFmX8h+ilKUztlnrsLtKy/1rx1k4nNO+TEy5h/kopcM/3C3sksAv2AXjoWGtslvvzSY65iFNaqqFfRaCTCIMSGJL+6YHc7vIpsoBbeybyx6b8PDE0z/AVkEslGZyA5fXDRCz2jtASZtSTcy1NDJteFYG0BsR1iGAGxAHFh0Hn8gr0heuhjdViKG88WSBXKie9BgcQDljXObwKeuBa4otiJG99eQrGcyJI0Y5pgG8ijrcWPfE7jI7pAAxBYEtdE+rWagFC8bP9EgjjjLe1qzQ2fBdAvgksYauKDYV9AOfws0MSmM5lAVjPb84NIWZyRtFVyA+11f4QBcl5BRYYkTeiRhY4shzor29xfnJ3s5EW870bLUHPL5iTma4JcnlCie9N6qbglUXTtG5NEB2jJr8RHB4ACsQgPvupNw0b7Ypug3HLHrMcnR7xn0L9FWDfrMKvc9b09XmgdBPgWZl5HABLcBFA2QEh86x/PhwV/fILgL34C8BTBKkOADPvM1i2BJYMg7eUFL8RxkSf8jjULy8oAc9Hu3LqOvsB6riyKGKM4ufa9oNiGyjttOhb8HwbvhHrsmXvrDLzwlIAStmwrWo2YpV7jgcS+EUCVdl8Sc9MeBmssTcARmfrHJA5WWQMBVyDnaK/rOddx0FT+u6KchxzfwDgIM9AbZBUgi23AwlU3BH8dkhIj940ADhf2mY76YSBdEphHdFibZR5a0TrFVggXi4r8vQZ6+rWGxg8OC/Mll745G223mY6xDBSIlAiApQCUCl69zD9N3/eUBgBRK2/fvEQNVunzLXi7BoQDz5FJSh+I1a57YN4lyZxXmlas+PDxE3ATFxdofe/fHbK6Nh7O+omYv4ZuLlsgpTOJsXecVUFJlX0j5des1hLarkc/qMgahS0JvtjAFir27IijXoDgK3njrnxRMMowBvrcwVi5ULv0ikXMVYo12qTDSDM6NQPuROE6kteOi8zieY24RSIUmYp7ScAqpJ8mr871O5RNVxVYJWW8J/mD184a5lrBJJPlgDEv+ajqHwL6AJ0hAPbAemAqkRt7urxBCI9WhVzKA6AGh+B7smKQJUR2qVm3hoG4O9nF59SPhLvGscbQa7yaXLiKp8JaKwh8eO8e7Fyj2sS45hzvxff8e4QTbeapjpN1H9htxen7B00NawFQKucs6+pt0S0Ar8tPzrifUYQpAzUy25QM1MEZ0LxfACXcvv7CFhV7yjmCC6u8fs80w75mmpMU3JUarTbHxVAxxng3+i1A96+rC1LhbGfX6hMUa9B4iXB24yKazEkfYYpMytV13heiIdUKWqBYKGciCy5ZEudOtCjy0zINqUabqlJTGDHJuoU7TdVpF5E398Q0NRnq4/A4Oh98y3REwmEBHg4+Fhrqir0OZxM7fdJb64mTtWg3gd49rpicqYGEdBGq82GhDyfW03jR3PW1Bh0szJ8m20XncGZWf6q/gIAw9d77eEzvSItDfaopwNfqIEFANw3az0x86Nw17Xbp80aZ1YTCQD0X2g1heTGT8j53/gPqbunk793smYAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "v玉\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "v玉\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "v馬\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAAAAACPAi4CAAAEfklEQVR4nN2WSWwbVRjH/57Fy3hL7cSx46QlJHBIKAQhkaoV0B7KJkX0wIUIIfWAFMGFLiAkEAfKoaC2BFQkIpAqFsGpKCqNWhEgVUUrFSRIC5EREcRJmjiJYzuJl/EynsfBM/asSUc5IPFd5nvL//e+efO9bx7wX5tNdvbTFpWpSQAAI7d9RYsARvUAfHlremqHBhBw3GcJYPtnXA2IFAfslgjfayK4zYkOSwBJScntz/IFS3oQDYBBzpK+cFILsPGWANWYBmBnLX5HaCPwpavbAtiojCWAPLkOmD2XFLYVAZwFSxGI0rOeSPCXawDSOKE6kWBjZb+kA7hKJQAk8TvZ2eE1UJPs7C+jzvejUnNQB/C4VluB9bNfVjv39D/YocnrzF+3YtfiwIlXu9QDDcDP2f5eIBMrYXp6rC3c2xe5xwMA2JheisfmkgkeAC45Xo+YAJJ3pwCE7p8UxGo6/ccETdFAN78AiHZUO0LNjIu22yqxN4e9qJ8EJQBNSQDuF4M3/k5TcvciITxpOtDqaoHTH/UEmdTUFG8G8GcAoP2lg7fTC3xSAKiQxxa9eoF3P77X6ZEm+jqfpgCAED2guZB3A2A6uqlyVSAAWMrGzpQgOEONdJEyJyvoAfNc0g0g98rBAa7eyWdERbwNOzmt4gEAvs2mAWBq7IOfGopCSi9WmQIAbxoA5sT506V6H5+xAPCkASCA8syJem0omxS6eoxKQHBFBNDXgtyli/Ie5ZcAoQwgEReN9GoAnwcQGGKrSx/9qti43HLm4htDx68puohRHsDF817A9vza54XZLzDu2MU2h2aKQGlkpFiqkreGHzAIQXl0ucHD3QCQ+/o3sfd8rN5PR7qKAlmju88E5K6Zo9cNIqDo2t55Dj9VbP4B4NqqYj4tIjD4cJEQvrg83S9PnZT1KgDDbUhOO3DsNS7qQ1fqU4DdvY8CIFQMEkoFoF0FUn+lR8bnvC1OXP0EqFZqUxmtWBdBaK3S+MF6egCAdRreG4w/Y+ar5bJ2Jhc01DdyQgkoL/O6yh7qgc3OantNIoArr4ug5TGPPeLT1un8j8YAZ0UXATPwkJ1jbEBmtnHCsPGNMcDnXtMFG34nNLc4d/nlA08emdcNQv0VsLKU6Kl5wo0E6CYKQDHX9d2p1RSA8+SMawvAn/Sjkpf98AqYAA2A39h1F+92A8DU6HPSsGgCgHdRdlopIq6yUV+F9jdVgm3t2OFYgqMspQkxAzTJ5YMZSiVZXzgMd9e9EQ5aM43Av1qVbrw9p2/mAjtDbtUm1800Al8pFZLccNhQWrO3G656BVpc2UTWsFtmgI+TW1VxnWnesVaYtwEIJ+5EpKzPGoA/qztOBqasTBpAlL+TCy9REDSAYW59a3n5PcW30p703cd8e01vaQCwEI8fVbb1k6nj9DOdZouLZ69fUXcZrtYXfOIFgwFx8hSZ0JZ2k3DtznMtYb9y7XhxZEww+FVv8r7P7unYL7nrF8R3TXJ00w1r33ekEyATo+uXN5u2mbUdunmo0/DX8D+yfwG+C4csUnjONQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "v王\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "v王\n" ] } ], "source": [ "def get_label(idx):\n", " sente = idx < 15\n", " if sente:\n", " return LABELS_JA[idx]\n", " return 'v' + LABELS_JA[idx - 15]\n", "\n", "for e in errors:\n", " display_image(x_all[e][:, :, 0] * 256)\n", " print(get_label(res[e]))" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(560, 64, 64, 1)" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.r_[x_all, x_all].shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }