Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save i4kimura/9d01793529b13d04a213ff17fb795180 to your computer and use it in GitHub Desktop.
Save i4kimura/9d01793529b13d04a213ff17fb795180 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ニューラルネットワークで問題を解く\n",
"\n",
"ニューラルネットワークで、スパイラルデータセットのクラス分けを行う。\n",
"使用するのは隠れ層がひとつのニューラルネットワークを使用する。\n",
"\n",
"```python\n",
"class TwoLayerNet:\n",
" def __init__(self, input_size, hidden_size, output_size):\n",
" I, H, O = input_size, hidden_size, output_size\n",
"\n",
" # 重みとバイアスの初期化\n",
" W1 = 0.01 * np.random.randn(I, H)\n",
" b1 = np.zeros(H)\n",
" W2 = 0.01 * np.random.randn(H, O)\n",
" b2 = np.zeros(O)\n",
"\n",
" # レイヤの生成\n",
" self.layers = [\n",
" Affine(W1, b1),\n",
" Sigmoid(),\n",
" Affine(W2, b2)\n",
" ]\n",
" self.loss_layer = SoftmaxWithLoss()\n",
"\n",
" # すべての重みと勾配をリストにまとめる\n",
" self.params, self.grads = [], []\n",
" for layer in self.layers:\n",
" self.params += layer.params\n",
" self.grads += layer.grads\n",
"\n",
" def predict(self, x):\n",
" for layer in self.layers:\n",
" x = layer.forward(x)\n",
" return x\n",
"\n",
" def forward(self, x, t):\n",
" score = self.predict(x)\n",
" loss = self.loss_layer.forward(score, t)\n",
" return loss\n",
"\n",
" def backward(self, dout=1):\n",
" dout = self.loss_layer.backward(dout)\n",
" for layer in reversed(self.layers):\n",
" dout = layer.backward(dout)\n",
" return dout\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"使用するデータはスパイラルデータセット。単純な関数では区分けが難しい。"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"x, t = spiral.load_data()\n",
"CLS_NUM = 3\n",
"markers = ['o', 'x', '^']\n",
"\n",
"for i in range(CLS_NUM):\n",
" plt.scatter(x[i*N:(i+1)*N, 0], x[i*N:(i+1)*N, 1], s=40, marker=markers[i])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"| epoch 1 | iter 10 / 10 | loss 1.13\n",
"| epoch 2 | iter 10 / 10 | loss 1.13\n",
"| epoch 3 | iter 10 / 10 | loss 1.12\n",
"| epoch 4 | iter 10 / 10 | loss 1.12\n",
"| epoch 5 | iter 10 / 10 | loss 1.11\n",
"| epoch 6 | iter 10 / 10 | loss 1.14\n",
"| epoch 7 | iter 10 / 10 | loss 1.16\n",
"| epoch 8 | iter 10 / 10 | loss 1.11\n",
"| epoch 9 | iter 10 / 10 | loss 1.12\n",
"| epoch 10 | iter 10 / 10 | loss 1.13\n",
"| epoch 11 | iter 10 / 10 | loss 1.12\n",
"| epoch 12 | iter 10 / 10 | loss 1.11\n",
"| epoch 13 | iter 10 / 10 | loss 1.09\n",
"| epoch 14 | iter 10 / 10 | loss 1.08\n",
"| epoch 15 | iter 10 / 10 | loss 1.04\n",
"| epoch 16 | iter 10 / 10 | loss 1.03\n",
"| epoch 17 | iter 10 / 10 | loss 0.96\n",
"| epoch 18 | iter 10 / 10 | loss 0.92\n",
"| epoch 19 | iter 10 / 10 | loss 0.92\n",
"| epoch 20 | iter 10 / 10 | loss 0.87\n",
"| epoch 21 | iter 10 / 10 | loss 0.85\n",
"| epoch 22 | iter 10 / 10 | loss 0.82\n",
"| epoch 23 | iter 10 / 10 | loss 0.79\n",
"| epoch 24 | iter 10 / 10 | loss 0.78\n",
"| epoch 25 | iter 10 / 10 | loss 0.82\n",
"| epoch 26 | iter 10 / 10 | loss 0.78\n",
"| epoch 27 | iter 10 / 10 | loss 0.76\n",
"| epoch 28 | iter 10 / 10 | loss 0.76\n",
"| epoch 29 | iter 10 / 10 | loss 0.78\n",
"| epoch 30 | iter 10 / 10 | loss 0.75\n",
"| epoch 31 | iter 10 / 10 | loss 0.78\n",
"| epoch 32 | iter 10 / 10 | loss 0.77\n",
"| epoch 33 | iter 10 / 10 | loss 0.77\n",
"| epoch 34 | iter 10 / 10 | loss 0.78\n",
"| epoch 35 | iter 10 / 10 | loss 0.75\n",
"| epoch 36 | iter 10 / 10 | loss 0.74\n",
"| epoch 37 | iter 10 / 10 | loss 0.76\n",
"| epoch 38 | iter 10 / 10 | loss 0.76\n",
"| epoch 39 | iter 10 / 10 | loss 0.73\n",
"| epoch 40 | iter 10 / 10 | loss 0.75\n",
"| epoch 41 | iter 10 / 10 | loss 0.76\n",
"| epoch 42 | iter 10 / 10 | loss 0.76\n",
"| epoch 43 | iter 10 / 10 | loss 0.76\n",
"| epoch 44 | iter 10 / 10 | loss 0.74\n",
"| epoch 45 | iter 10 / 10 | loss 0.75\n",
"| epoch 46 | iter 10 / 10 | loss 0.73\n",
"| epoch 47 | iter 10 / 10 | loss 0.72\n",
"| epoch 48 | iter 10 / 10 | loss 0.73\n",
"| epoch 49 | iter 10 / 10 | loss 0.72\n",
"| epoch 50 | iter 10 / 10 | loss 0.72\n",
"| epoch 51 | iter 10 / 10 | loss 0.72\n",
"| epoch 52 | iter 10 / 10 | loss 0.72\n",
"| epoch 53 | iter 10 / 10 | loss 0.74\n",
"| epoch 54 | iter 10 / 10 | loss 0.74\n",
"| epoch 55 | iter 10 / 10 | loss 0.72\n",
"| epoch 56 | iter 10 / 10 | loss 0.72\n",
"| epoch 57 | iter 10 / 10 | loss 0.71\n",
"| epoch 58 | iter 10 / 10 | loss 0.70\n",
"| epoch 59 | iter 10 / 10 | loss 0.72\n",
"| epoch 60 | iter 10 / 10 | loss 0.70\n",
"| epoch 61 | iter 10 / 10 | loss 0.71\n",
"| epoch 62 | iter 10 / 10 | loss 0.72\n",
"| epoch 63 | iter 10 / 10 | loss 0.70\n",
"| epoch 64 | iter 10 / 10 | loss 0.71\n",
"| epoch 65 | iter 10 / 10 | loss 0.73\n",
"| epoch 66 | iter 10 / 10 | loss 0.70\n",
"| epoch 67 | iter 10 / 10 | loss 0.71\n",
"| epoch 68 | iter 10 / 10 | loss 0.69\n",
"| epoch 69 | iter 10 / 10 | loss 0.70\n",
"| epoch 70 | iter 10 / 10 | loss 0.71\n",
"| epoch 71 | iter 10 / 10 | loss 0.68\n",
"| epoch 72 | iter 10 / 10 | loss 0.69\n",
"| epoch 73 | iter 10 / 10 | loss 0.67\n",
"| epoch 74 | iter 10 / 10 | loss 0.68\n",
"| epoch 75 | iter 10 / 10 | loss 0.67\n",
"| epoch 76 | iter 10 / 10 | loss 0.66\n",
"| epoch 77 | iter 10 / 10 | loss 0.69\n",
"| epoch 78 | iter 10 / 10 | loss 0.64\n",
"| epoch 79 | iter 10 / 10 | loss 0.68\n",
"| epoch 80 | iter 10 / 10 | loss 0.64\n",
"| epoch 81 | iter 10 / 10 | loss 0.64\n",
"| epoch 82 | iter 10 / 10 | loss 0.66\n",
"| epoch 83 | iter 10 / 10 | loss 0.62\n",
"| epoch 84 | iter 10 / 10 | loss 0.62\n",
"| epoch 85 | iter 10 / 10 | loss 0.61\n",
"| epoch 86 | iter 10 / 10 | loss 0.60\n",
"| epoch 87 | iter 10 / 10 | loss 0.60\n",
"| epoch 88 | iter 10 / 10 | loss 0.61\n",
"| epoch 89 | iter 10 / 10 | loss 0.59\n",
"| epoch 90 | iter 10 / 10 | loss 0.58\n",
"| epoch 91 | iter 10 / 10 | loss 0.56\n",
"| epoch 92 | iter 10 / 10 | loss 0.56\n",
"| epoch 93 | iter 10 / 10 | loss 0.54\n",
"| epoch 94 | iter 10 / 10 | loss 0.53\n",
"| epoch 95 | iter 10 / 10 | loss 0.53\n",
"| epoch 96 | iter 10 / 10 | loss 0.52\n",
"| epoch 97 | iter 10 / 10 | loss 0.51\n",
"| epoch 98 | iter 10 / 10 | loss 0.50\n",
"| epoch 99 | iter 10 / 10 | loss 0.48\n",
"| epoch 100 | iter 10 / 10 | loss 0.48\n",
"| epoch 101 | iter 10 / 10 | loss 0.46\n",
"| epoch 102 | iter 10 / 10 | loss 0.45\n",
"| epoch 103 | iter 10 / 10 | loss 0.45\n",
"| epoch 104 | iter 10 / 10 | loss 0.44\n",
"| epoch 105 | iter 10 / 10 | loss 0.44\n",
"| epoch 106 | iter 10 / 10 | loss 0.41\n",
"| epoch 107 | iter 10 / 10 | loss 0.40\n",
"| epoch 108 | iter 10 / 10 | loss 0.41\n",
"| epoch 109 | iter 10 / 10 | loss 0.40\n",
"| epoch 110 | iter 10 / 10 | loss 0.40\n",
"| epoch 111 | iter 10 / 10 | loss 0.38\n",
"| epoch 112 | iter 10 / 10 | loss 0.38\n",
"| epoch 113 | iter 10 / 10 | loss 0.36\n",
"| epoch 114 | iter 10 / 10 | loss 0.37\n",
"| epoch 115 | iter 10 / 10 | loss 0.35\n",
"| epoch 116 | iter 10 / 10 | loss 0.34\n",
"| epoch 117 | iter 10 / 10 | loss 0.34\n",
"| epoch 118 | iter 10 / 10 | loss 0.34\n",
"| epoch 119 | iter 10 / 10 | loss 0.33\n",
"| epoch 120 | iter 10 / 10 | loss 0.34\n",
"| epoch 121 | iter 10 / 10 | loss 0.32\n",
"| epoch 122 | iter 10 / 10 | loss 0.32\n",
"| epoch 123 | iter 10 / 10 | loss 0.31\n",
"| epoch 124 | iter 10 / 10 | loss 0.31\n",
"| epoch 125 | iter 10 / 10 | loss 0.30\n",
"| epoch 126 | iter 10 / 10 | loss 0.30\n",
"| epoch 127 | iter 10 / 10 | loss 0.28\n",
"| epoch 128 | iter 10 / 10 | loss 0.28\n",
"| epoch 129 | iter 10 / 10 | loss 0.28\n",
"| epoch 130 | iter 10 / 10 | loss 0.28\n",
"| epoch 131 | iter 10 / 10 | loss 0.27\n",
"| epoch 132 | iter 10 / 10 | loss 0.27\n",
"| epoch 133 | iter 10 / 10 | loss 0.27\n",
"| epoch 134 | iter 10 / 10 | loss 0.27\n",
"| epoch 135 | iter 10 / 10 | loss 0.27\n",
"| epoch 136 | iter 10 / 10 | loss 0.26\n",
"| epoch 137 | iter 10 / 10 | loss 0.26\n",
"| epoch 138 | iter 10 / 10 | loss 0.26\n",
"| epoch 139 | iter 10 / 10 | loss 0.25\n",
"| epoch 140 | iter 10 / 10 | loss 0.24\n",
"| epoch 141 | iter 10 / 10 | loss 0.24\n",
"| epoch 142 | iter 10 / 10 | loss 0.25\n",
"| epoch 143 | iter 10 / 10 | loss 0.24\n",
"| epoch 144 | iter 10 / 10 | loss 0.24\n",
"| epoch 145 | iter 10 / 10 | loss 0.23\n",
"| epoch 146 | iter 10 / 10 | loss 0.24\n",
"| epoch 147 | iter 10 / 10 | loss 0.23\n",
"| epoch 148 | iter 10 / 10 | loss 0.23\n",
"| epoch 149 | iter 10 / 10 | loss 0.22\n",
"| epoch 150 | iter 10 / 10 | loss 0.22\n",
"| epoch 151 | iter 10 / 10 | loss 0.22\n",
"| epoch 152 | iter 10 / 10 | loss 0.22\n",
"| epoch 153 | iter 10 / 10 | loss 0.22\n",
"| epoch 154 | iter 10 / 10 | loss 0.22\n",
"| epoch 155 | iter 10 / 10 | loss 0.22\n",
"| epoch 156 | iter 10 / 10 | loss 0.21\n",
"| epoch 157 | iter 10 / 10 | loss 0.21\n",
"| epoch 158 | iter 10 / 10 | loss 0.20\n",
"| epoch 159 | iter 10 / 10 | loss 0.21\n",
"| epoch 160 | iter 10 / 10 | loss 0.20\n",
"| epoch 161 | iter 10 / 10 | loss 0.20\n",
"| epoch 162 | iter 10 / 10 | loss 0.20\n",
"| epoch 163 | iter 10 / 10 | loss 0.21\n",
"| epoch 164 | iter 10 / 10 | loss 0.20\n",
"| epoch 165 | iter 10 / 10 | loss 0.20\n",
"| epoch 166 | iter 10 / 10 | loss 0.19\n",
"| epoch 167 | iter 10 / 10 | loss 0.19\n",
"| epoch 168 | iter 10 / 10 | loss 0.19\n",
"| epoch 169 | iter 10 / 10 | loss 0.19\n",
"| epoch 170 | iter 10 / 10 | loss 0.19\n",
"| epoch 171 | iter 10 / 10 | loss 0.19\n",
"| epoch 172 | iter 10 / 10 | loss 0.18\n",
"| epoch 173 | iter 10 / 10 | loss 0.18\n",
"| epoch 174 | iter 10 / 10 | loss 0.18\n",
"| epoch 175 | iter 10 / 10 | loss 0.18\n",
"| epoch 176 | iter 10 / 10 | loss 0.18\n",
"| epoch 177 | iter 10 / 10 | loss 0.18\n",
"| epoch 178 | iter 10 / 10 | loss 0.18\n",
"| epoch 179 | iter 10 / 10 | loss 0.17\n",
"| epoch 180 | iter 10 / 10 | loss 0.17\n",
"| epoch 181 | iter 10 / 10 | loss 0.18\n",
"| epoch 182 | iter 10 / 10 | loss 0.17\n",
"| epoch 183 | iter 10 / 10 | loss 0.18\n",
"| epoch 184 | iter 10 / 10 | loss 0.17\n",
"| epoch 185 | iter 10 / 10 | loss 0.17\n",
"| epoch 186 | iter 10 / 10 | loss 0.18\n",
"| epoch 187 | iter 10 / 10 | loss 0.17\n",
"| epoch 188 | iter 10 / 10 | loss 0.17\n",
"| epoch 189 | iter 10 / 10 | loss 0.17\n",
"| epoch 190 | iter 10 / 10 | loss 0.17\n",
"| epoch 191 | iter 10 / 10 | loss 0.16\n",
"| epoch 192 | iter 10 / 10 | loss 0.17\n",
"| epoch 193 | iter 10 / 10 | loss 0.16\n",
"| epoch 194 | iter 10 / 10 | loss 0.16\n",
"| epoch 195 | iter 10 / 10 | loss 0.16\n",
"| epoch 196 | iter 10 / 10 | loss 0.16\n",
"| epoch 197 | iter 10 / 10 | loss 0.16\n",
"| epoch 198 | iter 10 / 10 | loss 0.15\n",
"| epoch 199 | iter 10 / 10 | loss 0.16\n",
"| epoch 200 | iter 10 / 10 | loss 0.16\n",
"| epoch 201 | iter 10 / 10 | loss 0.15\n",
"| epoch 202 | iter 10 / 10 | loss 0.16\n",
"| epoch 203 | iter 10 / 10 | loss 0.16\n",
"| epoch 204 | iter 10 / 10 | loss 0.15\n",
"| epoch 205 | iter 10 / 10 | loss 0.16\n",
"| epoch 206 | iter 10 / 10 | loss 0.15\n",
"| epoch 207 | iter 10 / 10 | loss 0.15\n",
"| epoch 208 | iter 10 / 10 | loss 0.15\n",
"| epoch 209 | iter 10 / 10 | loss 0.15\n",
"| epoch 210 | iter 10 / 10 | loss 0.15\n",
"| epoch 211 | iter 10 / 10 | loss 0.15\n",
"| epoch 212 | iter 10 / 10 | loss 0.15\n",
"| epoch 213 | iter 10 / 10 | loss 0.15\n",
"| epoch 214 | iter 10 / 10 | loss 0.15\n",
"| epoch 215 | iter 10 / 10 | loss 0.15\n",
"| epoch 216 | iter 10 / 10 | loss 0.14\n",
"| epoch 217 | iter 10 / 10 | loss 0.14\n",
"| epoch 218 | iter 10 / 10 | loss 0.15\n",
"| epoch 219 | iter 10 / 10 | loss 0.14\n",
"| epoch 220 | iter 10 / 10 | loss 0.14\n",
"| epoch 221 | iter 10 / 10 | loss 0.14\n",
"| epoch 222 | iter 10 / 10 | loss 0.14\n",
"| epoch 223 | iter 10 / 10 | loss 0.14\n",
"| epoch 224 | iter 10 / 10 | loss 0.14\n",
"| epoch 225 | iter 10 / 10 | loss 0.14\n",
"| epoch 226 | iter 10 / 10 | loss 0.14\n",
"| epoch 227 | iter 10 / 10 | loss 0.14\n",
"| epoch 228 | iter 10 / 10 | loss 0.14\n",
"| epoch 229 | iter 10 / 10 | loss 0.13\n",
"| epoch 230 | iter 10 / 10 | loss 0.14\n",
"| epoch 231 | iter 10 / 10 | loss 0.13\n",
"| epoch 232 | iter 10 / 10 | loss 0.14\n",
"| epoch 233 | iter 10 / 10 | loss 0.13\n",
"| epoch 234 | iter 10 / 10 | loss 0.13\n",
"| epoch 235 | iter 10 / 10 | loss 0.13\n",
"| epoch 236 | iter 10 / 10 | loss 0.13\n",
"| epoch 237 | iter 10 / 10 | loss 0.14\n",
"| epoch 238 | iter 10 / 10 | loss 0.13\n",
"| epoch 239 | iter 10 / 10 | loss 0.13\n",
"| epoch 240 | iter 10 / 10 | loss 0.14\n",
"| epoch 241 | iter 10 / 10 | loss 0.13\n",
"| epoch 242 | iter 10 / 10 | loss 0.13\n",
"| epoch 243 | iter 10 / 10 | loss 0.13\n",
"| epoch 244 | iter 10 / 10 | loss 0.13\n",
"| epoch 245 | iter 10 / 10 | loss 0.13\n",
"| epoch 246 | iter 10 / 10 | loss 0.13\n",
"| epoch 247 | iter 10 / 10 | loss 0.13\n",
"| epoch 248 | iter 10 / 10 | loss 0.13\n",
"| epoch 249 | iter 10 / 10 | loss 0.13\n",
"| epoch 250 | iter 10 / 10 | loss 0.13\n",
"| epoch 251 | iter 10 / 10 | loss 0.13\n",
"| epoch 252 | iter 10 / 10 | loss 0.12\n",
"| epoch 253 | iter 10 / 10 | loss 0.12\n",
"| epoch 254 | iter 10 / 10 | loss 0.12\n",
"| epoch 255 | iter 10 / 10 | loss 0.12\n",
"| epoch 256 | iter 10 / 10 | loss 0.12\n",
"| epoch 257 | iter 10 / 10 | loss 0.12\n",
"| epoch 258 | iter 10 / 10 | loss 0.12\n",
"| epoch 259 | iter 10 / 10 | loss 0.13\n",
"| epoch 260 | iter 10 / 10 | loss 0.12\n",
"| epoch 261 | iter 10 / 10 | loss 0.13\n",
"| epoch 262 | iter 10 / 10 | loss 0.12\n",
"| epoch 263 | iter 10 / 10 | loss 0.12\n",
"| epoch 264 | iter 10 / 10 | loss 0.13\n",
"| epoch 265 | iter 10 / 10 | loss 0.12\n",
"| epoch 266 | iter 10 / 10 | loss 0.12\n",
"| epoch 267 | iter 10 / 10 | loss 0.12\n",
"| epoch 268 | iter 10 / 10 | loss 0.12\n",
"| epoch 269 | iter 10 / 10 | loss 0.11\n",
"| epoch 270 | iter 10 / 10 | loss 0.12\n",
"| epoch 271 | iter 10 / 10 | loss 0.12\n",
"| epoch 272 | iter 10 / 10 | loss 0.12\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"| epoch 273 | iter 10 / 10 | loss 0.12\n",
"| epoch 274 | iter 10 / 10 | loss 0.12\n",
"| epoch 275 | iter 10 / 10 | loss 0.11\n",
"| epoch 276 | iter 10 / 10 | loss 0.12\n",
"| epoch 277 | iter 10 / 10 | loss 0.12\n",
"| epoch 278 | iter 10 / 10 | loss 0.11\n",
"| epoch 279 | iter 10 / 10 | loss 0.11\n",
"| epoch 280 | iter 10 / 10 | loss 0.11\n",
"| epoch 281 | iter 10 / 10 | loss 0.11\n",
"| epoch 282 | iter 10 / 10 | loss 0.12\n",
"| epoch 283 | iter 10 / 10 | loss 0.11\n",
"| epoch 284 | iter 10 / 10 | loss 0.11\n",
"| epoch 285 | iter 10 / 10 | loss 0.11\n",
"| epoch 286 | iter 10 / 10 | loss 0.11\n",
"| epoch 287 | iter 10 / 10 | loss 0.11\n",
"| epoch 288 | iter 10 / 10 | loss 0.12\n",
"| epoch 289 | iter 10 / 10 | loss 0.11\n",
"| epoch 290 | iter 10 / 10 | loss 0.11\n",
"| epoch 291 | iter 10 / 10 | loss 0.11\n",
"| epoch 292 | iter 10 / 10 | loss 0.11\n",
"| epoch 293 | iter 10 / 10 | loss 0.11\n",
"| epoch 294 | iter 10 / 10 | loss 0.11\n",
"| epoch 295 | iter 10 / 10 | loss 0.12\n",
"| epoch 296 | iter 10 / 10 | loss 0.11\n",
"| epoch 297 | iter 10 / 10 | loss 0.12\n",
"| epoch 298 | iter 10 / 10 | loss 0.11\n",
"| epoch 299 | iter 10 / 10 | loss 0.11\n",
"| epoch 300 | iter 10 / 10 | loss 0.11\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# coding: utf-8\n",
"import sys\n",
"sys.path.append('..') # 親ディレクトリのファイルをインポートするための設定\n",
"import numpy as np\n",
"from common.optimizer import SGD\n",
"from dataset import spiral\n",
"import matplotlib.pyplot as plt\n",
"from two_layer_net import TwoLayerNet\n",
"\n",
"\n",
"# ハイパーパラメータの設定\n",
"max_epoch = 300\n",
"batch_size = 30\n",
"hidden_size = 10\n",
"learning_rate = 1.0\n",
"\n",
"x, t = spiral.load_data()\n",
"model = TwoLayerNet(input_size=2, hidden_size=hidden_size, output_size=3)\n",
"optimizer = SGD(lr=learning_rate)\n",
"\n",
"# 学習で使用する変数\n",
"data_size = len(x)\n",
"max_iters = data_size // batch_size\n",
"total_loss = 0\n",
"loss_count = 0\n",
"loss_list = []\n",
"\n",
"for epoch in range(max_epoch):\n",
" # データのシャッフル\n",
" idx = np.random.permutation(data_size)\n",
" x = x[idx]\n",
" t = t[idx]\n",
"\n",
" for iters in range(max_iters):\n",
" batch_x = x[iters*batch_size:(iters+1)*batch_size]\n",
" batch_t = t[iters*batch_size:(iters+1)*batch_size]\n",
"\n",
" # 勾配を求め、パラメータを更新\n",
" loss = model.forward(batch_x, batch_t)\n",
" model.backward()\n",
" optimizer.update(model.params, model.grads)\n",
"\n",
" total_loss += loss\n",
" loss_count += 1\n",
"\n",
" # 定期的に学習経過を出力\n",
" if (iters+1) % 10 == 0:\n",
" avg_loss = total_loss / loss_count\n",
" print('| epoch %d | iter %d / %d | loss %.2f'\n",
" % (epoch + 1, iters + 1, max_iters, avg_loss))\n",
" loss_list.append(avg_loss)\n",
" total_loss, loss_count = 0, 0\n",
"\n",
"\n",
"# 学習結果のプロット\n",
"plt.plot(np.arange(len(loss_list)), loss_list, label='train')\n",
"plt.xlabel('iterations (x10)')\n",
"plt.ylabel('loss')\n",
"plt.show()\n",
"\n",
"# 境界領域のプロット\n",
"h = 0.001\n",
"x_min, x_max = x[:, 0].min() - .1, x[:, 0].max() + .1\n",
"y_min, y_max = x[:, 1].min() - .1, x[:, 1].max() + .1\n",
"xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
"X = np.c_[xx.ravel(), yy.ravel()]\n",
"score = model.predict(X)\n",
"predict_cls = np.argmax(score, axis=1)\n",
"Z = predict_cls.reshape(xx.shape)\n",
"plt.contourf(xx, yy, Z)\n",
"plt.axis('off')\n",
"\n",
"# データ点のプロット\n",
"x, t = spiral.load_data()\n",
"N = 100\n",
"CLS_NUM = 3\n",
"markers = ['o', 'x', '^']\n",
"for i in range(CLS_NUM):\n",
" plt.scatter(x[i*N:(i+1)*N, 0], x[i*N:(i+1)*N, 1], s=40, marker=markers[i])\n",
"plt.show()\n"
]
},
{
"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.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment