Skip to content

Commit fe2247b

Browse files
committed
End neural network
1 parent 6e583e6 commit fe2247b

File tree

1 file changed

+84
-3
lines changed

1 file changed

+84
-3
lines changed

Ch03.Neural_network.ipynb

+84-3
Original file line numberDiff line numberDiff line change
@@ -1229,6 +1229,7 @@
12291229
"network = init_network()\n",
12301230
"\n",
12311231
"accuracy_cnt = 0\n",
1232+
"\n",
12321233
"for i in range(len(x)):\n",
12331234
" y = predict(network, x[i])\n",
12341235
" p = np.argmax(y)\n",
@@ -1250,12 +1251,92 @@
12501251
"그 외에도 전체 데이터를 균일하게 분포시키는 데이터 **백색화**<sup>whitening</sup> 등도 존재한다."
12511252
]
12521253
},
1254+
{
1255+
"cell_type": "markdown",
1256+
"metadata": {},
1257+
"source": [
1258+
"### 3.6.3 배치 처리"
1259+
]
1260+
},
12531261
{
12541262
"cell_type": "code",
1255-
"execution_count": null,
1263+
"execution_count": 32,
12561264
"metadata": {},
1257-
"outputs": [],
1258-
"source": []
1265+
"outputs": [
1266+
{
1267+
"name": "stdout",
1268+
"output_type": "stream",
1269+
"text": [
1270+
"(10000, 784)\n",
1271+
"(784,)\n",
1272+
"(784, 50)\n",
1273+
"(50, 100)\n",
1274+
"(100, 10)\n"
1275+
]
1276+
}
1277+
],
1278+
"source": [
1279+
"x, _ = get_data()\n",
1280+
"network = init_network()\n",
1281+
"\n",
1282+
"W1, W2, W3 = network['W1'], network['W2'], network['W3']\n",
1283+
"print(x.shape)\n",
1284+
"print(x[0].shape)\n",
1285+
"print(W1.shape)\n",
1286+
"print(W2.shape)\n",
1287+
"print(W3.shape)"
1288+
]
1289+
},
1290+
{
1291+
"cell_type": "markdown",
1292+
"metadata": {},
1293+
"source": [
1294+
"하나로 묶은 입력 데이터를 **배치**<sup>batch</sup>라 한다.\n",
1295+
"\n",
1296+
"**※ NOTE** \n",
1297+
"수치 계산 라이브러리 대부분이 큰 배열을 효율적으로 처리할 수 있도록 고도로 최적화되어 있다. \n",
1298+
"또한 느린 I/O를 통해 데이터를 읽는 횟수가 줄기 때문에 배치 처리를 수행함으로써 얻는 이점이 커지게 된다."
1299+
]
1300+
},
1301+
{
1302+
"cell_type": "code",
1303+
"execution_count": 36,
1304+
"metadata": {},
1305+
"outputs": [
1306+
{
1307+
"name": "stdout",
1308+
"output_type": "stream",
1309+
"text": [
1310+
"Accuracy:0.9352\n"
1311+
]
1312+
}
1313+
],
1314+
"source": [
1315+
"x, t = get_data()\n",
1316+
"network = init_network()\n",
1317+
"\n",
1318+
"batch_size = 100\n",
1319+
"accuracy_cnt = 0\n",
1320+
"\n",
1321+
"for i in range(0, len(x), batch_size):\n",
1322+
" x_batch = x[i:i+batch_size]\n",
1323+
" y_batch = predict(network, x_batch)\n",
1324+
" p = np.argmax(y_batch, axis=1)\n",
1325+
" \n",
1326+
" accuracy_cnt += np.sum(p == t[i:i+batch_size])\n",
1327+
" \n",
1328+
"print(\"Accuracy:\" + str(float(accuracy_cnt) / len(x)))"
1329+
]
1330+
},
1331+
{
1332+
"cell_type": "markdown",
1333+
"metadata": {},
1334+
"source": [
1335+
"## 3.7 정리\n",
1336+
"신경망은 각 층의 뉴런들이 다음 층의 뉴런으로 신호를 전달한다는 점에서 앞 장의 퍼셉트론과 같다. \n",
1337+
"하지만 신경망에서는 활성화 함수로 시그모이드 함수를, 퍼셉트론에서는 계단 함수를 활성화 함수로 사용했다. \n",
1338+
"이 차이가 신경망 학습에 중요한 점이다."
1339+
]
12591340
}
12601341
],
12611342
"metadata": {

0 commit comments

Comments
 (0)