Mr00Magician
commited on
Commit
•
b57bed9
1
Parent(s):
7fce9b8
added source code for training of CNN
Browse files- Training_CNN.ipynb +676 -0
Training_CNN.ipynb
ADDED
@@ -0,0 +1,676 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 1,
|
6 |
+
"metadata": {},
|
7 |
+
"outputs": [],
|
8 |
+
"source": [
|
9 |
+
"import tensorflow as tf\n",
|
10 |
+
"import numpy as np"
|
11 |
+
]
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"cell_type": "code",
|
15 |
+
"execution_count": 2,
|
16 |
+
"metadata": {},
|
17 |
+
"outputs": [],
|
18 |
+
"source": [
|
19 |
+
"(xtrain, ytrain), (xtest, ytest) = tf.keras.datasets.mnist.load_data()"
|
20 |
+
]
|
21 |
+
},
|
22 |
+
{
|
23 |
+
"cell_type": "code",
|
24 |
+
"execution_count": 3,
|
25 |
+
"metadata": {},
|
26 |
+
"outputs": [
|
27 |
+
{
|
28 |
+
"data": {
|
29 |
+
"text/plain": [
|
30 |
+
"(60000, 28, 28)"
|
31 |
+
]
|
32 |
+
},
|
33 |
+
"execution_count": 3,
|
34 |
+
"metadata": {},
|
35 |
+
"output_type": "execute_result"
|
36 |
+
}
|
37 |
+
],
|
38 |
+
"source": [
|
39 |
+
"xtrain.shape"
|
40 |
+
]
|
41 |
+
},
|
42 |
+
{
|
43 |
+
"cell_type": "code",
|
44 |
+
"execution_count": 4,
|
45 |
+
"metadata": {},
|
46 |
+
"outputs": [
|
47 |
+
{
|
48 |
+
"data": {
|
49 |
+
"text/plain": [
|
50 |
+
"(0, 255)"
|
51 |
+
]
|
52 |
+
},
|
53 |
+
"execution_count": 4,
|
54 |
+
"metadata": {},
|
55 |
+
"output_type": "execute_result"
|
56 |
+
}
|
57 |
+
],
|
58 |
+
"source": [
|
59 |
+
"xtrain.min(), xtrain.max()"
|
60 |
+
]
|
61 |
+
},
|
62 |
+
{
|
63 |
+
"cell_type": "code",
|
64 |
+
"execution_count": 5,
|
65 |
+
"metadata": {},
|
66 |
+
"outputs": [
|
67 |
+
{
|
68 |
+
"data": {
|
69 |
+
"text/plain": [
|
70 |
+
"(10000, 28, 28, 1)"
|
71 |
+
]
|
72 |
+
},
|
73 |
+
"execution_count": 5,
|
74 |
+
"metadata": {},
|
75 |
+
"output_type": "execute_result"
|
76 |
+
}
|
77 |
+
],
|
78 |
+
"source": [
|
79 |
+
"xtrain_norm = xtrain.reshape(-1, 28, 28, 1)/255\n",
|
80 |
+
"xtest_norm = xtest.reshape(-1, 28, 28, 1)/255\n",
|
81 |
+
"xtest_norm.shape"
|
82 |
+
]
|
83 |
+
},
|
84 |
+
{
|
85 |
+
"cell_type": "code",
|
86 |
+
"execution_count": 6,
|
87 |
+
"metadata": {},
|
88 |
+
"outputs": [
|
89 |
+
{
|
90 |
+
"data": {
|
91 |
+
"text/plain": [
|
92 |
+
"array([7, 2, 1, ..., 4, 5, 6], dtype=uint8)"
|
93 |
+
]
|
94 |
+
},
|
95 |
+
"execution_count": 6,
|
96 |
+
"metadata": {},
|
97 |
+
"output_type": "execute_result"
|
98 |
+
}
|
99 |
+
],
|
100 |
+
"source": [
|
101 |
+
"ytest"
|
102 |
+
]
|
103 |
+
},
|
104 |
+
{
|
105 |
+
"cell_type": "code",
|
106 |
+
"execution_count": 10,
|
107 |
+
"metadata": {},
|
108 |
+
"outputs": [
|
109 |
+
{
|
110 |
+
"name": "stdout",
|
111 |
+
"output_type": "stream",
|
112 |
+
"text": [
|
113 |
+
"Epoch 1/2\n",
|
114 |
+
"1875/1875 [==============================] - 61s 32ms/step - loss: 0.1177 - accuracy: 0.9642\n",
|
115 |
+
"Epoch 2/2\n",
|
116 |
+
"1875/1875 [==============================] - 74s 39ms/step - loss: 0.0389 - accuracy: 0.9876\n"
|
117 |
+
]
|
118 |
+
},
|
119 |
+
{
|
120 |
+
"data": {
|
121 |
+
"text/plain": [
|
122 |
+
"<keras.callbacks.History at 0x28f7df85dc0>"
|
123 |
+
]
|
124 |
+
},
|
125 |
+
"execution_count": 10,
|
126 |
+
"metadata": {},
|
127 |
+
"output_type": "execute_result"
|
128 |
+
}
|
129 |
+
],
|
130 |
+
"source": [
|
131 |
+
"# model0 = tf.keras.Sequential([\n",
|
132 |
+
"# tf.keras.layers.Conv2D(64, (3, 3), activation = 'relu', input_shape = (28, 28, 1)),\n",
|
133 |
+
"# tf.keras.layers.MaxPool2D(),\n",
|
134 |
+
"\n",
|
135 |
+
"# tf.keras.layers.Conv2D(64, (3, 3), activation = 'relu'),\n",
|
136 |
+
"# tf.keras.layers.MaxPool2D(),\n",
|
137 |
+
"\n",
|
138 |
+
"# tf.keras.layers.Flatten(),\n",
|
139 |
+
"# tf.keras.layers.Dense(128, activation = 'relu'),\n",
|
140 |
+
"# tf.keras.layers.Dense(10, activation = 'softmax')\n",
|
141 |
+
"# ])\n",
|
142 |
+
"# # callback = tf.keras.callbacks.TensorBoard(log_dir = f'/log/{}')\n",
|
143 |
+
"\n",
|
144 |
+
"# model0.compile(\n",
|
145 |
+
"# loss = tf.keras.losses.SparseCategoricalCrossentropy(),\n",
|
146 |
+
"# optimizer = tf.keras.optimizers.Adam(),\n",
|
147 |
+
"# metrics = ['accuracy']\n",
|
148 |
+
"# )\n",
|
149 |
+
"# model0.fit(xtrain_norm, ytrain, epochs = 2)"
|
150 |
+
]
|
151 |
+
},
|
152 |
+
{
|
153 |
+
"cell_type": "code",
|
154 |
+
"execution_count": 11,
|
155 |
+
"metadata": {},
|
156 |
+
"outputs": [],
|
157 |
+
"source": [
|
158 |
+
"# model0.save('CNN.h5')"
|
159 |
+
]
|
160 |
+
},
|
161 |
+
{
|
162 |
+
"cell_type": "code",
|
163 |
+
"execution_count": 9,
|
164 |
+
"metadata": {},
|
165 |
+
"outputs": [],
|
166 |
+
"source": [
|
167 |
+
"# model0.summary()"
|
168 |
+
]
|
169 |
+
},
|
170 |
+
{
|
171 |
+
"cell_type": "markdown",
|
172 |
+
"metadata": {},
|
173 |
+
"source": [
|
174 |
+
"## Adding Right and Left Shifted images to the Dataset"
|
175 |
+
]
|
176 |
+
},
|
177 |
+
{
|
178 |
+
"cell_type": "code",
|
179 |
+
"execution_count": 10,
|
180 |
+
"metadata": {},
|
181 |
+
"outputs": [],
|
182 |
+
"source": [
|
183 |
+
"import matplotlib.pyplot as plt\n",
|
184 |
+
"import numpy as np"
|
185 |
+
]
|
186 |
+
},
|
187 |
+
{
|
188 |
+
"cell_type": "code",
|
189 |
+
"execution_count": 11,
|
190 |
+
"metadata": {},
|
191 |
+
"outputs": [
|
192 |
+
{
|
193 |
+
"data": {
|
194 |
+
"text/plain": [
|
195 |
+
"<matplotlib.image.AxesImage at 0x1baf93a9b20>"
|
196 |
+
]
|
197 |
+
},
|
198 |
+
"execution_count": 11,
|
199 |
+
"metadata": {},
|
200 |
+
"output_type": "execute_result"
|
201 |
+
},
|
202 |
+
{
|
203 |
+
"data": {
|
204 |
+
"image/png": "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1KFDh6yXZKqhoUHNzc0x50coFFJBQcEFeX5UVVUpIyNDV111lZYtW6ajR49aLymhwuGwJCktLU2StGfPHnV2dsacDxMmTNCYMWMG9flw5nH40ssvv6z09HRNnDhRZWVlOn78uMXyetXvbkZ6ps8++0xdXV3KzMyMeTwzM1N/+ctfjFZlo6CgQBUVFbrqqqvU1NSk1atX64YbbtD+/fuVkpJivTwTzc3NktTj+fHlcxeKuXPn6pZbblFeXp4OHjyon/70pyopKVFNTY2GDh1qvby46+7u1ooVKzR9+nRNnDhR0unzITk5WSNHjozZdzCfDz0dB0m64447NHbsWOXk5Gjfvn165JFHVFdXpzfeeMNwtbH6fYDwDyUlJdE/T548WQUFBRo7dqxef/113X333YYrQ39w2223Rf88adIkTZ48WePHj1dVVZVmz55tuLLEKC0t1f79+y+I90G/Tm/H4Z577on+edKkScrOztbs2bN18OBBjR8//nwvs0f9/q/g0tPTNXTo0LM+xdLS0qKsrCyjVfUPI0eO1JVXXqn6+nrrpZj58hzg/DjbuHHjlJ6ePijPj+XLl+utt97Se++9F/PrW7KysnTy5Em1trbG7D9Yz4fejkNPCgoKJKlfnQ/9PkDJycmaMmWKKisro491d3ersrJShYWFhiuzd+zYMR08eFDZ2dnWSzGTl5enrKysmPMjEolo165dF/z58emnn+ro0aOD6vxwzmn58uXasmWLduzYoby8vJjnp0yZoqSkpJjzoa6uTocOHRpU58O5jkNP9u7dK0n963yw/hTEN/Hqq6+6YDDoKioq3J/+9Cd3zz33uJEjR7rm5mbrpZ1XDz74oKuqqnINDQ3u97//vSsqKnLp6enuyJEj1ktLqLa2NvfRRx+5jz76yElyzz77rPvoo4/c3/72N+ecc0899ZQbOXKk27Ztm9u3b5+bN2+ey8vLc1988YXxyuPr645DW1ube+ihh1xNTY1raGhw7777rvv+97/vrrjiCnfixAnrpcfNsmXLXCgUclVVVa6pqSm6HT9+PLrPvffe68aMGeN27Njhdu/e7QoLC11hYaHhquPvXMehvr7e/exnP3O7d+92DQ0Nbtu2bW7cuHFu5syZxiuPNSAC5Jxza9eudWPGjHHJyclu2rRprra21npJ592iRYtcdna2S05Odt/97nfdokWLXH19vfWyEu69995zks7aFi9e7Jw7/VHsxx57zGVmZrpgMOhmz57t6urqbBedAF93HI4fP+7mzJnjRo0a5ZKSktzYsWPd0qVLB93/pPX0zy/Jbdy4MbrPF1984e677z73ne98x40YMcItWLDANTU12S06Ac51HA4dOuRmzpzp0tLSXDAYdJdffrn7yU9+4sLhsO3Cz8CvYwAAmOj37wEBAAYnAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMDE/wMbyQoYiK2gOwAAAABJRU5ErkJggg==",
|
205 |
+
"text/plain": [
|
206 |
+
"<Figure size 640x480 with 1 Axes>"
|
207 |
+
]
|
208 |
+
},
|
209 |
+
"metadata": {},
|
210 |
+
"output_type": "display_data"
|
211 |
+
}
|
212 |
+
],
|
213 |
+
"source": [
|
214 |
+
"plt.imshow(np.roll(xtrain[0], 5, axis = 1))"
|
215 |
+
]
|
216 |
+
},
|
217 |
+
{
|
218 |
+
"cell_type": "code",
|
219 |
+
"execution_count": 27,
|
220 |
+
"metadata": {},
|
221 |
+
"outputs": [],
|
222 |
+
"source": [
|
223 |
+
"xtrain_shifted = np.roll(xtrain, 5, axis = 2)"
|
224 |
+
]
|
225 |
+
},
|
226 |
+
{
|
227 |
+
"cell_type": "code",
|
228 |
+
"execution_count": 26,
|
229 |
+
"metadata": {},
|
230 |
+
"outputs": [
|
231 |
+
{
|
232 |
+
"data": {
|
233 |
+
"text/plain": [
|
234 |
+
"(60000, 28, 28, 1)"
|
235 |
+
]
|
236 |
+
},
|
237 |
+
"execution_count": 26,
|
238 |
+
"metadata": {},
|
239 |
+
"output_type": "execute_result"
|
240 |
+
}
|
241 |
+
],
|
242 |
+
"source": [
|
243 |
+
"xtrain_norm.shape"
|
244 |
+
]
|
245 |
+
},
|
246 |
+
{
|
247 |
+
"cell_type": "code",
|
248 |
+
"execution_count": 28,
|
249 |
+
"metadata": {},
|
250 |
+
"outputs": [],
|
251 |
+
"source": [
|
252 |
+
"xtrain_new = np.insert(xtrain, 1, xtrain_shifted[0], axis = 0)"
|
253 |
+
]
|
254 |
+
},
|
255 |
+
{
|
256 |
+
"cell_type": "code",
|
257 |
+
"execution_count": 35,
|
258 |
+
"metadata": {},
|
259 |
+
"outputs": [
|
260 |
+
{
|
261 |
+
"data": {
|
262 |
+
"text/plain": [
|
263 |
+
"<matplotlib.image.AxesImage at 0x213fed2cf10>"
|
264 |
+
]
|
265 |
+
},
|
266 |
+
"execution_count": 35,
|
267 |
+
"metadata": {},
|
268 |
+
"output_type": "execute_result"
|
269 |
+
},
|
270 |
+
{
|
271 |
+
"data": {
|
272 |
+
"image/png": "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1KFDh6yXZKqhoUHNzc0x50coFFJBQcEFeX5UVVUpIyNDV111lZYtW6ajR49aLymhwuGwJCktLU2StGfPHnV2dsacDxMmTNCYMWMG9flw5nH40ssvv6z09HRNnDhRZWVlOn78uMXyetXvbkZ6ps8++0xdXV3KzMyMeTwzM1N/+ctfjFZlo6CgQBUVFbrqqqvU1NSk1atX64YbbtD+/fuVkpJivTwTzc3NktTj+fHlcxeKuXPn6pZbblFeXp4OHjyon/70pyopKVFNTY2GDh1qvby46+7u1ooVKzR9+nRNnDhR0unzITk5WSNHjozZdzCfDz0dB0m64447NHbsWOXk5Gjfvn165JFHVFdXpzfeeMNwtbH6fYDwDyUlJdE/T548WQUFBRo7dqxef/113X333YYrQ39w2223Rf88adIkTZ48WePHj1dVVZVmz55tuLLEKC0t1f79+y+I90G/Tm/H4Z577on+edKkScrOztbs2bN18OBBjR8//nwvs0f9/q/g0tPTNXTo0LM+xdLS0qKsrCyjVfUPI0eO1JVXXqn6+nrrpZj58hzg/DjbuHHjlJ6ePijPj+XLl+utt97Se++9F/PrW7KysnTy5Em1trbG7D9Yz4fejkNPCgoKJKlfnQ/9PkDJycmaMmWKKisro491d3ersrJShYWFhiuzd+zYMR08eFDZ2dnWSzGTl5enrKysmPMjEolo165dF/z58emnn+ro0aOD6vxwzmn58uXasmWLduzYoby8vJjnp0yZoqSkpJjzoa6uTocOHRpU58O5jkNP9u7dK0n963yw/hTEN/Hqq6+6YDDoKioq3J/+9Cd3zz33uJEjR7rm5mbrpZ1XDz74oKuqqnINDQ3u97//vSsqKnLp6enuyJEj1ktLqLa2NvfRRx+5jz76yElyzz77rPvoo4/c3/72N+ecc0899ZQbOXKk27Ztm9u3b5+bN2+ey8vLc1988YXxyuPr645DW1ube+ihh1xNTY1raGhw7777rvv+97/vrrjiCnfixAnrpcfNsmXLXCgUclVVVa6pqSm6HT9+PLrPvffe68aMGeN27Njhdu/e7QoLC11hYaHhquPvXMehvr7e/exnP3O7d+92DQ0Nbtu2bW7cuHFu5syZxiuPNSAC5Jxza9eudWPGjHHJyclu2rRprra21npJ592iRYtcdna2S05Odt/97nfdokWLXH19vfWyEu69995zks7aFi9e7Jw7/VHsxx57zGVmZrpgMOhmz57t6urqbBedAF93HI4fP+7mzJnjRo0a5ZKSktzYsWPd0qVLB93/pPX0zy/Jbdy4MbrPF1984e677z73ne98x40YMcItWLDANTU12S06Ac51HA4dOuRmzpzp0tLSXDAYdJdffrn7yU9+4sLhsO3Cz8CvYwAAmOj37wEBAAYnAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMDE/wMbyQoYiK2gOwAAAABJRU5ErkJggg==",
|
273 |
+
"text/plain": [
|
274 |
+
"<Figure size 640x480 with 1 Axes>"
|
275 |
+
]
|
276 |
+
},
|
277 |
+
"metadata": {},
|
278 |
+
"output_type": "display_data"
|
279 |
+
}
|
280 |
+
],
|
281 |
+
"source": [
|
282 |
+
"plt.imshow(xtrain_new[1])"
|
283 |
+
]
|
284 |
+
},
|
285 |
+
{
|
286 |
+
"cell_type": "code",
|
287 |
+
"execution_count": 11,
|
288 |
+
"metadata": {},
|
289 |
+
"outputs": [],
|
290 |
+
"source": [
|
291 |
+
"xtrain_rshifted = np.roll(xtrain, 5, axis = 2)\n",
|
292 |
+
"xtrain_lshifted = np.roll(xtrain, -5, axis = 2)"
|
293 |
+
]
|
294 |
+
},
|
295 |
+
{
|
296 |
+
"cell_type": "code",
|
297 |
+
"execution_count": 13,
|
298 |
+
"metadata": {},
|
299 |
+
"outputs": [],
|
300 |
+
"source": [
|
301 |
+
"# xtrain_new = xtrain.copy()\n",
|
302 |
+
"# i = j = 0\n",
|
303 |
+
"# while i < len(xtrain):\n",
|
304 |
+
"# np.insert(xtrain_new, j + 1, xtrain_lshifted[i], axis = 0)\n",
|
305 |
+
"# np.insert(xtrain_new, j + 2, xtrain_rshifted[i], axis = 0)\n",
|
306 |
+
"# j += 3\n",
|
307 |
+
"# i += 1"
|
308 |
+
]
|
309 |
+
},
|
310 |
+
{
|
311 |
+
"cell_type": "code",
|
312 |
+
"execution_count": 18,
|
313 |
+
"metadata": {},
|
314 |
+
"outputs": [
|
315 |
+
{
|
316 |
+
"data": {
|
317 |
+
"text/plain": [
|
318 |
+
"array([ 1, 1, 2, ..., 59999, 60000, 60000])"
|
319 |
+
]
|
320 |
+
},
|
321 |
+
"execution_count": 18,
|
322 |
+
"metadata": {},
|
323 |
+
"output_type": "execute_result"
|
324 |
+
}
|
325 |
+
],
|
326 |
+
"source": [
|
327 |
+
"# index = np.array([[x + 1, x + 2] for x in range(0, len(xtrain), 3)])\n",
|
328 |
+
"# index = index.reshape(-1)\n",
|
329 |
+
"index = np.array([[x, x] for x in range(1, 60001)]).reshape(-1)\n",
|
330 |
+
"index"
|
331 |
+
]
|
332 |
+
},
|
333 |
+
{
|
334 |
+
"cell_type": "code",
|
335 |
+
"execution_count": 19,
|
336 |
+
"metadata": {},
|
337 |
+
"outputs": [],
|
338 |
+
"source": [
|
339 |
+
"values = np.array([[xtrain_lshifted[i], xtrain_rshifted[i]] for i in range(len(xtrain))]).reshape(-1, 28, 28)"
|
340 |
+
]
|
341 |
+
},
|
342 |
+
{
|
343 |
+
"cell_type": "code",
|
344 |
+
"execution_count": 20,
|
345 |
+
"metadata": {},
|
346 |
+
"outputs": [
|
347 |
+
{
|
348 |
+
"data": {
|
349 |
+
"text/plain": [
|
350 |
+
"(120000, 28, 28)"
|
351 |
+
]
|
352 |
+
},
|
353 |
+
"execution_count": 20,
|
354 |
+
"metadata": {},
|
355 |
+
"output_type": "execute_result"
|
356 |
+
}
|
357 |
+
],
|
358 |
+
"source": [
|
359 |
+
"values.shape"
|
360 |
+
]
|
361 |
+
},
|
362 |
+
{
|
363 |
+
"cell_type": "code",
|
364 |
+
"execution_count": 21,
|
365 |
+
"metadata": {},
|
366 |
+
"outputs": [],
|
367 |
+
"source": [
|
368 |
+
"values = values.reshape(-1, 28, 28)"
|
369 |
+
]
|
370 |
+
},
|
371 |
+
{
|
372 |
+
"cell_type": "code",
|
373 |
+
"execution_count": 46,
|
374 |
+
"metadata": {},
|
375 |
+
"outputs": [
|
376 |
+
{
|
377 |
+
"data": {
|
378 |
+
"text/plain": [
|
379 |
+
"<matplotlib.image.AxesImage at 0x20244fdc1c0>"
|
380 |
+
]
|
381 |
+
},
|
382 |
+
"execution_count": 46,
|
383 |
+
"metadata": {},
|
384 |
+
"output_type": "execute_result"
|
385 |
+
},
|
386 |
+
{
|
387 |
+
"data": {
|
388 |
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAcrUlEQVR4nO3df3BUZb7n8U8HkgY0aYwhv4aAAUVGgTiDELMqomQJmS0XkHXxx9wLrIsrBldgHK1Mqagzu5nBW46rE+XW3RH0ruCPugKr5TCrgYSrJniJsAylZgkTJSwkjNSQDkFCIM/+wdpOSwLzNB2+SXi/qk4V6T7fnMdjl28P3TkJOOecAAA4zxKsFwAAuDARIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYGKg9QK+q7OzU/v371dycrICgYD1cgAAnpxzam1tVXZ2thISur/O6XUB2r9/v3JycqyXAQA4R42NjRo+fHi3z/e6ACUnJ0uSbtCPNFCJxqsBAPg6oQ59oHcj/z3vTo8FqLy8XE8//bSampqUl5en559/XpMnTz7r3Dd/7TZQiRoYIEAA0Of8/zuMnu1tlB75EMLrr7+uZcuWafny5frkk0+Ul5enoqIiHTx4sCcOBwDog3okQM8884wWLlyoBQsW6KqrrtLKlSs1ZMgQvfTSSz1xOABAHxT3AB0/fly1tbUqLCz89iAJCSosLFR1dfVp+7e3tyscDkdtAID+L+4B+uqrr3Ty5EllZGREPZ6RkaGmpqbT9i8rK1MoFIpsfAIOAC4M5j+IWlpaqpaWlsjW2NhovSQAwHkQ90/BpaWlacCAAWpubo56vLm5WZmZmaftHwwGFQwG470MAEAvF/croKSkJE2cOFEVFRWRxzo7O1VRUaGCgoJ4Hw4A0Ef1yM8BLVu2TPPmzdO1116ryZMn69lnn1VbW5sWLFjQE4cDAPRBPRKguXPn6k9/+pMef/xxNTU16ZprrtHGjRtP+2ACAODCFXDOOetF/KVwOKxQKKSpmsmdEACgDzrhOlSpDWppaVFKSkq3+5l/Cg4AcGEiQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJgZaLwA4mxO3TPSeOXB/e0zH+t8FL3vP5FXP857JLk/ynhmw+RPvGaA34woIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADDBzUhxXnXe9APvmede+o33zOWJsb20O2OY2V6wynum7tqT3jM/vew67xmgN+MKCABgggABAEzEPUBPPPGEAoFA1DZ27Nh4HwYA0Mf1yHtAV199td5///1vDzKQt5oAANF6pAwDBw5UZmZmT3xrAEA/0SPvAe3evVvZ2dkaNWqU7r77bu3du7fbfdvb2xUOh6M2AED/F/cA5efna/Xq1dq4caNefPFFNTQ06MYbb1Rra2uX+5eVlSkUCkW2nJyceC8JANALxT1AxcXFuv322zVhwgQVFRXp3Xff1eHDh/XGG290uX9paalaWloiW2NjY7yXBADohXr80wFDhw7VmDFjVF9f3+XzwWBQwWCwp5cBAOhlevzngI4cOaI9e/YoKyurpw8FAOhD4h6ghx56SFVVVfriiy/00Ucfafbs2RowYIDuvPPOeB8KANCHxf2v4Pbt26c777xThw4d0rBhw3TDDTeopqZGw4YNi/ehAAB9WNwD9Nprr8X7W6KX6ph+rffMwy/8o/fMmMQk75nOmG4rKv2xo8N7pqXT/z3MH8Twtmd78STvmcGb/+B/IEmdx47FNAf44F5wAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJHv+FdDi/BqSkeM+0TRkb07GW/nqN98zNg4/EcKTz9/9Jq//8r7xnKl4o8J758InnvGfe++8rvWeu+h+LvWckadQj1THNAT64AgIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJ7obdz+x75XveM/8yqbwHVtI3PZX+L94zGy/2v4P2gi+me8+8fNn73jMpVx3yngHOF66AAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAAT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+OCDdov6K/T6K6Djx4+rtrZWhYWFkccSEhJUWFio6upqw5XZ2L17t7KzszVq1Cjdfffd2rt3r/WSTDU0NKipqSnq9REKhZSfn39Bvj4qKyuVnp6uK6+8UosWLdKhQ4esl9SjWlpaJEmpqamSpNraWnV0dES9HsaOHasRI0b069fDd8/DN1599VWlpaVp3LhxKi0t1dGjRy2W161edzPS7/rqq6908uRJZWRkRD2ekZGhzz//3GhVNvLz87V69WpdeeWVOnDggJ588kndeOON2rVrl5KTk62XZ6KpqUmSunx9fPPchWLGjBm67bbblJubqz179uhnP/uZiouLVV1drQEDBlgvL+46Ozu1ZMkSXX/99Ro3bpykU6+HpKQkDR06NGrf/vx66Oo8SNJdd92lkSNHKjs7Wzt37tQjjzyiuro6vfXWW4arjdbrA4RvFRcXR/48YcIE5efna+TIkXrjjTd0zz33GK4MvcEdd9wR+fP48eM1YcIEjR49WpWVlZo2bZrhynpGSUmJdu3adUG8D3om3Z2He++9N/Ln8ePHKysrS9OmTdOePXs0evTo873MLvX6v4JLS0vTgAEDTvsUS3NzszIzM41W1TsMHTpUY8aMUX19vfVSzHzzGuD1cbpRo0YpLS2tX74+Fi9erHfeeUebN2+O+vUtmZmZOn78uA4fPhy1f399PXR3HrqSn58vSb3q9dDrA5SUlKSJEyeqoqIi8lhnZ6cqKipUUFBguDJ7R44c0Z49e5SVlWW9FDO5ubnKzMyMen2Ew2Ft3br1gn997Nu3T4cOHepXrw/nnBYvXqx169Zp06ZNys3NjXp+4sSJSkxMjHo91NXVae/evf3q9XC289CVHTt2SFLvej1Yfwrir/Haa6+5YDDoVq9e7T799FN37733uqFDh7qmpibrpZ1XP/nJT1xlZaVraGhwH374oSssLHRpaWnu4MGD1kvrUa2trW779u1u+/btTpJ75pln3Pbt292XX37pnHPul7/8pRs6dKjbsGGD27lzp5s5c6bLzc11X3/9tfHK4+tM56G1tdU99NBDrrq62jU0NLj333/f/fCHP3RXXHGFO3bsmPXS42bRokUuFAq5yspKd+DAgch29OjRyD733XefGzFihNu0aZPbtm2bKygocAUFBYarjr+znYf6+nr31FNPuW3btrmGhga3YcMGN2rUKDdlyhTjlUfrEwFyzrnnn3/ejRgxwiUlJbnJkye7mpoa6yWdd3PnznVZWVkuKSnJfe9733Nz58519fX11svqcZs3b3aSTtvmzZvnnDv1UezHHnvMZWRkuGAw6KZNm+bq6upsF90DznQejh496qZPn+6GDRvmEhMT3ciRI93ChQv73f+kdfXPL8mtWrUqss/XX3/t7r//fnfJJZe4IUOGuNmzZ7sDBw7YLboHnO087N27102ZMsWlpqa6YDDoLr/8cvfTn/7UtbS02C78O/h1DAAAE73+PSAAQP9EgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJj4f/AC5c1cxGxsAAAAAElFTkSuQmCC",
|
389 |
+
"text/plain": [
|
390 |
+
"<Figure size 640x480 with 1 Axes>"
|
391 |
+
]
|
392 |
+
},
|
393 |
+
"metadata": {},
|
394 |
+
"output_type": "display_data"
|
395 |
+
}
|
396 |
+
],
|
397 |
+
"source": [
|
398 |
+
"plt.imshow(values[2])"
|
399 |
+
]
|
400 |
+
},
|
401 |
+
{
|
402 |
+
"cell_type": "code",
|
403 |
+
"execution_count": 47,
|
404 |
+
"metadata": {},
|
405 |
+
"outputs": [
|
406 |
+
{
|
407 |
+
"data": {
|
408 |
+
"text/plain": [
|
409 |
+
"(120000,)"
|
410 |
+
]
|
411 |
+
},
|
412 |
+
"execution_count": 47,
|
413 |
+
"metadata": {},
|
414 |
+
"output_type": "execute_result"
|
415 |
+
}
|
416 |
+
],
|
417 |
+
"source": [
|
418 |
+
"index.shape"
|
419 |
+
]
|
420 |
+
},
|
421 |
+
{
|
422 |
+
"cell_type": "code",
|
423 |
+
"execution_count": 22,
|
424 |
+
"metadata": {},
|
425 |
+
"outputs": [],
|
426 |
+
"source": [
|
427 |
+
"xtrain_new = xtrain.copy()\n",
|
428 |
+
"xtrain_new = np.insert(xtrain_new, index, values, axis = 0)"
|
429 |
+
]
|
430 |
+
},
|
431 |
+
{
|
432 |
+
"cell_type": "code",
|
433 |
+
"execution_count": 23,
|
434 |
+
"metadata": {},
|
435 |
+
"outputs": [
|
436 |
+
{
|
437 |
+
"data": {
|
438 |
+
"text/plain": [
|
439 |
+
"(180000, 28, 28)"
|
440 |
+
]
|
441 |
+
},
|
442 |
+
"execution_count": 23,
|
443 |
+
"metadata": {},
|
444 |
+
"output_type": "execute_result"
|
445 |
+
}
|
446 |
+
],
|
447 |
+
"source": [
|
448 |
+
"xtrain_new.shape"
|
449 |
+
]
|
450 |
+
},
|
451 |
+
{
|
452 |
+
"cell_type": "code",
|
453 |
+
"execution_count": 28,
|
454 |
+
"metadata": {},
|
455 |
+
"outputs": [
|
456 |
+
{
|
457 |
+
"data": {
|
458 |
+
"text/plain": [
|
459 |
+
"<matplotlib.image.AxesImage at 0x1fd89ed6310>"
|
460 |
+
]
|
461 |
+
},
|
462 |
+
"execution_count": 28,
|
463 |
+
"metadata": {},
|
464 |
+
"output_type": "execute_result"
|
465 |
+
},
|
466 |
+
{
|
467 |
+
"data": {
|
468 |
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAcrUlEQVR4nO3df3BUZb7n8U8HkgY0aYwhv4aAAUVGgTiDELMqomQJmS0XkHXxx9wLrIsrBldgHK1Mqagzu5nBW46rE+XW3RH0ruCPugKr5TCrgYSrJniJsAylZgkTJSwkjNSQDkFCIM/+wdpOSwLzNB2+SXi/qk4V6T7fnMdjl28P3TkJOOecAAA4zxKsFwAAuDARIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYGKg9QK+q7OzU/v371dycrICgYD1cgAAnpxzam1tVXZ2thISur/O6XUB2r9/v3JycqyXAQA4R42NjRo+fHi3z/e6ACUnJ0uSbtCPNFCJxqsBAPg6oQ59oHcj/z3vTo8FqLy8XE8//bSampqUl5en559/XpMnTz7r3Dd/7TZQiRoYIEAA0Of8/zuMnu1tlB75EMLrr7+uZcuWafny5frkk0+Ul5enoqIiHTx4sCcOBwDog3okQM8884wWLlyoBQsW6KqrrtLKlSs1ZMgQvfTSSz1xOABAHxT3AB0/fly1tbUqLCz89iAJCSosLFR1dfVp+7e3tyscDkdtAID+L+4B+uqrr3Ty5EllZGREPZ6RkaGmpqbT9i8rK1MoFIpsfAIOAC4M5j+IWlpaqpaWlsjW2NhovSQAwHkQ90/BpaWlacCAAWpubo56vLm5WZmZmaftHwwGFQwG470MAEAvF/croKSkJE2cOFEVFRWRxzo7O1VRUaGCgoJ4Hw4A0Ef1yM8BLVu2TPPmzdO1116ryZMn69lnn1VbW5sWLFjQE4cDAPRBPRKguXPn6k9/+pMef/xxNTU16ZprrtHGjRtP+2ACAODCFXDOOetF/KVwOKxQKKSpmsmdEACgDzrhOlSpDWppaVFKSkq3+5l/Cg4AcGEiQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJgZaLwA4mxO3TPSeOXB/e0zH+t8FL3vP5FXP857JLk/ynhmw+RPvGaA34woIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADDBzUhxXnXe9APvmede+o33zOWJsb20O2OY2V6wynum7tqT3jM/vew67xmgN+MKCABgggABAEzEPUBPPPGEAoFA1DZ27Nh4HwYA0Mf1yHtAV199td5///1vDzKQt5oAANF6pAwDBw5UZmZmT3xrAEA/0SPvAe3evVvZ2dkaNWqU7r77bu3du7fbfdvb2xUOh6M2AED/F/cA5efna/Xq1dq4caNefPFFNTQ06MYbb1Rra2uX+5eVlSkUCkW2nJyceC8JANALxT1AxcXFuv322zVhwgQVFRXp3Xff1eHDh/XGG290uX9paalaWloiW2NjY7yXBADohXr80wFDhw7VmDFjVF9f3+XzwWBQwWCwp5cBAOhlevzngI4cOaI9e/YoKyurpw8FAOhD4h6ghx56SFVVVfriiy/00Ucfafbs2RowYIDuvPPOeB8KANCHxf2v4Pbt26c777xThw4d0rBhw3TDDTeopqZGw4YNi/ehAAB9WNwD9Nprr8X7W6KX6ph+rffMwy/8o/fMmMQk75nOmG4rKv2xo8N7pqXT/z3MH8Twtmd78STvmcGb/+B/IEmdx47FNAf44F5wAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJHv+FdDi/BqSkeM+0TRkb07GW/nqN98zNg4/EcKTz9/9Jq//8r7xnKl4o8J758InnvGfe++8rvWeu+h+LvWckadQj1THNAT64AgIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJ7obdz+x75XveM/8yqbwHVtI3PZX+L94zGy/2v4P2gi+me8+8fNn73jMpVx3yngHOF66AAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAAT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+OCDdov6K/T6K6Djx4+rtrZWhYWFkccSEhJUWFio6upqw5XZ2L17t7KzszVq1Cjdfffd2rt3r/WSTDU0NKipqSnq9REKhZSfn39Bvj4qKyuVnp6uK6+8UosWLdKhQ4esl9SjWlpaJEmpqamSpNraWnV0dES9HsaOHasRI0b069fDd8/DN1599VWlpaVp3LhxKi0t1dGjRy2W161edzPS7/rqq6908uRJZWRkRD2ekZGhzz//3GhVNvLz87V69WpdeeWVOnDggJ588kndeOON2rVrl5KTk62XZ6KpqUmSunx9fPPchWLGjBm67bbblJubqz179uhnP/uZiouLVV1drQEDBlgvL+46Ozu1ZMkSXX/99Ro3bpykU6+HpKQkDR06NGrf/vx66Oo8SNJdd92lkSNHKjs7Wzt37tQjjzyiuro6vfXWW4arjdbrA4RvFRcXR/48YcIE5efna+TIkXrjjTd0zz33GK4MvcEdd9wR+fP48eM1YcIEjR49WpWVlZo2bZrhynpGSUmJdu3adUG8D3om3Z2He++9N/Ln8ePHKysrS9OmTdOePXs0evTo873MLvX6v4JLS0vTgAEDTvsUS3NzszIzM41W1TsMHTpUY8aMUX19vfVSzHzzGuD1cbpRo0YpLS2tX74+Fi9erHfeeUebN2+O+vUtmZmZOn78uA4fPhy1f399PXR3HrqSn58vSb3q9dDrA5SUlKSJEyeqoqIi8lhnZ6cqKipUUFBguDJ7R44c0Z49e5SVlWW9FDO5ubnKzMyMen2Ew2Ft3br1gn997Nu3T4cOHepXrw/nnBYvXqx169Zp06ZNys3NjXp+4sSJSkxMjHo91NXVae/evf3q9XC289CVHTt2SFLvej1Yfwrir/Haa6+5YDDoVq9e7T799FN37733uqFDh7qmpibrpZ1XP/nJT1xlZaVraGhwH374oSssLHRpaWnu4MGD1kvrUa2trW779u1u+/btTpJ75pln3Pbt292XX37pnHPul7/8pRs6dKjbsGGD27lzp5s5c6bLzc11X3/9tfHK4+tM56G1tdU99NBDrrq62jU0NLj333/f/fCHP3RXXHGFO3bsmPXS42bRokUuFAq5yspKd+DAgch29OjRyD733XefGzFihNu0aZPbtm2bKygocAUFBYarjr+znYf6+nr31FNPuW3btrmGhga3YcMGN2rUKDdlyhTjlUfrEwFyzrnnn3/ejRgxwiUlJbnJkye7mpoa6yWdd3PnznVZWVkuKSnJfe9733Nz58519fX11svqcZs3b3aSTtvmzZvnnDv1UezHHnvMZWRkuGAw6KZNm+bq6upsF90DznQejh496qZPn+6GDRvmEhMT3ciRI93ChQv73f+kdfXPL8mtWrUqss/XX3/t7r//fnfJJZe4IUOGuNmzZ7sDBw7YLboHnO087N27102ZMsWlpqa6YDDoLr/8cvfTn/7UtbS02C78O/h1DAAAE73+PSAAQP9EgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJj4f/AC5c1cxGxsAAAAAElFTkSuQmCC",
|
469 |
+
"text/plain": [
|
470 |
+
"<Figure size 640x480 with 1 Axes>"
|
471 |
+
]
|
472 |
+
},
|
473 |
+
"metadata": {},
|
474 |
+
"output_type": "display_data"
|
475 |
+
}
|
476 |
+
],
|
477 |
+
"source": [
|
478 |
+
"plt.imshow(xtrain_new[4])"
|
479 |
+
]
|
480 |
+
},
|
481 |
+
{
|
482 |
+
"cell_type": "code",
|
483 |
+
"execution_count": 30,
|
484 |
+
"metadata": {},
|
485 |
+
"outputs": [
|
486 |
+
{
|
487 |
+
"data": {
|
488 |
+
"text/plain": [
|
489 |
+
"array([ 1, 1, 2, ..., 59999, 60000, 60000])"
|
490 |
+
]
|
491 |
+
},
|
492 |
+
"execution_count": 30,
|
493 |
+
"metadata": {},
|
494 |
+
"output_type": "execute_result"
|
495 |
+
}
|
496 |
+
],
|
497 |
+
"source": [
|
498 |
+
"yindex = np.array([[x, x] for x in range(1, 60001)]).reshape(-1)\n",
|
499 |
+
"yindex"
|
500 |
+
]
|
501 |
+
},
|
502 |
+
{
|
503 |
+
"cell_type": "code",
|
504 |
+
"execution_count": 31,
|
505 |
+
"metadata": {},
|
506 |
+
"outputs": [
|
507 |
+
{
|
508 |
+
"data": {
|
509 |
+
"text/plain": [
|
510 |
+
"array([5, 5, 5, ..., 8, 8, 8], dtype=uint8)"
|
511 |
+
]
|
512 |
+
},
|
513 |
+
"execution_count": 31,
|
514 |
+
"metadata": {},
|
515 |
+
"output_type": "execute_result"
|
516 |
+
}
|
517 |
+
],
|
518 |
+
"source": [
|
519 |
+
"ytrain_new = np.array([[x, x, x] for x in ytrain]).reshape(-1)\n",
|
520 |
+
"ytrain_new"
|
521 |
+
]
|
522 |
+
},
|
523 |
+
{
|
524 |
+
"cell_type": "code",
|
525 |
+
"execution_count": 38,
|
526 |
+
"metadata": {},
|
527 |
+
"outputs": [],
|
528 |
+
"source": [
|
529 |
+
"xtrain_new_norm = xtrain_new/255"
|
530 |
+
]
|
531 |
+
},
|
532 |
+
{
|
533 |
+
"cell_type": "code",
|
534 |
+
"execution_count": 39,
|
535 |
+
"metadata": {},
|
536 |
+
"outputs": [
|
537 |
+
{
|
538 |
+
"data": {
|
539 |
+
"text/plain": [
|
540 |
+
"(<matplotlib.image.AxesImage at 0x1fd8a06e790>, 0)"
|
541 |
+
]
|
542 |
+
},
|
543 |
+
"execution_count": 39,
|
544 |
+
"metadata": {},
|
545 |
+
"output_type": "execute_result"
|
546 |
+
},
|
547 |
+
{
|
548 |
+
"data": {
|
549 |
+
"image/png": "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",
|
550 |
+
"text/plain": [
|
551 |
+
"<Figure size 640x480 with 1 Axes>"
|
552 |
+
]
|
553 |
+
},
|
554 |
+
"metadata": {},
|
555 |
+
"output_type": "display_data"
|
556 |
+
}
|
557 |
+
],
|
558 |
+
"source": [
|
559 |
+
"i = 5\n",
|
560 |
+
"plt.imshow(xtrain_new_norm[i]), ytrain_new[i]"
|
561 |
+
]
|
562 |
+
},
|
563 |
+
{
|
564 |
+
"cell_type": "code",
|
565 |
+
"execution_count": 43,
|
566 |
+
"metadata": {},
|
567 |
+
"outputs": [
|
568 |
+
{
|
569 |
+
"data": {
|
570 |
+
"text/plain": [
|
571 |
+
"(180000, 28, 28, 1)"
|
572 |
+
]
|
573 |
+
},
|
574 |
+
"execution_count": 43,
|
575 |
+
"metadata": {},
|
576 |
+
"output_type": "execute_result"
|
577 |
+
}
|
578 |
+
],
|
579 |
+
"source": [
|
580 |
+
"xtrain_new_norm = xtrain_new_norm.reshape(-1, 28, 28, 1)\n",
|
581 |
+
"xtrain_new_norm.shape"
|
582 |
+
]
|
583 |
+
},
|
584 |
+
{
|
585 |
+
"cell_type": "code",
|
586 |
+
"execution_count": 45,
|
587 |
+
"metadata": {},
|
588 |
+
"outputs": [
|
589 |
+
{
|
590 |
+
"name": "stdout",
|
591 |
+
"output_type": "stream",
|
592 |
+
"text": [
|
593 |
+
"Epoch 1/2\n",
|
594 |
+
"5625/5625 [==============================] - 220s 39ms/step - loss: 0.1053 - accuracy: 0.9673\n",
|
595 |
+
"Epoch 2/2\n",
|
596 |
+
"5625/5625 [==============================] - 215s 38ms/step - loss: 0.0378 - accuracy: 0.9882\n"
|
597 |
+
]
|
598 |
+
},
|
599 |
+
{
|
600 |
+
"data": {
|
601 |
+
"text/plain": [
|
602 |
+
"<keras.callbacks.History at 0x1fd8aa752b0>"
|
603 |
+
]
|
604 |
+
},
|
605 |
+
"execution_count": 45,
|
606 |
+
"metadata": {},
|
607 |
+
"output_type": "execute_result"
|
608 |
+
}
|
609 |
+
],
|
610 |
+
"source": [
|
611 |
+
"model1 = tf.keras.Sequential([\n",
|
612 |
+
" tf.keras.layers.Conv2D(64, (3, 3), activation = 'relu', input_shape = (28, 28, 1)),\n",
|
613 |
+
" tf.keras.layers.MaxPool2D(),\n",
|
614 |
+
"\n",
|
615 |
+
" tf.keras.layers.Conv2D(64, (3, 3), activation = 'relu'),\n",
|
616 |
+
" tf.keras.layers.MaxPool2D(),\n",
|
617 |
+
"\n",
|
618 |
+
" tf.keras.layers.Flatten(),\n",
|
619 |
+
" tf.keras.layers.Dense(128, activation = 'relu'),\n",
|
620 |
+
" tf.keras.layers.Dense(10, activation = 'softmax')\n",
|
621 |
+
"])\n",
|
622 |
+
"# callback = tf.keras.callbacks.TensorBoard(log_dir = f'/log/{}')\n",
|
623 |
+
"\n",
|
624 |
+
"model1.compile(\n",
|
625 |
+
" loss = tf.keras.losses.SparseCategoricalCrossentropy(),\n",
|
626 |
+
" optimizer = tf.keras.optimizers.Adam(),\n",
|
627 |
+
" metrics = ['accuracy']\n",
|
628 |
+
")\n",
|
629 |
+
"model1.fit(xtrain_new_norm, ytrain_new, epochs = 2)"
|
630 |
+
]
|
631 |
+
},
|
632 |
+
{
|
633 |
+
"cell_type": "code",
|
634 |
+
"execution_count": 46,
|
635 |
+
"metadata": {},
|
636 |
+
"outputs": [],
|
637 |
+
"source": [
|
638 |
+
"model1.save('CNN_extended_dataset.h5')"
|
639 |
+
]
|
640 |
+
},
|
641 |
+
{
|
642 |
+
"cell_type": "code",
|
643 |
+
"execution_count": null,
|
644 |
+
"metadata": {},
|
645 |
+
"outputs": [],
|
646 |
+
"source": []
|
647 |
+
}
|
648 |
+
],
|
649 |
+
"metadata": {
|
650 |
+
"kernelspec": {
|
651 |
+
"display_name": "Python 3.9.12 ('develop_env': venv)",
|
652 |
+
"language": "python",
|
653 |
+
"name": "python3"
|
654 |
+
},
|
655 |
+
"language_info": {
|
656 |
+
"codemirror_mode": {
|
657 |
+
"name": "ipython",
|
658 |
+
"version": 3
|
659 |
+
},
|
660 |
+
"file_extension": ".py",
|
661 |
+
"mimetype": "text/x-python",
|
662 |
+
"name": "python",
|
663 |
+
"nbconvert_exporter": "python",
|
664 |
+
"pygments_lexer": "ipython3",
|
665 |
+
"version": "3.9.12"
|
666 |
+
},
|
667 |
+
"orig_nbformat": 4,
|
668 |
+
"vscode": {
|
669 |
+
"interpreter": {
|
670 |
+
"hash": "0868791e5364f72686924a0f04d93b83318e4731675bc3a629afddd6df69b833"
|
671 |
+
}
|
672 |
+
}
|
673 |
+
},
|
674 |
+
"nbformat": 4,
|
675 |
+
"nbformat_minor": 2
|
676 |
+
}
|