텐서플로 1.8 버전으로 재실행 및 강화학습 녹화 영상 개선

This commit is contained in:
Haesun Park
2018-05-03 15:10:41 +09:00
parent f76b403159
commit 0bd3f4c671
17 changed files with 29187 additions and 31698 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -12,11 +12,11 @@
"CPython 3.5.5\n", "CPython 3.5.5\n",
"IPython 6.3.0\n", "IPython 6.3.0\n",
"\n", "\n",
"numpy 1.14.2\n", "numpy 1.14.3\n",
"sklearn 0.19.1\n", "sklearn 0.19.1\n",
"scipy 1.0.1\n", "scipy 1.0.1\n",
"matplotlib 2.2.2\n", "matplotlib 2.2.2\n",
"tensorflow 1.7.0\n" "tensorflow 1.8.0\n"
] ]
} }
], ],
@@ -261,11 +261,11 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"No more files to read\n", "더 이상 읽을 파일이 없습니다\n",
"[array([[ 4.0000000e+00, 5.0000000e+00],\n", "[array([[4.00000000e+00, 5.00000000e+00],\n",
" [ 1.0000000e+00, -3.9627734e+03]], dtype=float32), array([1, 0], dtype=int32)]\n", " [1.00000000e+00, 1.27106565e+36]], dtype=float32), array([1, 0], dtype=int32)]\n",
"[array([[7., 8.]], dtype=float32), array([0], dtype=int32)]\n", "[array([[7., 8.]], dtype=float32), array([0], dtype=int32)]\n",
"No more training instances\n" "더 이상 훈련 샘플이 없습니다\n"
] ]
} }
], ],
@@ -344,8 +344,8 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"[array([[ 4.0000000e+00, 5.0000000e+00],\n", "[array([[4.00000000e+00, 5.00000000e+00],\n",
" [ 1.0000000e+00, -3.9627734e+03]], dtype=float32), array([1, 0], dtype=int32)]\n", " [1.00000000e+00, 1.27106565e+36]], dtype=float32), array([1, 0], dtype=int32)]\n",
"[array([[7., 8.]], dtype=float32), array([0], dtype=int32)]\n", "[array([[7., 8.]], dtype=float32), array([0], dtype=int32)]\n",
"더 이상 훈련 샘플이 없습니다\n" "더 이상 훈련 샘플이 없습니다\n"
] ]
@@ -398,8 +398,8 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"[array([[ 4.0000000e+00, 5.0000000e+00],\n", "[array([[4.00000000e+00, 5.00000000e+00],\n",
" [ 1.0000000e+00, -3.9627734e+03]], dtype=float32), array([1, 0], dtype=int32)]\n", " [1.00000000e+00, 1.27106565e+36]], dtype=float32), array([1, 0], dtype=int32)]\n",
"[array([[7., 8.]], dtype=float32), array([0], dtype=int32)]\n", "[array([[7., 8.]], dtype=float32), array([0], dtype=int32)]\n",
"더 이상 훈련 샘플이 없습니다\n" "더 이상 훈련 샘플이 없습니다\n"
] ]

View File

@@ -12,11 +12,11 @@
"CPython 3.5.5\n", "CPython 3.5.5\n",
"IPython 6.3.0\n", "IPython 6.3.0\n",
"\n", "\n",
"numpy 1.14.2\n", "numpy 1.14.3\n",
"sklearn 0.19.1\n", "sklearn 0.19.1\n",
"scipy 1.0.1\n", "scipy 1.0.1\n",
"matplotlib 2.2.2\n", "matplotlib 2.2.2\n",
"tensorflow 1.7.0\n" "tensorflow 1.8.0\n"
] ]
} }
], ],
@@ -726,9 +726,6 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"WARNING:tensorflow:From /home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py:198: retry (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use the retry module or similar alternatives.\n",
"Extracting /tmp/data/train-images-idx3-ubyte.gz\n", "Extracting /tmp/data/train-images-idx3-ubyte.gz\n",
"Extracting /tmp/data/train-labels-idx1-ubyte.gz\n", "Extracting /tmp/data/train-labels-idx1-ubyte.gz\n",
"Extracting /tmp/data/t10k-images-idx3-ubyte.gz\n", "Extracting /tmp/data/t10k-images-idx3-ubyte.gz\n",
@@ -754,17 +751,17 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"0 훈련 정확도: 0.98 검증 세트 정확도: 0.976\n", "0 훈련 정확도: 0.99 검증 세트 정확도: 0.9784\n",
"1 훈련 정확도: 0.98 검증 세트 정확도: 0.9846\n", "1 훈련 정확도: 0.96 검증 세트 정확도: 0.9812\n",
"2 훈련 정확도: 0.99 검증 세트 정확도: 0.9826\n", "2 훈련 정확도: 0.99 검증 세트 정확도: 0.9856\n",
"3 훈련 정확도: 1.0 검증 세트 정확도: 0.9858\n", "3 훈련 정확도: 1.0 검증 세트 정확도: 0.9864\n",
"4 훈련 정확도: 1.0 검증 세트 정확도: 0.9874\n", "4 훈련 정확도: 1.0 검증 세트 정확도: 0.9868\n",
"5 훈련 정확도: 0.99 검증 세트 정확도: 0.9862\n", "5 훈련 정확도: 0.99 검증 세트 정확도: 0.9884\n",
"6 훈련 정확도: 1.0 검증 세트 정확도: 0.9884\n", "6 훈련 정확도: 1.0 검증 세트 정확도: 0.9878\n",
"7 훈련 정확도: 0.99 검증 세트 정확도: 0.9858\n", "7 훈련 정확도: 0.99 검증 세트 정확도: 0.9898\n",
"8 훈련 정확도: 1.0 검증 세트 정확도: 0.9886\n", "8 훈련 정확도: 0.99 검증 세트 정확도: 0.989\n",
"9 훈련 정확도: 1.0 검증 세트 정확도: 0.9864\n", "9 훈련 정확도: 1.0 검증 세트 정확도: 0.9886\n",
"테스트 세트에서 최종 정확도: 0.9868\n" "테스트 세트에서 최종 정확도: 0.9875\n"
] ]
} }
], ],
@@ -975,20 +972,23 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"에포크 0, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.4400%, 검증 세트에서 최선의 손실: 0.059448\n", "에포크 0, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.5600%, 검증 세트에서 최선의 손실: 0.061169\n",
"에포크 1, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.6000%, 검증 세트에서 최선의 손실: 0.043736\n", "에포크 1, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.6200%, 검증 세트에서 최선의 손실: 0.041548\n",
"에포크 2, 훈련 정확도: 98.0000%, 검증 세트 정확도: 98.7600%, 검증 세트에서 최선의 손실: 0.039157\n", "에포크 2, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.8600%, 검증 세트에서 최선의 손실: 0.041548\n",
"에포크 3, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.6600%, 검증 세트에서 최선의 손실: 0.039157\n", "에포크 3, 훈련 정확도: 98.0000%, 검증 세트 정확도: 98.8600%, 검증 세트에서 최선의 손실: 0.037626\n",
"에포크 4, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.1600%, 검증 세트에서 최선의 손실: 0.032197\n", "에포크 4, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.8600%, 검증 세트에서 최선의 손실: 0.037626\n",
"에포크 5, 훈련 정확도: 98.0000%, 검증 세트 정확도: 99.1000%, 검증 세트에서 최선의 손실: 0.032197\n", "에포크 5, 훈련 정확도: 98.0000%, 검증 세트 정확도: 99.1400%, 검증 세트에서 최선의 손실: 0.037626\n",
"에포크 6, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.1000%, 검증 세트에서 최선의 손실: 0.032197\n", "에포크 6, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.1400%, 검증 세트에서 최선의 손실: 0.036044\n",
"에포크 7, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.1000%, 검증 세트에서 최선의 손실: 0.032197\n", "에포크 7, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.0200%, 검증 세트에서 최선의 손실: 0.034466\n",
"에포크 8, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.0000%, 검증 세트에서 최선의 손실: 0.032197\n", "에포크 8, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.1600%, 검증 세트에서 최선의 손실: 0.034466\n",
"에포크 9, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.2000%, 검증 세트에서 최선의 손실: 0.032197\n", "에포크 9, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.0200%, 검증 세트에서 최선의 손실: 0.034466\n",
"에포크 10, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.1000%, 검증 세트에서 최선의 손실: 0.032197\n", "에포크 10, 훈련 정확도: 100.0000%, 검증 세트 정확도: 99.1400%, 검증 세트에서 최선의 손실: 0.034466\n",
"에포크 11, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.9600%, 검증 세트에서 최선의 손실: 0.032197\n", "에포크 11, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.8000%, 검증 세트에서 최선의 손실: 0.034466\n",
"에포크 12, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.9400%, 검증 세트에서 최선의 손실: 0.034466\n",
"에포크 13, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.9800%, 검증 세트에서 최선의 손실: 0.034466\n",
"에포크 14, 훈련 정확도: 100.0000%, 검증 세트 정확도: 98.9200%, 검증 세트에서 최선의 손실: 0.034466\n",
"조기 종료!\n", "조기 종료!\n",
"테스트 세트에서 최종 정확도: 0.9852\n" "테스트 세트에서 최종 정확도: 0.9892\n"
] ]
} }
], ],
@@ -1718,7 +1718,7 @@
"name": "stderr", "name": "stderr",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:35: DeprecationWarning: `imresize` is deprecated!\n", "/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:34: DeprecationWarning: `imresize` is deprecated!\n",
"`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n", "`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
"Use ``skimage.transform.resize`` instead.\n" "Use ``skimage.transform.resize`` instead.\n"
] ]
@@ -1760,7 +1760,7 @@
"name": "stderr", "name": "stderr",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:35: DeprecationWarning: `imresize` is deprecated!\n", "/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:34: DeprecationWarning: `imresize` is deprecated!\n",
"`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n", "`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
"Use ``skimage.transform.resize`` instead.\n" "Use ``skimage.transform.resize`` instead.\n"
] ]
@@ -2278,9 +2278,9 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"[('datasets/flowers/flower_photos/daisy/19834392829_7d697871f6.jpg', 0),\n", "[('datasets/flowers/flower_photos/dandelion/16656127943_2f70926b6c.jpg', 1),\n",
" ('datasets/flowers/flower_photos/roses/7345657862_689366e79a.jpg', 2),\n", " ('datasets/flowers/flower_photos/tulips/3601085193_de1195d3d7_n.jpg', 4),\n",
" ('datasets/flowers/flower_photos/dandelion/7719263062_3c8a307a5d.jpg', 1)]" " ('datasets/flowers/flower_photos/daisy/5944315415_2be8abeb2f_m.jpg', 0)]"
] ]
}, },
"execution_count": 68, "execution_count": 68,
@@ -2325,7 +2325,7 @@
"name": "stderr", "name": "stderr",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:35: DeprecationWarning: `imresize` is deprecated!\n", "/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:34: DeprecationWarning: `imresize` is deprecated!\n",
"`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n", "`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
"Use ``skimage.transform.resize`` instead.\n" "Use ``skimage.transform.resize`` instead.\n"
] ]
@@ -2431,7 +2431,7 @@
"name": "stderr", "name": "stderr",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:35: DeprecationWarning: `imresize` is deprecated!\n", "/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:34: DeprecationWarning: `imresize` is deprecated!\n",
"`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n", "`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
"Use ``skimage.transform.resize`` instead.\n" "Use ``skimage.transform.resize`` instead.\n"
] ]
@@ -2477,7 +2477,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 79, "execution_count": 77,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@@ -2492,7 +2492,7 @@
"name": "stderr", "name": "stderr",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:35: DeprecationWarning: `imresize` is deprecated!\n", "/home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/ipykernel_launcher.py:34: DeprecationWarning: `imresize` is deprecated!\n",
"`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n", "`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
"Use ``skimage.transform.resize`` instead.\n" "Use ``skimage.transform.resize`` instead.\n"
] ]
@@ -2501,16 +2501,16 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"........................................................................ 훈련 정확도: 0.575\n", "........................................................................ 훈련 정확도: 0.7\n",
"에포크 1......................................................................... 훈련 정확도: 0.525\n", "에포크 1......................................................................... 훈련 정확도: 0.5\n",
"에포크 2......................................................................... 훈련 정확도: 0.65\n", "에포크 2......................................................................... 훈련 정확도: 0.55\n",
"에포크 3......................................................................... 훈련 정확도: 0.675\n", "에포크 3......................................................................... 훈련 정확도: 0.675\n",
"에포크 4......................................................................... 훈련 정확도: 0.55\n", "에포크 4......................................................................... 훈련 정확도: 0.7\n",
"에포크 5......................................................................... 훈련 정확도: 0.7\n", "에포크 5......................................................................... 훈련 정확도: 0.8\n",
"에포크 6......................................................................... 훈련 정확도: 0.575\n", "에포크 6......................................................................... 훈련 정확도: 0.75\n",
"에포크 7......................................................................... 훈련 정확도: 0.775\n", "에포크 7......................................................................... 훈련 정확도: 0.625\n",
"에포크 8......................................................................... 훈련 정확도: 0.6\n", "에포크 8......................................................................... 훈련 정확도: 0.725\n",
"에포크 9......................................................................... 훈련 정확도: 0.875\n" "에포크 9......................................................................... 훈련 정확도: 0.65\n"
] ]
} }
], ],
@@ -2538,7 +2538,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 80, "execution_count": 78,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@@ -2547,7 +2547,7 @@
"text": [ "text": [
"INFO:tensorflow:Restoring parameters from ./my_flowers_model\n", "INFO:tensorflow:Restoring parameters from ./my_flowers_model\n",
"테스트 세트에서 최종 정확도를 계산합니다 (시간이 좀 걸립니다)...\n", "테스트 세트에서 최종 정확도를 계산합니다 (시간이 좀 걸립니다)...\n",
"테스트 정확도: 0.7084228\n" "테스트 정확도: 0.688023\n"
] ]
} }
], ],
@@ -2570,7 +2570,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"네 70.8% 정확도는 좋지 않습니다(사실 이는 나쁜 편입니다). 하지만 이는 출력층을 제외하고 모든 층을 동결하여 10번의 에포크만 실행한 것입니다. GPU를 가지고 있다면 더 오랫동안 훈련을 시켜보세요(가령, 조기 종료 기법을 사용해). 이미지 전처리 함수를 개선하여 이미지를 더 다양하게 변형시킬 수도 있습니다(가령, 명암이나 색조를 바꾸거나 이미지를 조금 회전시킵니다). 이렇게 하면 95% 정확도 이상을 달성할 수 있습니다. 조금 더 심각하게 파고들고 싶다면 96% 정확도를 달성한 [훌륭한 이 포스트](https://kwotsin.github.io/tech/2017/02/11/transfer-learning.html)에서 자세한 내용을 참고하세요." "네 68.8% 정확도는 좋지 않습니다(사실 이는 나쁜 편입니다). 하지만 이는 출력층을 제외하고 모든 층을 동결하여 10번의 에포크만 실행한 것입니다. GPU를 가지고 있다면 더 오랫동안 훈련을 시켜보세요(가령, 조기 종료 기법을 사용해). 이미지 전처리 함수를 개선하여 이미지를 더 다양하게 변형시킬 수도 있습니다(가령, 명암이나 색조를 바꾸거나 이미지를 조금 회전시킵니다). 이렇게 하면 95% 정확도 이상을 달성할 수 있습니다. 조금 더 심각하게 파고들고 싶다면 96% 정확도를 달성한 [훌륭한 이 포스트](https://kwotsin.github.io/tech/2017/02/11/transfer-learning.html)에서 자세한 내용을 참고하세요."
] ]
}, },
{ {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB