indicate 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- indicate/__init__.py +3 -0
- indicate/data/model/hindi_to_english/english_tokens.json +1 -0
- indicate/data/model/hindi_to_english/hindi_tokens.json +1 -0
- indicate/data/model/hindi_to_english/saved_weights/decoder.weights.h5 +0 -0
- indicate/data/model/hindi_to_english/saved_weights/encoder.weights.h5 +0 -0
- indicate/decoder.py +62 -0
- indicate/encoder.py +24 -0
- indicate/hindi2english.py +138 -0
- indicate/logging.py +6 -0
- indicate/notebooks/Data_Preparation.ipynb +1 -0
- indicate/notebooks/Inference.ipynb +1 -0
- indicate/notebooks/Inference_latest.ipynb +2331 -0
- indicate/notebooks/Train.ipynb +1 -0
- indicate/notebooks/Train_latest.ipynb +1746 -0
- indicate/notebooks/Transliterate.ipynb +2501 -0
- indicate/notebooks/transliterate_cricket.ipynb +305 -0
- indicate/tests/__init__.py +12 -0
- indicate/tests/test_010_hindi_translate.py +20 -0
- indicate/transliterate.py +28 -0
- indicate/utils.py +86 -0
- indicate-0.2.0.dist-info/LICENSE +21 -0
- indicate-0.2.0.dist-info/METADATA +139 -0
- indicate-0.2.0.dist-info/RECORD +26 -0
- indicate-0.2.0.dist-info/WHEEL +6 -0
- indicate-0.2.0.dist-info/entry_points.txt +2 -0
- indicate-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,2501 @@
|
|
|
1
|
+
{
|
|
2
|
+
"nbformat": 4,
|
|
3
|
+
"nbformat_minor": 0,
|
|
4
|
+
"metadata": {
|
|
5
|
+
"colab": {
|
|
6
|
+
"name": "Transliterate_v2.ipynb",
|
|
7
|
+
"provenance": [],
|
|
8
|
+
"collapsed_sections": [],
|
|
9
|
+
"toc_visible": true,
|
|
10
|
+
"machine_shape": "hm"
|
|
11
|
+
},
|
|
12
|
+
"kernelspec": {
|
|
13
|
+
"name": "python3",
|
|
14
|
+
"display_name": "Python 3"
|
|
15
|
+
},
|
|
16
|
+
"language_info": {
|
|
17
|
+
"name": "python"
|
|
18
|
+
},
|
|
19
|
+
"accelerator": "GPU"
|
|
20
|
+
},
|
|
21
|
+
"cells": [
|
|
22
|
+
{
|
|
23
|
+
"cell_type": "code",
|
|
24
|
+
"metadata": {
|
|
25
|
+
"id": "1T6_tQRr5LsU"
|
|
26
|
+
},
|
|
27
|
+
"source": [
|
|
28
|
+
"import pandas as pd\n",
|
|
29
|
+
"import numpy as np\n",
|
|
30
|
+
"\n",
|
|
31
|
+
"from keras.models import Model, load_model\n",
|
|
32
|
+
"from keras.layers import Input, LSTM, Dense, Reshape\n",
|
|
33
|
+
"from keras.callbacks import EarlyStopping, ModelCheckpoint\n",
|
|
34
|
+
"from keras.layers.embeddings import Embedding\n",
|
|
35
|
+
"\n",
|
|
36
|
+
"import tensorflow as tf\n",
|
|
37
|
+
"import tensorflow.keras.backend as K\n",
|
|
38
|
+
"\n",
|
|
39
|
+
"import matplotlib.pyplot as plt"
|
|
40
|
+
],
|
|
41
|
+
"execution_count": 1,
|
|
42
|
+
"outputs": []
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"cell_type": "code",
|
|
46
|
+
"metadata": {
|
|
47
|
+
"colab": {
|
|
48
|
+
"base_uri": "https://localhost:8080/"
|
|
49
|
+
},
|
|
50
|
+
"id": "Cy-GTRyQdjjj",
|
|
51
|
+
"outputId": "6792acd3-baac-417f-e587-82cdd9304ec1"
|
|
52
|
+
},
|
|
53
|
+
"source": [
|
|
54
|
+
"%cd /content/drive/MyDrive/Colab/Transliterate/"
|
|
55
|
+
],
|
|
56
|
+
"execution_count": 2,
|
|
57
|
+
"outputs": [
|
|
58
|
+
{
|
|
59
|
+
"output_type": "stream",
|
|
60
|
+
"name": "stdout",
|
|
61
|
+
"text": [
|
|
62
|
+
"/content/drive/MyDrive/Colab/Transliterate\n"
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"cell_type": "code",
|
|
69
|
+
"metadata": {
|
|
70
|
+
"colab": {
|
|
71
|
+
"base_uri": "https://localhost:8080/"
|
|
72
|
+
},
|
|
73
|
+
"id": "9SQgkSs5drK0",
|
|
74
|
+
"outputId": "e62497b8-fdc4-415d-f31e-c2eeca1a0d95"
|
|
75
|
+
},
|
|
76
|
+
"source": [
|
|
77
|
+
"%ls"
|
|
78
|
+
],
|
|
79
|
+
"execution_count": 3,
|
|
80
|
+
"outputs": [
|
|
81
|
+
{
|
|
82
|
+
"output_type": "stream",
|
|
83
|
+
"name": "stdout",
|
|
84
|
+
"text": [
|
|
85
|
+
"affidavits.csv model.png\n",
|
|
86
|
+
"hi.translit.sampled.train.tsv model_v1.h5\n",
|
|
87
|
+
"model.h5 players_with_hindi_names.json\n",
|
|
88
|
+
"model_plot_dec.png s2s.h5\n"
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"cell_type": "markdown",
|
|
95
|
+
"metadata": {
|
|
96
|
+
"id": "h87l7bzjN4V0"
|
|
97
|
+
},
|
|
98
|
+
"source": [
|
|
99
|
+
"# Preprocessing Data"
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"cell_type": "markdown",
|
|
104
|
+
"metadata": {
|
|
105
|
+
"id": "Kl9QsQKYac2q"
|
|
106
|
+
},
|
|
107
|
+
"source": [
|
|
108
|
+
"## load affidavits dataset\n"
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"cell_type": "code",
|
|
113
|
+
"metadata": {
|
|
114
|
+
"id": "pAUukayNPVZY"
|
|
115
|
+
},
|
|
116
|
+
"source": [
|
|
117
|
+
"affidavits_df = pd.read_csv('affidavits.csv')"
|
|
118
|
+
],
|
|
119
|
+
"execution_count": 4,
|
|
120
|
+
"outputs": []
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"cell_type": "code",
|
|
124
|
+
"metadata": {
|
|
125
|
+
"colab": {
|
|
126
|
+
"base_uri": "https://localhost:8080/",
|
|
127
|
+
"height": 625
|
|
128
|
+
},
|
|
129
|
+
"id": "A0ZOV5i6Pe_k",
|
|
130
|
+
"outputId": "93c55c6f-2046-459a-8b2f-eeac1384d47e"
|
|
131
|
+
},
|
|
132
|
+
"source": [
|
|
133
|
+
"affidavits_df.head()"
|
|
134
|
+
],
|
|
135
|
+
"execution_count": 5,
|
|
136
|
+
"outputs": [
|
|
137
|
+
{
|
|
138
|
+
"output_type": "execute_result",
|
|
139
|
+
"data": {
|
|
140
|
+
"text/html": [
|
|
141
|
+
"<div>\n",
|
|
142
|
+
"<style scoped>\n",
|
|
143
|
+
" .dataframe tbody tr th:only-of-type {\n",
|
|
144
|
+
" vertical-align: middle;\n",
|
|
145
|
+
" }\n",
|
|
146
|
+
"\n",
|
|
147
|
+
" .dataframe tbody tr th {\n",
|
|
148
|
+
" vertical-align: top;\n",
|
|
149
|
+
" }\n",
|
|
150
|
+
"\n",
|
|
151
|
+
" .dataframe thead th {\n",
|
|
152
|
+
" text-align: right;\n",
|
|
153
|
+
" }\n",
|
|
154
|
+
"</style>\n",
|
|
155
|
+
"<table border=\"1\" class=\"dataframe\">\n",
|
|
156
|
+
" <thead>\n",
|
|
157
|
+
" <tr style=\"text-align: right;\">\n",
|
|
158
|
+
" <th></th>\n",
|
|
159
|
+
" <th>address</th>\n",
|
|
160
|
+
" <th>affidavit_filename_with_unique_id</th>\n",
|
|
161
|
+
" <th>age</th>\n",
|
|
162
|
+
" <th>application_uploaded</th>\n",
|
|
163
|
+
" <th>assembly_constituency</th>\n",
|
|
164
|
+
" <th>current_status</th>\n",
|
|
165
|
+
" <th>dropdown_value</th>\n",
|
|
166
|
+
" <th>fathers_or_husbands_name_english</th>\n",
|
|
167
|
+
" <th>fathers_or_husbands_name_hindi</th>\n",
|
|
168
|
+
" <th>name</th>\n",
|
|
169
|
+
" <th>name_english</th>\n",
|
|
170
|
+
" <th>name_hindi</th>\n",
|
|
171
|
+
" <th>party_name</th>\n",
|
|
172
|
+
" <th>photo_filename_with_unique_id</th>\n",
|
|
173
|
+
" <th>photo_url</th>\n",
|
|
174
|
+
" <th>state</th>\n",
|
|
175
|
+
" <th>unique_id</th>\n",
|
|
176
|
+
" <th>url</th>\n",
|
|
177
|
+
" </tr>\n",
|
|
178
|
+
" </thead>\n",
|
|
179
|
+
" <tbody>\n",
|
|
180
|
+
" <tr>\n",
|
|
181
|
+
" <th>0</th>\n",
|
|
182
|
+
" <td>O/5, BANKIM MUKHERJEE SARANI, DURGAPUR COLONY,...</td>\n",
|
|
183
|
+
" <td>NaN</td>\n",
|
|
184
|
+
" <td>57</td>\n",
|
|
185
|
+
" <td>7th April, 2021</td>\n",
|
|
186
|
+
" <td>Rashbehari</td>\n",
|
|
187
|
+
" <td>NaN</td>\n",
|
|
188
|
+
" <td>NaN</td>\n",
|
|
189
|
+
" <td>LATE SUBODH CHANDRA DAS</td>\n",
|
|
190
|
+
" <td>प्रयात सुबोध चन्द्र दास</td>\n",
|
|
191
|
+
" <td>SWAPAN DAS</td>\n",
|
|
192
|
+
" <td>SWAPAN DAS</td>\n",
|
|
193
|
+
" <td>स्वपन दास</td>\n",
|
|
194
|
+
" <td>Bahujan Mukti Party</td>\n",
|
|
195
|
+
" <td>NaN</td>\n",
|
|
196
|
+
" <td>NaN</td>\n",
|
|
197
|
+
" <td>West Bengal</td>\n",
|
|
198
|
+
" <td>1</td>\n",
|
|
199
|
+
" <td>NaN</td>\n",
|
|
200
|
+
" </tr>\n",
|
|
201
|
+
" <tr>\n",
|
|
202
|
+
" <th>1</th>\n",
|
|
203
|
+
" <td>F-301, PRANTIK PALLY, KOLKATA – 700042</td>\n",
|
|
204
|
+
" <td>NaN</td>\n",
|
|
205
|
+
" <td>41</td>\n",
|
|
206
|
+
" <td>7th April, 2021</td>\n",
|
|
207
|
+
" <td>Rashbehari</td>\n",
|
|
208
|
+
" <td>NaN</td>\n",
|
|
209
|
+
" <td>NaN</td>\n",
|
|
210
|
+
" <td>LATE PINAKI KUNDU</td>\n",
|
|
211
|
+
" <td>स्वर्गीय पिनाकि कुंडू</td>\n",
|
|
212
|
+
" <td>PREETAM KUNDU</td>\n",
|
|
213
|
+
" <td>PREETAM KUNDU</td>\n",
|
|
214
|
+
" <td>प्रीतम कुंडू</td>\n",
|
|
215
|
+
" <td>Independent</td>\n",
|
|
216
|
+
" <td>NaN</td>\n",
|
|
217
|
+
" <td>NaN</td>\n",
|
|
218
|
+
" <td>West Bengal</td>\n",
|
|
219
|
+
" <td>2</td>\n",
|
|
220
|
+
" <td>NaN</td>\n",
|
|
221
|
+
" </tr>\n",
|
|
222
|
+
" <tr>\n",
|
|
223
|
+
" <th>2</th>\n",
|
|
224
|
+
" <td>Vill- Debidaspur, P.O.- Kankuria, P.S.- Samser...</td>\n",
|
|
225
|
+
" <td>NaN</td>\n",
|
|
226
|
+
" <td>60</td>\n",
|
|
227
|
+
" <td>26th April, 2021</td>\n",
|
|
228
|
+
" <td>Samserganj</td>\n",
|
|
229
|
+
" <td>NaN</td>\n",
|
|
230
|
+
" <td>NaN</td>\n",
|
|
231
|
+
" <td>Late Nur Mohammad Biswas</td>\n",
|
|
232
|
+
" <td>मृत नूर महम्मद बिश्वास</td>\n",
|
|
233
|
+
" <td>Zaidur Rahaman</td>\n",
|
|
234
|
+
" <td>Zaidur Rahaman</td>\n",
|
|
235
|
+
" <td>जैदुर रहमान</td>\n",
|
|
236
|
+
" <td>Indian National Congress</td>\n",
|
|
237
|
+
" <td>NaN</td>\n",
|
|
238
|
+
" <td>NaN</td>\n",
|
|
239
|
+
" <td>West Bengal</td>\n",
|
|
240
|
+
" <td>3</td>\n",
|
|
241
|
+
" <td>NaN</td>\n",
|
|
242
|
+
" </tr>\n",
|
|
243
|
+
" <tr>\n",
|
|
244
|
+
" <th>3</th>\n",
|
|
245
|
+
" <td>F-301, PRANTIK PALLY, KOLKATA – 700042</td>\n",
|
|
246
|
+
" <td>NaN</td>\n",
|
|
247
|
+
" <td>41</td>\n",
|
|
248
|
+
" <td>7th April, 2021</td>\n",
|
|
249
|
+
" <td>Rashbehari</td>\n",
|
|
250
|
+
" <td>NaN</td>\n",
|
|
251
|
+
" <td>NaN</td>\n",
|
|
252
|
+
" <td>LATE PINAKI KUNDU</td>\n",
|
|
253
|
+
" <td>स्वर्गीय पिनाकि कुंडू</td>\n",
|
|
254
|
+
" <td>PREETAM KUNDU</td>\n",
|
|
255
|
+
" <td>PREETAM KUNDU</td>\n",
|
|
256
|
+
" <td>प्रीतम कुंडू</td>\n",
|
|
257
|
+
" <td>Independent</td>\n",
|
|
258
|
+
" <td>NaN</td>\n",
|
|
259
|
+
" <td>NaN</td>\n",
|
|
260
|
+
" <td>West Bengal</td>\n",
|
|
261
|
+
" <td>4</td>\n",
|
|
262
|
+
" <td>NaN</td>\n",
|
|
263
|
+
" </tr>\n",
|
|
264
|
+
" <tr>\n",
|
|
265
|
+
" <th>4</th>\n",
|
|
266
|
+
" <td>VILL-FULBARI, P.O-KAMLABARI, P.S-ENGLISH BAZAR...</td>\n",
|
|
267
|
+
" <td>NaN</td>\n",
|
|
268
|
+
" <td>42</td>\n",
|
|
269
|
+
" <td>6th April, 2021</td>\n",
|
|
270
|
+
" <td>Manikchak</td>\n",
|
|
271
|
+
" <td>NaN</td>\n",
|
|
272
|
+
" <td>NaN</td>\n",
|
|
273
|
+
" <td>LT. ALI MOHAMMAD</td>\n",
|
|
274
|
+
" <td>स्वर्गीय आली महममद</td>\n",
|
|
275
|
+
" <td>ALAM MOTTAKIN</td>\n",
|
|
276
|
+
" <td>ALAM MOTTAKIN</td>\n",
|
|
277
|
+
" <td>आलम मोत्ताकिन</td>\n",
|
|
278
|
+
" <td>Indian National Congress</td>\n",
|
|
279
|
+
" <td>NaN</td>\n",
|
|
280
|
+
" <td>NaN</td>\n",
|
|
281
|
+
" <td>West Bengal</td>\n",
|
|
282
|
+
" <td>5</td>\n",
|
|
283
|
+
" <td>NaN</td>\n",
|
|
284
|
+
" </tr>\n",
|
|
285
|
+
" </tbody>\n",
|
|
286
|
+
"</table>\n",
|
|
287
|
+
"</div>"
|
|
288
|
+
],
|
|
289
|
+
"text/plain": [
|
|
290
|
+
" address ... url\n",
|
|
291
|
+
"0 O/5, BANKIM MUKHERJEE SARANI, DURGAPUR COLONY,... ... NaN\n",
|
|
292
|
+
"1 F-301, PRANTIK PALLY, KOLKATA – 700042 ... NaN\n",
|
|
293
|
+
"2 Vill- Debidaspur, P.O.- Kankuria, P.S.- Samser... ... NaN\n",
|
|
294
|
+
"3 F-301, PRANTIK PALLY, KOLKATA – 700042 ... NaN\n",
|
|
295
|
+
"4 VILL-FULBARI, P.O-KAMLABARI, P.S-ENGLISH BAZAR... ... NaN\n",
|
|
296
|
+
"\n",
|
|
297
|
+
"[5 rows x 18 columns]"
|
|
298
|
+
]
|
|
299
|
+
},
|
|
300
|
+
"metadata": {},
|
|
301
|
+
"execution_count": 5
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"cell_type": "code",
|
|
307
|
+
"metadata": {
|
|
308
|
+
"id": "TnwMig87P1yV"
|
|
309
|
+
},
|
|
310
|
+
"source": [
|
|
311
|
+
"af_df = affidavits_df[['fathers_or_husbands_name_hindi', 'fathers_or_husbands_name_english', 'name_hindi', 'name_english']]"
|
|
312
|
+
],
|
|
313
|
+
"execution_count": 6,
|
|
314
|
+
"outputs": []
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"cell_type": "code",
|
|
318
|
+
"metadata": {
|
|
319
|
+
"id": "XYj3W5R3bdii"
|
|
320
|
+
},
|
|
321
|
+
"source": [
|
|
322
|
+
"# split and merge\n",
|
|
323
|
+
"input_target_df = pd.concat([\n",
|
|
324
|
+
" af_df[['fathers_or_husbands_name_hindi','fathers_or_husbands_name_english']].rename(columns={\"fathers_or_husbands_name_hindi\": \"hindi\", \"fathers_or_husbands_name_english\": \"english\"}), \n",
|
|
325
|
+
" af_df[['name_hindi','name_english']].rename(columns={\"name_hindi\": \"hindi\", \"name_english\": \"english\"})\n",
|
|
326
|
+
" ], ignore_index=True)"
|
|
327
|
+
],
|
|
328
|
+
"execution_count": 7,
|
|
329
|
+
"outputs": []
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"cell_type": "code",
|
|
333
|
+
"metadata": {
|
|
334
|
+
"colab": {
|
|
335
|
+
"base_uri": "https://localhost:8080/",
|
|
336
|
+
"height": 206
|
|
337
|
+
},
|
|
338
|
+
"id": "q6_4pn8Wbt-A",
|
|
339
|
+
"outputId": "27873e76-dbe5-4590-ccd5-d432b7035942"
|
|
340
|
+
},
|
|
341
|
+
"source": [
|
|
342
|
+
"input_target_df.head()"
|
|
343
|
+
],
|
|
344
|
+
"execution_count": 8,
|
|
345
|
+
"outputs": [
|
|
346
|
+
{
|
|
347
|
+
"output_type": "execute_result",
|
|
348
|
+
"data": {
|
|
349
|
+
"text/html": [
|
|
350
|
+
"<div>\n",
|
|
351
|
+
"<style scoped>\n",
|
|
352
|
+
" .dataframe tbody tr th:only-of-type {\n",
|
|
353
|
+
" vertical-align: middle;\n",
|
|
354
|
+
" }\n",
|
|
355
|
+
"\n",
|
|
356
|
+
" .dataframe tbody tr th {\n",
|
|
357
|
+
" vertical-align: top;\n",
|
|
358
|
+
" }\n",
|
|
359
|
+
"\n",
|
|
360
|
+
" .dataframe thead th {\n",
|
|
361
|
+
" text-align: right;\n",
|
|
362
|
+
" }\n",
|
|
363
|
+
"</style>\n",
|
|
364
|
+
"<table border=\"1\" class=\"dataframe\">\n",
|
|
365
|
+
" <thead>\n",
|
|
366
|
+
" <tr style=\"text-align: right;\">\n",
|
|
367
|
+
" <th></th>\n",
|
|
368
|
+
" <th>hindi</th>\n",
|
|
369
|
+
" <th>english</th>\n",
|
|
370
|
+
" </tr>\n",
|
|
371
|
+
" </thead>\n",
|
|
372
|
+
" <tbody>\n",
|
|
373
|
+
" <tr>\n",
|
|
374
|
+
" <th>0</th>\n",
|
|
375
|
+
" <td>प्रयात सुबोध चन्द्र दास</td>\n",
|
|
376
|
+
" <td>LATE SUBODH CHANDRA DAS</td>\n",
|
|
377
|
+
" </tr>\n",
|
|
378
|
+
" <tr>\n",
|
|
379
|
+
" <th>1</th>\n",
|
|
380
|
+
" <td>स्वर्गीय पिनाकि कुंडू</td>\n",
|
|
381
|
+
" <td>LATE PINAKI KUNDU</td>\n",
|
|
382
|
+
" </tr>\n",
|
|
383
|
+
" <tr>\n",
|
|
384
|
+
" <th>2</th>\n",
|
|
385
|
+
" <td>मृत नूर महम्मद बिश्वास</td>\n",
|
|
386
|
+
" <td>Late Nur Mohammad Biswas</td>\n",
|
|
387
|
+
" </tr>\n",
|
|
388
|
+
" <tr>\n",
|
|
389
|
+
" <th>3</th>\n",
|
|
390
|
+
" <td>स्वर्गीय पिनाकि कुंडू</td>\n",
|
|
391
|
+
" <td>LATE PINAKI KUNDU</td>\n",
|
|
392
|
+
" </tr>\n",
|
|
393
|
+
" <tr>\n",
|
|
394
|
+
" <th>4</th>\n",
|
|
395
|
+
" <td>स्वर्गीय आली महममद</td>\n",
|
|
396
|
+
" <td>LT. ALI MOHAMMAD</td>\n",
|
|
397
|
+
" </tr>\n",
|
|
398
|
+
" </tbody>\n",
|
|
399
|
+
"</table>\n",
|
|
400
|
+
"</div>"
|
|
401
|
+
],
|
|
402
|
+
"text/plain": [
|
|
403
|
+
" hindi english\n",
|
|
404
|
+
"0 प्रयात सुबोध चन्द्र दास LATE SUBODH CHANDRA DAS\n",
|
|
405
|
+
"1 स्वर्गीय पिनाकि कुंडू LATE PINAKI KUNDU\n",
|
|
406
|
+
"2 मृत नूर महम्मद बिश्वास Late Nur Mohammad Biswas\n",
|
|
407
|
+
"3 स्वर्गीय पिनाकि कुंडू LATE PINAKI KUNDU\n",
|
|
408
|
+
"4 स्वर्गीय आली महममद LT. ALI MOHAMMAD"
|
|
409
|
+
]
|
|
410
|
+
},
|
|
411
|
+
"metadata": {},
|
|
412
|
+
"execution_count": 8
|
|
413
|
+
}
|
|
414
|
+
]
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"cell_type": "markdown",
|
|
418
|
+
"metadata": {
|
|
419
|
+
"id": "sRjQYPAjajwg"
|
|
420
|
+
},
|
|
421
|
+
"source": [
|
|
422
|
+
"## load cricket dataset"
|
|
423
|
+
]
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"cell_type": "code",
|
|
427
|
+
"metadata": {
|
|
428
|
+
"id": "QIlUaSeP54a0"
|
|
429
|
+
},
|
|
430
|
+
"source": [
|
|
431
|
+
"cricket_df = pd.read_json('players_with_hindi_names.json')"
|
|
432
|
+
],
|
|
433
|
+
"execution_count": 9,
|
|
434
|
+
"outputs": []
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"cell_type": "code",
|
|
438
|
+
"metadata": {
|
|
439
|
+
"colab": {
|
|
440
|
+
"base_uri": "https://localhost:8080/",
|
|
441
|
+
"height": 206
|
|
442
|
+
},
|
|
443
|
+
"id": "-8AW_DdX5934",
|
|
444
|
+
"outputId": "1a6e609a-9479-4194-b3e0-88cb5e4e65d4"
|
|
445
|
+
},
|
|
446
|
+
"source": [
|
|
447
|
+
"cricket_df.head()"
|
|
448
|
+
],
|
|
449
|
+
"execution_count": 10,
|
|
450
|
+
"outputs": [
|
|
451
|
+
{
|
|
452
|
+
"output_type": "execute_result",
|
|
453
|
+
"data": {
|
|
454
|
+
"text/html": [
|
|
455
|
+
"<div>\n",
|
|
456
|
+
"<style scoped>\n",
|
|
457
|
+
" .dataframe tbody tr th:only-of-type {\n",
|
|
458
|
+
" vertical-align: middle;\n",
|
|
459
|
+
" }\n",
|
|
460
|
+
"\n",
|
|
461
|
+
" .dataframe tbody tr th {\n",
|
|
462
|
+
" vertical-align: top;\n",
|
|
463
|
+
" }\n",
|
|
464
|
+
"\n",
|
|
465
|
+
" .dataframe thead th {\n",
|
|
466
|
+
" text-align: right;\n",
|
|
467
|
+
" }\n",
|
|
468
|
+
"</style>\n",
|
|
469
|
+
"<table border=\"1\" class=\"dataframe\">\n",
|
|
470
|
+
" <thead>\n",
|
|
471
|
+
" <tr style=\"text-align: right;\">\n",
|
|
472
|
+
" <th></th>\n",
|
|
473
|
+
" <th>id</th>\n",
|
|
474
|
+
" <th>hindi_name</th>\n",
|
|
475
|
+
" <th>hindi_long_name</th>\n",
|
|
476
|
+
" <th>english_name</th>\n",
|
|
477
|
+
" <th>gender</th>\n",
|
|
478
|
+
" <th>date_of_birth</th>\n",
|
|
479
|
+
" <th>country_id</th>\n",
|
|
480
|
+
" <th>slug</th>\n",
|
|
481
|
+
" </tr>\n",
|
|
482
|
+
" </thead>\n",
|
|
483
|
+
" <tbody>\n",
|
|
484
|
+
" <tr>\n",
|
|
485
|
+
" <th>0</th>\n",
|
|
486
|
+
" <td>90143</td>\n",
|
|
487
|
+
" <td>आर गुरबाज़</td>\n",
|
|
488
|
+
" <td>रहमानउल्लाह गुरबाज़</td>\n",
|
|
489
|
+
" <td>Rahmanullah Gurbaz</td>\n",
|
|
490
|
+
" <td>M</td>\n",
|
|
491
|
+
" <td>{'year': 2001, 'month': 11, 'date': 28}</td>\n",
|
|
492
|
+
" <td>40</td>\n",
|
|
493
|
+
" <td>rahmanullah-gurbaz</td>\n",
|
|
494
|
+
" </tr>\n",
|
|
495
|
+
" <tr>\n",
|
|
496
|
+
" <th>1</th>\n",
|
|
497
|
+
" <td>54018</td>\n",
|
|
498
|
+
" <td>एम रिज़वान</td>\n",
|
|
499
|
+
" <td>मोहम्मद रिज़वान</td>\n",
|
|
500
|
+
" <td>Mohammad Rizwan</td>\n",
|
|
501
|
+
" <td>M</td>\n",
|
|
502
|
+
" <td>{'year': 1992, 'month': 6, 'date': 1}</td>\n",
|
|
503
|
+
" <td>7</td>\n",
|
|
504
|
+
" <td>mohammad-rizwan</td>\n",
|
|
505
|
+
" </tr>\n",
|
|
506
|
+
" <tr>\n",
|
|
507
|
+
" <th>2</th>\n",
|
|
508
|
+
" <td>47686</td>\n",
|
|
509
|
+
" <td>एस मक़सूद</td>\n",
|
|
510
|
+
" <td>सोहेब मक़सूद</td>\n",
|
|
511
|
+
" <td>Sohaib Maqsood</td>\n",
|
|
512
|
+
" <td>M</td>\n",
|
|
513
|
+
" <td>{'year': 1987, 'month': 4, 'date': 15}</td>\n",
|
|
514
|
+
" <td>7</td>\n",
|
|
515
|
+
" <td>sohaib-maqsood</td>\n",
|
|
516
|
+
" </tr>\n",
|
|
517
|
+
" <tr>\n",
|
|
518
|
+
" <th>3</th>\n",
|
|
519
|
+
" <td>53649</td>\n",
|
|
520
|
+
" <td>आर आर रुसो</td>\n",
|
|
521
|
+
" <td>राइली रुसो</td>\n",
|
|
522
|
+
" <td>Rossouw, RR</td>\n",
|
|
523
|
+
" <td>M</td>\n",
|
|
524
|
+
" <td>{'year': 1989, 'month': 10, 'date': 9}</td>\n",
|
|
525
|
+
" <td>3</td>\n",
|
|
526
|
+
" <td>rilee-rossouw</td>\n",
|
|
527
|
+
" </tr>\n",
|
|
528
|
+
" <tr>\n",
|
|
529
|
+
" <th>4</th>\n",
|
|
530
|
+
" <td>72393</td>\n",
|
|
531
|
+
" <td>एस हेटमायर</td>\n",
|
|
532
|
+
" <td>शिमरॉन हेटमायर</td>\n",
|
|
533
|
+
" <td>Hetmyer, SO</td>\n",
|
|
534
|
+
" <td>M</td>\n",
|
|
535
|
+
" <td>{'year': 1996, 'month': 12, 'date': 26}</td>\n",
|
|
536
|
+
" <td>4</td>\n",
|
|
537
|
+
" <td>shimron-hetmyer</td>\n",
|
|
538
|
+
" </tr>\n",
|
|
539
|
+
" </tbody>\n",
|
|
540
|
+
"</table>\n",
|
|
541
|
+
"</div>"
|
|
542
|
+
],
|
|
543
|
+
"text/plain": [
|
|
544
|
+
" id hindi_name ... country_id slug\n",
|
|
545
|
+
"0 90143 आर गुरबाज़ ... 40 rahmanullah-gurbaz\n",
|
|
546
|
+
"1 54018 एम रिज़वान ... 7 mohammad-rizwan\n",
|
|
547
|
+
"2 47686 एस मक़सूद ... 7 sohaib-maqsood\n",
|
|
548
|
+
"3 53649 आर आर रुसो ... 3 rilee-rossouw\n",
|
|
549
|
+
"4 72393 एस हेटमायर ... 4 shimron-hetmyer\n",
|
|
550
|
+
"\n",
|
|
551
|
+
"[5 rows x 8 columns]"
|
|
552
|
+
]
|
|
553
|
+
},
|
|
554
|
+
"metadata": {},
|
|
555
|
+
"execution_count": 10
|
|
556
|
+
}
|
|
557
|
+
]
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
"cell_type": "code",
|
|
561
|
+
"metadata": {
|
|
562
|
+
"id": "Zyc762NtcILn"
|
|
563
|
+
},
|
|
564
|
+
"source": [
|
|
565
|
+
"input_target_df = pd.concat([\n",
|
|
566
|
+
" input_target_df, \n",
|
|
567
|
+
" cricket_df[['hindi_long_name', 'english_name']].rename(columns={\"hindi_long_name\": \"hindi\", \"english_name\": \"english\"}) \n",
|
|
568
|
+
" ], ignore_index=True)"
|
|
569
|
+
],
|
|
570
|
+
"execution_count": 11,
|
|
571
|
+
"outputs": []
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"cell_type": "markdown",
|
|
575
|
+
"metadata": {
|
|
576
|
+
"id": "iDtsnXBQa7m2"
|
|
577
|
+
},
|
|
578
|
+
"source": [
|
|
579
|
+
"## load Dakshina Dataset"
|
|
580
|
+
]
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
"cell_type": "code",
|
|
584
|
+
"metadata": {
|
|
585
|
+
"id": "YWUoa66ea0xR"
|
|
586
|
+
},
|
|
587
|
+
"source": [
|
|
588
|
+
"\n",
|
|
589
|
+
"dakshina_df = pd.read_csv('hi.translit.sampled.train.tsv', sep='\\t', names=[\"hindi\", \"english\", \"freq\"])"
|
|
590
|
+
],
|
|
591
|
+
"execution_count": 12,
|
|
592
|
+
"outputs": []
|
|
593
|
+
},
|
|
594
|
+
{
|
|
595
|
+
"cell_type": "code",
|
|
596
|
+
"metadata": {
|
|
597
|
+
"colab": {
|
|
598
|
+
"base_uri": "https://localhost:8080/",
|
|
599
|
+
"height": 206
|
|
600
|
+
},
|
|
601
|
+
"id": "LvzPQO06bONy",
|
|
602
|
+
"outputId": "6cfbd065-1cf0-41ea-943a-ff8da9afe559"
|
|
603
|
+
},
|
|
604
|
+
"source": [
|
|
605
|
+
"dakshina_df.head()"
|
|
606
|
+
],
|
|
607
|
+
"execution_count": 13,
|
|
608
|
+
"outputs": [
|
|
609
|
+
{
|
|
610
|
+
"output_type": "execute_result",
|
|
611
|
+
"data": {
|
|
612
|
+
"text/html": [
|
|
613
|
+
"<div>\n",
|
|
614
|
+
"<style scoped>\n",
|
|
615
|
+
" .dataframe tbody tr th:only-of-type {\n",
|
|
616
|
+
" vertical-align: middle;\n",
|
|
617
|
+
" }\n",
|
|
618
|
+
"\n",
|
|
619
|
+
" .dataframe tbody tr th {\n",
|
|
620
|
+
" vertical-align: top;\n",
|
|
621
|
+
" }\n",
|
|
622
|
+
"\n",
|
|
623
|
+
" .dataframe thead th {\n",
|
|
624
|
+
" text-align: right;\n",
|
|
625
|
+
" }\n",
|
|
626
|
+
"</style>\n",
|
|
627
|
+
"<table border=\"1\" class=\"dataframe\">\n",
|
|
628
|
+
" <thead>\n",
|
|
629
|
+
" <tr style=\"text-align: right;\">\n",
|
|
630
|
+
" <th></th>\n",
|
|
631
|
+
" <th>hindi</th>\n",
|
|
632
|
+
" <th>english</th>\n",
|
|
633
|
+
" <th>freq</th>\n",
|
|
634
|
+
" </tr>\n",
|
|
635
|
+
" </thead>\n",
|
|
636
|
+
" <tbody>\n",
|
|
637
|
+
" <tr>\n",
|
|
638
|
+
" <th>0</th>\n",
|
|
639
|
+
" <td>अं</td>\n",
|
|
640
|
+
" <td>an</td>\n",
|
|
641
|
+
" <td>3</td>\n",
|
|
642
|
+
" </tr>\n",
|
|
643
|
+
" <tr>\n",
|
|
644
|
+
" <th>1</th>\n",
|
|
645
|
+
" <td>अंकगणित</td>\n",
|
|
646
|
+
" <td>ankganit</td>\n",
|
|
647
|
+
" <td>3</td>\n",
|
|
648
|
+
" </tr>\n",
|
|
649
|
+
" <tr>\n",
|
|
650
|
+
" <th>2</th>\n",
|
|
651
|
+
" <td>अंकल</td>\n",
|
|
652
|
+
" <td>uncle</td>\n",
|
|
653
|
+
" <td>4</td>\n",
|
|
654
|
+
" </tr>\n",
|
|
655
|
+
" <tr>\n",
|
|
656
|
+
" <th>3</th>\n",
|
|
657
|
+
" <td>अंकुर</td>\n",
|
|
658
|
+
" <td>ankur</td>\n",
|
|
659
|
+
" <td>4</td>\n",
|
|
660
|
+
" </tr>\n",
|
|
661
|
+
" <tr>\n",
|
|
662
|
+
" <th>4</th>\n",
|
|
663
|
+
" <td>अंकुरण</td>\n",
|
|
664
|
+
" <td>ankuran</td>\n",
|
|
665
|
+
" <td>3</td>\n",
|
|
666
|
+
" </tr>\n",
|
|
667
|
+
" </tbody>\n",
|
|
668
|
+
"</table>\n",
|
|
669
|
+
"</div>"
|
|
670
|
+
],
|
|
671
|
+
"text/plain": [
|
|
672
|
+
" hindi english freq\n",
|
|
673
|
+
"0 अं an 3\n",
|
|
674
|
+
"1 अंकगणित ankganit 3\n",
|
|
675
|
+
"2 अंकल uncle 4\n",
|
|
676
|
+
"3 अंकुर ankur 4\n",
|
|
677
|
+
"4 अंकुरण ankuran 3"
|
|
678
|
+
]
|
|
679
|
+
},
|
|
680
|
+
"metadata": {},
|
|
681
|
+
"execution_count": 13
|
|
682
|
+
}
|
|
683
|
+
]
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"cell_type": "code",
|
|
687
|
+
"metadata": {
|
|
688
|
+
"id": "X8aCM1ehbqWb"
|
|
689
|
+
},
|
|
690
|
+
"source": [
|
|
691
|
+
"input_target_df = pd.concat([\n",
|
|
692
|
+
" input_target_df, \n",
|
|
693
|
+
" dakshina_df[['hindi', 'english']]\n",
|
|
694
|
+
" ], ignore_index=True)"
|
|
695
|
+
],
|
|
696
|
+
"execution_count": 14,
|
|
697
|
+
"outputs": []
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"cell_type": "code",
|
|
701
|
+
"metadata": {
|
|
702
|
+
"colab": {
|
|
703
|
+
"base_uri": "https://localhost:8080/",
|
|
704
|
+
"height": 206
|
|
705
|
+
},
|
|
706
|
+
"id": "c_rJ_vXPcpGE",
|
|
707
|
+
"outputId": "77e9dea9-0b39-4c38-833d-b77fa42350e0"
|
|
708
|
+
},
|
|
709
|
+
"source": [
|
|
710
|
+
"input_target_df.head()"
|
|
711
|
+
],
|
|
712
|
+
"execution_count": 15,
|
|
713
|
+
"outputs": [
|
|
714
|
+
{
|
|
715
|
+
"output_type": "execute_result",
|
|
716
|
+
"data": {
|
|
717
|
+
"text/html": [
|
|
718
|
+
"<div>\n",
|
|
719
|
+
"<style scoped>\n",
|
|
720
|
+
" .dataframe tbody tr th:only-of-type {\n",
|
|
721
|
+
" vertical-align: middle;\n",
|
|
722
|
+
" }\n",
|
|
723
|
+
"\n",
|
|
724
|
+
" .dataframe tbody tr th {\n",
|
|
725
|
+
" vertical-align: top;\n",
|
|
726
|
+
" }\n",
|
|
727
|
+
"\n",
|
|
728
|
+
" .dataframe thead th {\n",
|
|
729
|
+
" text-align: right;\n",
|
|
730
|
+
" }\n",
|
|
731
|
+
"</style>\n",
|
|
732
|
+
"<table border=\"1\" class=\"dataframe\">\n",
|
|
733
|
+
" <thead>\n",
|
|
734
|
+
" <tr style=\"text-align: right;\">\n",
|
|
735
|
+
" <th></th>\n",
|
|
736
|
+
" <th>hindi</th>\n",
|
|
737
|
+
" <th>english</th>\n",
|
|
738
|
+
" </tr>\n",
|
|
739
|
+
" </thead>\n",
|
|
740
|
+
" <tbody>\n",
|
|
741
|
+
" <tr>\n",
|
|
742
|
+
" <th>0</th>\n",
|
|
743
|
+
" <td>प्रयात सुबोध चन्द्र दास</td>\n",
|
|
744
|
+
" <td>LATE SUBODH CHANDRA DAS</td>\n",
|
|
745
|
+
" </tr>\n",
|
|
746
|
+
" <tr>\n",
|
|
747
|
+
" <th>1</th>\n",
|
|
748
|
+
" <td>स्वर्गीय पिनाकि कुंडू</td>\n",
|
|
749
|
+
" <td>LATE PINAKI KUNDU</td>\n",
|
|
750
|
+
" </tr>\n",
|
|
751
|
+
" <tr>\n",
|
|
752
|
+
" <th>2</th>\n",
|
|
753
|
+
" <td>मृत नूर महम्मद बिश्वास</td>\n",
|
|
754
|
+
" <td>Late Nur Mohammad Biswas</td>\n",
|
|
755
|
+
" </tr>\n",
|
|
756
|
+
" <tr>\n",
|
|
757
|
+
" <th>3</th>\n",
|
|
758
|
+
" <td>स्वर्गीय पिनाकि कुंडू</td>\n",
|
|
759
|
+
" <td>LATE PINAKI KUNDU</td>\n",
|
|
760
|
+
" </tr>\n",
|
|
761
|
+
" <tr>\n",
|
|
762
|
+
" <th>4</th>\n",
|
|
763
|
+
" <td>स्वर्गीय आली महममद</td>\n",
|
|
764
|
+
" <td>LT. ALI MOHAMMAD</td>\n",
|
|
765
|
+
" </tr>\n",
|
|
766
|
+
" </tbody>\n",
|
|
767
|
+
"</table>\n",
|
|
768
|
+
"</div>"
|
|
769
|
+
],
|
|
770
|
+
"text/plain": [
|
|
771
|
+
" hindi english\n",
|
|
772
|
+
"0 प्रयात सुबोध चन्द्र दास LATE SUBODH CHANDRA DAS\n",
|
|
773
|
+
"1 स्वर्गीय पिनाकि कुंडू LATE PINAKI KUNDU\n",
|
|
774
|
+
"2 मृत नूर महम्मद बिश्वास Late Nur Mohammad Biswas\n",
|
|
775
|
+
"3 स्वर्गीय पिनाकि कुंडू LATE PINAKI KUNDU\n",
|
|
776
|
+
"4 स्वर्गीय आली महममद LT. ALI MOHAMMAD"
|
|
777
|
+
]
|
|
778
|
+
},
|
|
779
|
+
"metadata": {},
|
|
780
|
+
"execution_count": 15
|
|
781
|
+
}
|
|
782
|
+
]
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
"cell_type": "code",
|
|
786
|
+
"metadata": {
|
|
787
|
+
"colab": {
|
|
788
|
+
"base_uri": "https://localhost:8080/"
|
|
789
|
+
},
|
|
790
|
+
"id": "oxaiXS4yc90U",
|
|
791
|
+
"outputId": "1880929e-35dd-4a3b-84a0-266ae17b200a"
|
|
792
|
+
},
|
|
793
|
+
"source": [
|
|
794
|
+
"input_target_df.info()"
|
|
795
|
+
],
|
|
796
|
+
"execution_count": 16,
|
|
797
|
+
"outputs": [
|
|
798
|
+
{
|
|
799
|
+
"output_type": "stream",
|
|
800
|
+
"name": "stdout",
|
|
801
|
+
"text": [
|
|
802
|
+
"<class 'pandas.core.frame.DataFrame'>\n",
|
|
803
|
+
"RangeIndex: 77908 entries, 0 to 77907\n",
|
|
804
|
+
"Data columns (total 2 columns):\n",
|
|
805
|
+
" # Column Non-Null Count Dtype \n",
|
|
806
|
+
"--- ------ -------------- ----- \n",
|
|
807
|
+
" 0 hindi 72727 non-null object\n",
|
|
808
|
+
" 1 english 77906 non-null object\n",
|
|
809
|
+
"dtypes: object(2)\n",
|
|
810
|
+
"memory usage: 1.2+ MB\n"
|
|
811
|
+
]
|
|
812
|
+
}
|
|
813
|
+
]
|
|
814
|
+
},
|
|
815
|
+
{
|
|
816
|
+
"cell_type": "code",
|
|
817
|
+
"metadata": {
|
|
818
|
+
"id": "7WVfnG3RSDz0"
|
|
819
|
+
},
|
|
820
|
+
"source": [
|
|
821
|
+
"input_target_df = input_target_df.dropna()"
|
|
822
|
+
],
|
|
823
|
+
"execution_count": 17,
|
|
824
|
+
"outputs": []
|
|
825
|
+
},
|
|
826
|
+
{
|
|
827
|
+
"cell_type": "code",
|
|
828
|
+
"metadata": {
|
|
829
|
+
"colab": {
|
|
830
|
+
"base_uri": "https://localhost:8080/"
|
|
831
|
+
},
|
|
832
|
+
"id": "rs0mMz4ndDCG",
|
|
833
|
+
"outputId": "9813a65e-00ce-4e35-b55d-cb8bd9a20dd2"
|
|
834
|
+
},
|
|
835
|
+
"source": [
|
|
836
|
+
"input_target_df.info()"
|
|
837
|
+
],
|
|
838
|
+
"execution_count": 18,
|
|
839
|
+
"outputs": [
|
|
840
|
+
{
|
|
841
|
+
"output_type": "stream",
|
|
842
|
+
"name": "stdout",
|
|
843
|
+
"text": [
|
|
844
|
+
"<class 'pandas.core.frame.DataFrame'>\n",
|
|
845
|
+
"Int64Index: 72725 entries, 0 to 77907\n",
|
|
846
|
+
"Data columns (total 2 columns):\n",
|
|
847
|
+
" # Column Non-Null Count Dtype \n",
|
|
848
|
+
"--- ------ -------------- ----- \n",
|
|
849
|
+
" 0 hindi 72725 non-null object\n",
|
|
850
|
+
" 1 english 72725 non-null object\n",
|
|
851
|
+
"dtypes: object(2)\n",
|
|
852
|
+
"memory usage: 1.7+ MB\n"
|
|
853
|
+
]
|
|
854
|
+
}
|
|
855
|
+
]
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
"cell_type": "code",
|
|
859
|
+
"metadata": {
|
|
860
|
+
"id": "7gujOMDzS1O_"
|
|
861
|
+
},
|
|
862
|
+
"source": [
|
|
863
|
+
"# strip and make lower case\n",
|
|
864
|
+
"input_target_df['hindi'] = input_target_df['hindi'].str.strip() # hindi has no caps\n",
|
|
865
|
+
"input_target_df['english'] = input_target_df['english'].str.strip().str.lower()"
|
|
866
|
+
],
|
|
867
|
+
"execution_count": 19,
|
|
868
|
+
"outputs": []
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
"cell_type": "code",
|
|
872
|
+
"metadata": {
|
|
873
|
+
"colab": {
|
|
874
|
+
"base_uri": "https://localhost:8080/",
|
|
875
|
+
"height": 206
|
|
876
|
+
},
|
|
877
|
+
"id": "aJDDFPvhTv3e",
|
|
878
|
+
"outputId": "0ff1d8d2-6a9c-4a41-b60b-2c665f628210"
|
|
879
|
+
},
|
|
880
|
+
"source": [
|
|
881
|
+
"input_target_df.head()"
|
|
882
|
+
],
|
|
883
|
+
"execution_count": 20,
|
|
884
|
+
"outputs": [
|
|
885
|
+
{
|
|
886
|
+
"output_type": "execute_result",
|
|
887
|
+
"data": {
|
|
888
|
+
"text/html": [
|
|
889
|
+
"<div>\n",
|
|
890
|
+
"<style scoped>\n",
|
|
891
|
+
" .dataframe tbody tr th:only-of-type {\n",
|
|
892
|
+
" vertical-align: middle;\n",
|
|
893
|
+
" }\n",
|
|
894
|
+
"\n",
|
|
895
|
+
" .dataframe tbody tr th {\n",
|
|
896
|
+
" vertical-align: top;\n",
|
|
897
|
+
" }\n",
|
|
898
|
+
"\n",
|
|
899
|
+
" .dataframe thead th {\n",
|
|
900
|
+
" text-align: right;\n",
|
|
901
|
+
" }\n",
|
|
902
|
+
"</style>\n",
|
|
903
|
+
"<table border=\"1\" class=\"dataframe\">\n",
|
|
904
|
+
" <thead>\n",
|
|
905
|
+
" <tr style=\"text-align: right;\">\n",
|
|
906
|
+
" <th></th>\n",
|
|
907
|
+
" <th>hindi</th>\n",
|
|
908
|
+
" <th>english</th>\n",
|
|
909
|
+
" </tr>\n",
|
|
910
|
+
" </thead>\n",
|
|
911
|
+
" <tbody>\n",
|
|
912
|
+
" <tr>\n",
|
|
913
|
+
" <th>0</th>\n",
|
|
914
|
+
" <td>प्रयात सुबोध चन्द्र दास</td>\n",
|
|
915
|
+
" <td>late subodh chandra das</td>\n",
|
|
916
|
+
" </tr>\n",
|
|
917
|
+
" <tr>\n",
|
|
918
|
+
" <th>1</th>\n",
|
|
919
|
+
" <td>स्वर्गीय पिनाकि कुंडू</td>\n",
|
|
920
|
+
" <td>late pinaki kundu</td>\n",
|
|
921
|
+
" </tr>\n",
|
|
922
|
+
" <tr>\n",
|
|
923
|
+
" <th>2</th>\n",
|
|
924
|
+
" <td>मृत नूर महम्मद बिश्वास</td>\n",
|
|
925
|
+
" <td>late nur mohammad biswas</td>\n",
|
|
926
|
+
" </tr>\n",
|
|
927
|
+
" <tr>\n",
|
|
928
|
+
" <th>3</th>\n",
|
|
929
|
+
" <td>स्वर्गीय पिनाकि कुंडू</td>\n",
|
|
930
|
+
" <td>late pinaki kundu</td>\n",
|
|
931
|
+
" </tr>\n",
|
|
932
|
+
" <tr>\n",
|
|
933
|
+
" <th>4</th>\n",
|
|
934
|
+
" <td>स्वर्गीय आली महममद</td>\n",
|
|
935
|
+
" <td>lt. ali mohammad</td>\n",
|
|
936
|
+
" </tr>\n",
|
|
937
|
+
" </tbody>\n",
|
|
938
|
+
"</table>\n",
|
|
939
|
+
"</div>"
|
|
940
|
+
],
|
|
941
|
+
"text/plain": [
|
|
942
|
+
" hindi english\n",
|
|
943
|
+
"0 प्रयात सुबोध चन्द्र दास late subodh chandra das\n",
|
|
944
|
+
"1 स्वर्गीय पिनाकि कुंडू late pinaki kundu\n",
|
|
945
|
+
"2 मृत नूर महम्मद बिश्वास late nur mohammad biswas\n",
|
|
946
|
+
"3 स्वर्गीय पिनाकि कुंडू late pinaki kundu\n",
|
|
947
|
+
"4 स्वर्गीय आली महममद lt. ali mohammad"
|
|
948
|
+
]
|
|
949
|
+
},
|
|
950
|
+
"metadata": {},
|
|
951
|
+
"execution_count": 20
|
|
952
|
+
}
|
|
953
|
+
]
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
"cell_type": "code",
|
|
957
|
+
"metadata": {
|
|
958
|
+
"id": "tUmbiLe8T7rk"
|
|
959
|
+
},
|
|
960
|
+
"source": [
|
|
961
|
+
"# Strip out any abbreviated names\n",
|
|
962
|
+
"input_target_df = input_target_df[~input_target_df['english'].str.contains('\\.')]\n",
|
|
963
|
+
"input_target_df = input_target_df[~input_target_df['english'].str.contains(',')]"
|
|
964
|
+
],
|
|
965
|
+
"execution_count": 21,
|
|
966
|
+
"outputs": []
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
"cell_type": "code",
|
|
970
|
+
"metadata": {
|
|
971
|
+
"colab": {
|
|
972
|
+
"base_uri": "https://localhost:8080/"
|
|
973
|
+
},
|
|
974
|
+
"id": "GRkMX8QcVbKg",
|
|
975
|
+
"outputId": "2fbc4648-4a74-4b59-af8c-2340eed53be6"
|
|
976
|
+
},
|
|
977
|
+
"source": [
|
|
978
|
+
"input_target_df.info()"
|
|
979
|
+
],
|
|
980
|
+
"execution_count": 22,
|
|
981
|
+
"outputs": [
|
|
982
|
+
{
|
|
983
|
+
"output_type": "stream",
|
|
984
|
+
"name": "stdout",
|
|
985
|
+
"text": [
|
|
986
|
+
"<class 'pandas.core.frame.DataFrame'>\n",
|
|
987
|
+
"Int64Index: 63899 entries, 0 to 77907\n",
|
|
988
|
+
"Data columns (total 2 columns):\n",
|
|
989
|
+
" # Column Non-Null Count Dtype \n",
|
|
990
|
+
"--- ------ -------------- ----- \n",
|
|
991
|
+
" 0 hindi 63899 non-null object\n",
|
|
992
|
+
" 1 english 63899 non-null object\n",
|
|
993
|
+
"dtypes: object(2)\n",
|
|
994
|
+
"memory usage: 1.5+ MB\n"
|
|
995
|
+
]
|
|
996
|
+
}
|
|
997
|
+
]
|
|
998
|
+
},
|
|
999
|
+
{
|
|
1000
|
+
"cell_type": "code",
|
|
1001
|
+
"metadata": {
|
|
1002
|
+
"id": "dyzG08H1Z3Ch"
|
|
1003
|
+
},
|
|
1004
|
+
"source": [
|
|
1005
|
+
"# drop duplicates\n",
|
|
1006
|
+
"input_target_df = input_target_df.drop_duplicates()"
|
|
1007
|
+
],
|
|
1008
|
+
"execution_count": 23,
|
|
1009
|
+
"outputs": []
|
|
1010
|
+
},
|
|
1011
|
+
{
|
|
1012
|
+
"cell_type": "code",
|
|
1013
|
+
"metadata": {
|
|
1014
|
+
"colab": {
|
|
1015
|
+
"base_uri": "https://localhost:8080/"
|
|
1016
|
+
},
|
|
1017
|
+
"id": "52H8_u4maYM2",
|
|
1018
|
+
"outputId": "26cb23ca-2ee1-4a68-bb94-3b14d415f652"
|
|
1019
|
+
},
|
|
1020
|
+
"source": [
|
|
1021
|
+
"input_target_df.info()"
|
|
1022
|
+
],
|
|
1023
|
+
"execution_count": 24,
|
|
1024
|
+
"outputs": [
|
|
1025
|
+
{
|
|
1026
|
+
"output_type": "stream",
|
|
1027
|
+
"name": "stdout",
|
|
1028
|
+
"text": [
|
|
1029
|
+
"<class 'pandas.core.frame.DataFrame'>\n",
|
|
1030
|
+
"Int64Index: 55821 entries, 0 to 77907\n",
|
|
1031
|
+
"Data columns (total 2 columns):\n",
|
|
1032
|
+
" # Column Non-Null Count Dtype \n",
|
|
1033
|
+
"--- ------ -------------- ----- \n",
|
|
1034
|
+
" 0 hindi 55821 non-null object\n",
|
|
1035
|
+
" 1 english 55821 non-null object\n",
|
|
1036
|
+
"dtypes: object(2)\n",
|
|
1037
|
+
"memory usage: 1.3+ MB\n"
|
|
1038
|
+
]
|
|
1039
|
+
}
|
|
1040
|
+
]
|
|
1041
|
+
},
|
|
1042
|
+
{
|
|
1043
|
+
"cell_type": "code",
|
|
1044
|
+
"metadata": {
|
|
1045
|
+
"id": "DnQHxhVye07D"
|
|
1046
|
+
},
|
|
1047
|
+
"source": [
|
|
1048
|
+
"# Remove if target has non-english \n",
|
|
1049
|
+
"def isEnglish(s):\n",
|
|
1050
|
+
" try:\n",
|
|
1051
|
+
" s.encode(encoding='utf-8').decode('ascii')\n",
|
|
1052
|
+
" except UnicodeDecodeError:\n",
|
|
1053
|
+
" return False\n",
|
|
1054
|
+
" else:\n",
|
|
1055
|
+
" return True\n",
|
|
1056
|
+
"\n",
|
|
1057
|
+
"input_target_df = input_target_df[input_target_df['english'].apply(isEnglish)]"
|
|
1058
|
+
],
|
|
1059
|
+
"execution_count": 25,
|
|
1060
|
+
"outputs": []
|
|
1061
|
+
},
|
|
1062
|
+
{
|
|
1063
|
+
"cell_type": "code",
|
|
1064
|
+
"metadata": {
|
|
1065
|
+
"colab": {
|
|
1066
|
+
"base_uri": "https://localhost:8080/"
|
|
1067
|
+
},
|
|
1068
|
+
"id": "sEGVeRyrgJJc",
|
|
1069
|
+
"outputId": "1c0bad41-3570-4283-cc3a-33041f35cab1"
|
|
1070
|
+
},
|
|
1071
|
+
"source": [
|
|
1072
|
+
"input_target_df.info()"
|
|
1073
|
+
],
|
|
1074
|
+
"execution_count": 26,
|
|
1075
|
+
"outputs": [
|
|
1076
|
+
{
|
|
1077
|
+
"output_type": "stream",
|
|
1078
|
+
"name": "stdout",
|
|
1079
|
+
"text": [
|
|
1080
|
+
"<class 'pandas.core.frame.DataFrame'>\n",
|
|
1081
|
+
"Int64Index: 55768 entries, 0 to 77907\n",
|
|
1082
|
+
"Data columns (total 2 columns):\n",
|
|
1083
|
+
" # Column Non-Null Count Dtype \n",
|
|
1084
|
+
"--- ------ -------------- ----- \n",
|
|
1085
|
+
" 0 hindi 55768 non-null object\n",
|
|
1086
|
+
" 1 english 55768 non-null object\n",
|
|
1087
|
+
"dtypes: object(2)\n",
|
|
1088
|
+
"memory usage: 1.3+ MB\n"
|
|
1089
|
+
]
|
|
1090
|
+
}
|
|
1091
|
+
]
|
|
1092
|
+
},
|
|
1093
|
+
{
|
|
1094
|
+
"cell_type": "code",
|
|
1095
|
+
"metadata": {
|
|
1096
|
+
"id": "URH4OE1pq4rM"
|
|
1097
|
+
},
|
|
1098
|
+
"source": [
|
|
1099
|
+
"# append start and end of sequence for target\n",
|
|
1100
|
+
"sos = '^'\n",
|
|
1101
|
+
"eos = '$'\n",
|
|
1102
|
+
"\n",
|
|
1103
|
+
"input_target_df['english'] = sos + input_target_df['english'].astype(str) + eos"
|
|
1104
|
+
],
|
|
1105
|
+
"execution_count": 27,
|
|
1106
|
+
"outputs": []
|
|
1107
|
+
},
|
|
1108
|
+
{
|
|
1109
|
+
"cell_type": "code",
|
|
1110
|
+
"metadata": {
|
|
1111
|
+
"id": "AahQxw3J5_ax"
|
|
1112
|
+
},
|
|
1113
|
+
"source": [
|
|
1114
|
+
"input_words = input_target_df['hindi'].tolist()\n",
|
|
1115
|
+
"target_words = input_target_df['english'].tolist()"
|
|
1116
|
+
],
|
|
1117
|
+
"execution_count": 28,
|
|
1118
|
+
"outputs": []
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
"cell_type": "code",
|
|
1122
|
+
"metadata": {
|
|
1123
|
+
"colab": {
|
|
1124
|
+
"base_uri": "https://localhost:8080/"
|
|
1125
|
+
},
|
|
1126
|
+
"id": "lpsCJ3kv7LkA",
|
|
1127
|
+
"outputId": "bace413b-6505-4c4e-f4be-ec97964560fa"
|
|
1128
|
+
},
|
|
1129
|
+
"source": [
|
|
1130
|
+
"print(input_words[0])\n",
|
|
1131
|
+
"print(target_words[0])"
|
|
1132
|
+
],
|
|
1133
|
+
"execution_count": 29,
|
|
1134
|
+
"outputs": [
|
|
1135
|
+
{
|
|
1136
|
+
"output_type": "stream",
|
|
1137
|
+
"name": "stdout",
|
|
1138
|
+
"text": [
|
|
1139
|
+
"प्रयात सुबोध चन्द्र दास\n",
|
|
1140
|
+
"^late subodh chandra das$\n"
|
|
1141
|
+
]
|
|
1142
|
+
}
|
|
1143
|
+
]
|
|
1144
|
+
},
|
|
1145
|
+
{
|
|
1146
|
+
"cell_type": "code",
|
|
1147
|
+
"metadata": {
|
|
1148
|
+
"colab": {
|
|
1149
|
+
"base_uri": "https://localhost:8080/"
|
|
1150
|
+
},
|
|
1151
|
+
"id": "X3pGuZOyQ1D2",
|
|
1152
|
+
"outputId": "eee96d86-fcfa-4cb2-f588-b8a60ca16037"
|
|
1153
|
+
},
|
|
1154
|
+
"source": [
|
|
1155
|
+
"print(f\"Total number of input words {len(input_words)}\")\n",
|
|
1156
|
+
"print(f\"Total number of target words {len(target_words)}\")"
|
|
1157
|
+
],
|
|
1158
|
+
"execution_count": 30,
|
|
1159
|
+
"outputs": [
|
|
1160
|
+
{
|
|
1161
|
+
"output_type": "stream",
|
|
1162
|
+
"name": "stdout",
|
|
1163
|
+
"text": [
|
|
1164
|
+
"Total number of input words 55768\n",
|
|
1165
|
+
"Total number of target words 55768\n"
|
|
1166
|
+
]
|
|
1167
|
+
}
|
|
1168
|
+
]
|
|
1169
|
+
},
|
|
1170
|
+
{
|
|
1171
|
+
"cell_type": "code",
|
|
1172
|
+
"metadata": {
|
|
1173
|
+
"id": "U5Trw_fmOLi7"
|
|
1174
|
+
},
|
|
1175
|
+
"source": [
|
|
1176
|
+
"def build_vocab(input_words, target_words):\n",
|
|
1177
|
+
" input_vocab = set()\n",
|
|
1178
|
+
" target_vocab = set()\n",
|
|
1179
|
+
" for input_word, target_word in zip(input_words, target_words):\n",
|
|
1180
|
+
" input_vocab.update(set(input_word))\n",
|
|
1181
|
+
" target_vocab.update(set(target_word))\n",
|
|
1182
|
+
" return input_vocab, target_vocab"
|
|
1183
|
+
],
|
|
1184
|
+
"execution_count": 31,
|
|
1185
|
+
"outputs": []
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
"cell_type": "code",
|
|
1189
|
+
"metadata": {
|
|
1190
|
+
"id": "RlgD8jM0OsHG"
|
|
1191
|
+
},
|
|
1192
|
+
"source": [
|
|
1193
|
+
"input_vocab, target_vocab = build_vocab(input_words, target_words)"
|
|
1194
|
+
],
|
|
1195
|
+
"execution_count": 32,
|
|
1196
|
+
"outputs": []
|
|
1197
|
+
},
|
|
1198
|
+
{
|
|
1199
|
+
"cell_type": "code",
|
|
1200
|
+
"metadata": {
|
|
1201
|
+
"colab": {
|
|
1202
|
+
"base_uri": "https://localhost:8080/"
|
|
1203
|
+
},
|
|
1204
|
+
"id": "W_wQMLvrOyu_",
|
|
1205
|
+
"outputId": "e75e47d5-a7f4-45d6-80bf-e3212b137f53"
|
|
1206
|
+
},
|
|
1207
|
+
"source": [
|
|
1208
|
+
"print(f\"Total hindi characters {len(input_vocab)}\")\n",
|
|
1209
|
+
"print(f\"Total english characters {len(target_vocab)}\")"
|
|
1210
|
+
],
|
|
1211
|
+
"execution_count": 33,
|
|
1212
|
+
"outputs": [
|
|
1213
|
+
{
|
|
1214
|
+
"output_type": "stream",
|
|
1215
|
+
"name": "stdout",
|
|
1216
|
+
"text": [
|
|
1217
|
+
"Total hindi characters 186\n",
|
|
1218
|
+
"Total english characters 35\n"
|
|
1219
|
+
]
|
|
1220
|
+
}
|
|
1221
|
+
]
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
"cell_type": "code",
|
|
1225
|
+
"metadata": {
|
|
1226
|
+
"id": "ztVnKKGsYlFK"
|
|
1227
|
+
},
|
|
1228
|
+
"source": [
|
|
1229
|
+
"input_vocab = sorted(list(input_vocab))\n",
|
|
1230
|
+
"target_vocab = sorted(list(target_vocab))"
|
|
1231
|
+
],
|
|
1232
|
+
"execution_count": 34,
|
|
1233
|
+
"outputs": []
|
|
1234
|
+
},
|
|
1235
|
+
{
|
|
1236
|
+
"cell_type": "code",
|
|
1237
|
+
"metadata": {
|
|
1238
|
+
"id": "fbJSDwkvXvQp"
|
|
1239
|
+
},
|
|
1240
|
+
"source": [
|
|
1241
|
+
"input_token_index = dict([(char, i) for i, char in enumerate(input_vocab)])\n",
|
|
1242
|
+
"target_token_index = dict([(char, i) for i, char in enumerate(target_vocab)])"
|
|
1243
|
+
],
|
|
1244
|
+
"execution_count": 35,
|
|
1245
|
+
"outputs": []
|
|
1246
|
+
},
|
|
1247
|
+
{
|
|
1248
|
+
"cell_type": "code",
|
|
1249
|
+
"metadata": {
|
|
1250
|
+
"id": "-dxT9ms4YG1y"
|
|
1251
|
+
},
|
|
1252
|
+
"source": [
|
|
1253
|
+
"num_encoder_tokens = len(input_vocab)\n",
|
|
1254
|
+
"num_decoder_tokens = len(target_vocab)"
|
|
1255
|
+
],
|
|
1256
|
+
"execution_count": 36,
|
|
1257
|
+
"outputs": []
|
|
1258
|
+
},
|
|
1259
|
+
{
|
|
1260
|
+
"cell_type": "code",
|
|
1261
|
+
"metadata": {
|
|
1262
|
+
"id": "DZguL8LRY8Bl"
|
|
1263
|
+
},
|
|
1264
|
+
"source": [
|
|
1265
|
+
"max_encoder_seq_length = max([len(txt) for txt in input_words])\n",
|
|
1266
|
+
"max_decoder_seq_length = max([len(txt) for txt in target_words])"
|
|
1267
|
+
],
|
|
1268
|
+
"execution_count": 37,
|
|
1269
|
+
"outputs": []
|
|
1270
|
+
},
|
|
1271
|
+
{
|
|
1272
|
+
"cell_type": "code",
|
|
1273
|
+
"metadata": {
|
|
1274
|
+
"colab": {
|
|
1275
|
+
"base_uri": "https://localhost:8080/"
|
|
1276
|
+
},
|
|
1277
|
+
"id": "HZLsjCHrZGuP",
|
|
1278
|
+
"outputId": "05b74353-43dc-4b42-90cb-49244cd84f3c"
|
|
1279
|
+
},
|
|
1280
|
+
"source": [
|
|
1281
|
+
"print('Number of samples:', len(input_words))\n",
|
|
1282
|
+
"print('Number of unique input tokens:', num_encoder_tokens)\n",
|
|
1283
|
+
"print('Number of unique output tokens:', num_decoder_tokens)\n",
|
|
1284
|
+
"print('Max sequence length for inputs:', max_encoder_seq_length)\n",
|
|
1285
|
+
"print('Max sequence length for outputs:', max_decoder_seq_length)"
|
|
1286
|
+
],
|
|
1287
|
+
"execution_count": 38,
|
|
1288
|
+
"outputs": [
|
|
1289
|
+
{
|
|
1290
|
+
"output_type": "stream",
|
|
1291
|
+
"name": "stdout",
|
|
1292
|
+
"text": [
|
|
1293
|
+
"Number of samples: 55768\n",
|
|
1294
|
+
"Number of unique input tokens: 186\n",
|
|
1295
|
+
"Number of unique output tokens: 35\n",
|
|
1296
|
+
"Max sequence length for inputs: 47\n",
|
|
1297
|
+
"Max sequence length for outputs: 49\n"
|
|
1298
|
+
]
|
|
1299
|
+
}
|
|
1300
|
+
]
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
"cell_type": "code",
|
|
1304
|
+
"metadata": {
|
|
1305
|
+
"id": "nbXBdUGOZO3_"
|
|
1306
|
+
},
|
|
1307
|
+
"source": [
|
|
1308
|
+
"encoder_input_data = np.zeros((len(input_words), max_encoder_seq_length, num_encoder_tokens), dtype='float32')\n",
|
|
1309
|
+
"decoder_input_data = np.zeros((len(input_words), max_decoder_seq_length, num_decoder_tokens), dtype='float32')\n",
|
|
1310
|
+
"decoder_target_data = np.zeros( (len(input_words), max_decoder_seq_length, num_decoder_tokens), dtype='float32')"
|
|
1311
|
+
],
|
|
1312
|
+
"execution_count": 39,
|
|
1313
|
+
"outputs": []
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"cell_type": "code",
|
|
1317
|
+
"metadata": {
|
|
1318
|
+
"colab": {
|
|
1319
|
+
"base_uri": "https://localhost:8080/"
|
|
1320
|
+
},
|
|
1321
|
+
"id": "HO9DgOJOZgpe",
|
|
1322
|
+
"outputId": "4f0769a0-7cc7-4977-d9db-013c6073dede"
|
|
1323
|
+
},
|
|
1324
|
+
"source": [
|
|
1325
|
+
"print(f\"encoder input shape {encoder_input_data.shape}\")\n",
|
|
1326
|
+
"print(f\"decoder input shape {decoder_input_data.shape}\")\n",
|
|
1327
|
+
"print(f\"decoder target shape {decoder_target_data.shape}\")"
|
|
1328
|
+
],
|
|
1329
|
+
"execution_count": 40,
|
|
1330
|
+
"outputs": [
|
|
1331
|
+
{
|
|
1332
|
+
"output_type": "stream",
|
|
1333
|
+
"name": "stdout",
|
|
1334
|
+
"text": [
|
|
1335
|
+
"encoder input shape (55768, 47, 186)\n",
|
|
1336
|
+
"decoder input shape (55768, 49, 35)\n",
|
|
1337
|
+
"decoder target shape (55768, 49, 35)\n"
|
|
1338
|
+
]
|
|
1339
|
+
}
|
|
1340
|
+
]
|
|
1341
|
+
},
|
|
1342
|
+
{
|
|
1343
|
+
"cell_type": "code",
|
|
1344
|
+
"metadata": {
|
|
1345
|
+
"id": "9KGNey6fZ05q"
|
|
1346
|
+
},
|
|
1347
|
+
"source": [
|
|
1348
|
+
"for i, (input_text, target_text) in enumerate(zip(input_words, target_words)):\n",
|
|
1349
|
+
" for t, char in enumerate(input_text):\n",
|
|
1350
|
+
" encoder_input_data[i, t, input_token_index[char]] = 1.0\n",
|
|
1351
|
+
" # for the rest of sentence, mark it as space\n",
|
|
1352
|
+
" #encoder_input_data[i, t + 1 :, input_token_index[\" \"]] = 1.0\n",
|
|
1353
|
+
"\n",
|
|
1354
|
+
" for t, char in enumerate(target_text):\n",
|
|
1355
|
+
" # decoder_target_data is ahead of decoder_input_data by one timestep\n",
|
|
1356
|
+
" decoder_input_data[i, t, target_token_index[char]] = 1.0\n",
|
|
1357
|
+
" if t > 0:\n",
|
|
1358
|
+
" # decoder_target_data will be ahead by one timestep\n",
|
|
1359
|
+
" # and will not include the start character.\n",
|
|
1360
|
+
" decoder_target_data[i, t-1, target_token_index[char]] = 1.0\n",
|
|
1361
|
+
" # for the rest of sentence, mark it as space\n",
|
|
1362
|
+
" #decoder_input_data[i, t + 1 :, target_token_index[\" \"]] = 1.0"
|
|
1363
|
+
],
|
|
1364
|
+
"execution_count": 41,
|
|
1365
|
+
"outputs": []
|
|
1366
|
+
},
|
|
1367
|
+
{
|
|
1368
|
+
"cell_type": "markdown",
|
|
1369
|
+
"metadata": {
|
|
1370
|
+
"id": "0CZd0uprOC5u"
|
|
1371
|
+
},
|
|
1372
|
+
"source": [
|
|
1373
|
+
"# Define Model"
|
|
1374
|
+
]
|
|
1375
|
+
},
|
|
1376
|
+
{
|
|
1377
|
+
"cell_type": "code",
|
|
1378
|
+
"metadata": {
|
|
1379
|
+
"id": "0F1B0ezJcehK",
|
|
1380
|
+
"colab": {
|
|
1381
|
+
"base_uri": "https://localhost:8080/"
|
|
1382
|
+
},
|
|
1383
|
+
"outputId": "b3df9826-5bc7-4061-e777-bb38dbbe546f"
|
|
1384
|
+
},
|
|
1385
|
+
"source": [
|
|
1386
|
+
"latent_dim = 256 # Latent dimensionality of the encoding space.\n",
|
|
1387
|
+
"EMBEDDING_SIZE = 100\n",
|
|
1388
|
+
"\n",
|
|
1389
|
+
"# Define an input sequence and process it.\n",
|
|
1390
|
+
"encoder_inputs = Input(shape=(None, num_encoder_tokens))\n",
|
|
1391
|
+
"print(encoder_inputs.shape)\n",
|
|
1392
|
+
"\n",
|
|
1393
|
+
"# Define embedding layer\n",
|
|
1394
|
+
"encoder_embedding = Embedding(num_encoder_tokens, EMBEDDING_SIZE, input_length=max_encoder_seq_length)\n",
|
|
1395
|
+
"encoder_inputs_em = encoder_embedding(encoder_inputs)\n",
|
|
1396
|
+
"print(encoder_inputs_em.shape)\n",
|
|
1397
|
+
"\n",
|
|
1398
|
+
"# since embedding layer will add one more dim, we need to flatten last 2 dims\n",
|
|
1399
|
+
"encoder_reshape = Reshape((-1, encoder_inputs_em.shape[2] * encoder_inputs_em.shape[3]))\n",
|
|
1400
|
+
"encoder_inputs_re = encoder_reshape(encoder_inputs_em)\n",
|
|
1401
|
+
"print(encoder_inputs_re.shape)\n",
|
|
1402
|
+
"\n",
|
|
1403
|
+
"# Note that LSTM takes only 3 dims, (samples, timesteps, features)\n",
|
|
1404
|
+
"encoder = LSTM(latent_dim, return_state=True)\n",
|
|
1405
|
+
"\n",
|
|
1406
|
+
"encoder_outputs, state_h, state_c = encoder(encoder_inputs_re)\n",
|
|
1407
|
+
"# We discard `encoder_outputs` and only keep the states.\n",
|
|
1408
|
+
"encoder_states = [state_h, state_c]"
|
|
1409
|
+
],
|
|
1410
|
+
"execution_count": 43,
|
|
1411
|
+
"outputs": [
|
|
1412
|
+
{
|
|
1413
|
+
"output_type": "stream",
|
|
1414
|
+
"name": "stdout",
|
|
1415
|
+
"text": [
|
|
1416
|
+
"(None, None, 186)\n",
|
|
1417
|
+
"(None, None, 186, 100)\n",
|
|
1418
|
+
"(None, None, 18600)\n"
|
|
1419
|
+
]
|
|
1420
|
+
}
|
|
1421
|
+
]
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
"cell_type": "code",
|
|
1425
|
+
"metadata": {
|
|
1426
|
+
"id": "D4g-jGmUeeL4",
|
|
1427
|
+
"colab": {
|
|
1428
|
+
"base_uri": "https://localhost:8080/"
|
|
1429
|
+
},
|
|
1430
|
+
"outputId": "e4791789-9d0d-437f-8233-f9471b909846"
|
|
1431
|
+
},
|
|
1432
|
+
"source": [
|
|
1433
|
+
"# Set up the decoder, using `encoder_states` as initial state.\n",
|
|
1434
|
+
"decoder_inputs = Input(shape=(None, num_decoder_tokens))\n",
|
|
1435
|
+
"print(decoder_inputs.shape)\n",
|
|
1436
|
+
"\n",
|
|
1437
|
+
"# Define embeddling layer\n",
|
|
1438
|
+
"decoder_embedding = Embedding(num_decoder_tokens, latent_dim)\n",
|
|
1439
|
+
"decoder_inputs_em = decoder_embedding(decoder_inputs)\n",
|
|
1440
|
+
"print(decoder_inputs_em.shape)\n",
|
|
1441
|
+
"\n",
|
|
1442
|
+
"# since embedding layer will add one more dim, we need to flatten last 2 dims\n",
|
|
1443
|
+
"decoder_reshape = Reshape((-1, decoder_inputs_em.shape[2] * decoder_inputs_em.shape[3]))\n",
|
|
1444
|
+
"decoder_inputs_re = decoder_reshape(decoder_inputs_em)\n",
|
|
1445
|
+
"print(decoder_inputs_re.shape)\n",
|
|
1446
|
+
"\n",
|
|
1447
|
+
"# We set up our decoder to return full output sequences,\n",
|
|
1448
|
+
"# and to return internal states as well. We don't use the\n",
|
|
1449
|
+
"# return states in the training model, but we will use them in inference.\n",
|
|
1450
|
+
"decoder = LSTM(latent_dim, return_sequences=True, return_state=True)\n",
|
|
1451
|
+
"\n",
|
|
1452
|
+
"decoder_outputs, _, _ = decoder(decoder_inputs_re, initial_state=encoder_states)\n",
|
|
1453
|
+
"print(decoder_outputs.shape)\n",
|
|
1454
|
+
"\n",
|
|
1455
|
+
"decoder_dense = Dense(num_decoder_tokens, activation='softmax')\n",
|
|
1456
|
+
"decoder_outputs = decoder_dense(decoder_outputs)\n",
|
|
1457
|
+
"print(decoder_outputs.shape)"
|
|
1458
|
+
],
|
|
1459
|
+
"execution_count": 44,
|
|
1460
|
+
"outputs": [
|
|
1461
|
+
{
|
|
1462
|
+
"output_type": "stream",
|
|
1463
|
+
"name": "stdout",
|
|
1464
|
+
"text": [
|
|
1465
|
+
"(None, None, 35)\n",
|
|
1466
|
+
"(None, None, 35, 256)\n",
|
|
1467
|
+
"(None, None, 8960)\n",
|
|
1468
|
+
"(None, None, 256)\n",
|
|
1469
|
+
"(None, None, 35)\n"
|
|
1470
|
+
]
|
|
1471
|
+
}
|
|
1472
|
+
]
|
|
1473
|
+
},
|
|
1474
|
+
{
|
|
1475
|
+
"cell_type": "code",
|
|
1476
|
+
"metadata": {
|
|
1477
|
+
"id": "voLTGIiBeyKO"
|
|
1478
|
+
},
|
|
1479
|
+
"source": [
|
|
1480
|
+
"# Define the model that will turn\n",
|
|
1481
|
+
"# `encoder_input_data` & `decoder_input_data` into `decoder_target_data`\n",
|
|
1482
|
+
"model = Model([encoder_inputs, decoder_inputs], decoder_outputs)"
|
|
1483
|
+
],
|
|
1484
|
+
"execution_count": 45,
|
|
1485
|
+
"outputs": []
|
|
1486
|
+
},
|
|
1487
|
+
{
|
|
1488
|
+
"cell_type": "code",
|
|
1489
|
+
"metadata": {
|
|
1490
|
+
"colab": {
|
|
1491
|
+
"base_uri": "https://localhost:8080/"
|
|
1492
|
+
},
|
|
1493
|
+
"id": "iShaSKTZYbxl",
|
|
1494
|
+
"outputId": "170b8551-2874-490a-9cfb-e64600d19314"
|
|
1495
|
+
},
|
|
1496
|
+
"source": [
|
|
1497
|
+
"model.summary()"
|
|
1498
|
+
],
|
|
1499
|
+
"execution_count": 46,
|
|
1500
|
+
"outputs": [
|
|
1501
|
+
{
|
|
1502
|
+
"output_type": "stream",
|
|
1503
|
+
"name": "stdout",
|
|
1504
|
+
"text": [
|
|
1505
|
+
"Model: \"model\"\n",
|
|
1506
|
+
"__________________________________________________________________________________________________\n",
|
|
1507
|
+
"Layer (type) Output Shape Param # Connected to \n",
|
|
1508
|
+
"==================================================================================================\n",
|
|
1509
|
+
"input_2 (InputLayer) [(None, None, 186)] 0 \n",
|
|
1510
|
+
"__________________________________________________________________________________________________\n",
|
|
1511
|
+
"input_3 (InputLayer) [(None, None, 35)] 0 \n",
|
|
1512
|
+
"__________________________________________________________________________________________________\n",
|
|
1513
|
+
"embedding_1 (Embedding) (None, None, 186, 10 18600 input_2[0][0] \n",
|
|
1514
|
+
"__________________________________________________________________________________________________\n",
|
|
1515
|
+
"embedding_2 (Embedding) (None, None, 35, 256 8960 input_3[0][0] \n",
|
|
1516
|
+
"__________________________________________________________________________________________________\n",
|
|
1517
|
+
"reshape_1 (Reshape) (None, None, 18600) 0 embedding_1[0][0] \n",
|
|
1518
|
+
"__________________________________________________________________________________________________\n",
|
|
1519
|
+
"reshape_2 (Reshape) (None, None, 8960) 0 embedding_2[0][0] \n",
|
|
1520
|
+
"__________________________________________________________________________________________________\n",
|
|
1521
|
+
"lstm (LSTM) [(None, 256), (None, 19309568 reshape_1[0][0] \n",
|
|
1522
|
+
"__________________________________________________________________________________________________\n",
|
|
1523
|
+
"lstm_1 (LSTM) [(None, None, 256), 9438208 reshape_2[0][0] \n",
|
|
1524
|
+
" lstm[0][1] \n",
|
|
1525
|
+
" lstm[0][2] \n",
|
|
1526
|
+
"__________________________________________________________________________________________________\n",
|
|
1527
|
+
"dense (Dense) (None, None, 35) 8995 lstm_1[0][0] \n",
|
|
1528
|
+
"==================================================================================================\n",
|
|
1529
|
+
"Total params: 28,784,331\n",
|
|
1530
|
+
"Trainable params: 28,784,331\n",
|
|
1531
|
+
"Non-trainable params: 0\n",
|
|
1532
|
+
"__________________________________________________________________________________________________\n"
|
|
1533
|
+
]
|
|
1534
|
+
}
|
|
1535
|
+
]
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
"cell_type": "code",
|
|
1539
|
+
"metadata": {
|
|
1540
|
+
"colab": {
|
|
1541
|
+
"base_uri": "https://localhost:8080/",
|
|
1542
|
+
"height": 644
|
|
1543
|
+
},
|
|
1544
|
+
"id": "mfGcinDOYqKl",
|
|
1545
|
+
"outputId": "4cedc360-47bc-4cef-db62-de7e94c3bb05"
|
|
1546
|
+
},
|
|
1547
|
+
"source": [
|
|
1548
|
+
"tf.keras.utils.plot_model(model, show_shapes=True, show_layer_names=True)"
|
|
1549
|
+
],
|
|
1550
|
+
"execution_count": 47,
|
|
1551
|
+
"outputs": [
|
|
1552
|
+
{
|
|
1553
|
+
"output_type": "execute_result",
|
|
1554
|
+
"data": {
|
|
1555
|
+
"image/png": "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RO2KVyIQERERERERkVaYRCAiIiIiIiIirTCJQERERERERERaYRKBiIiIiIiIiLTSKR+sePbsWX2HQNRs+fn5AIBDhw7pORLD0fCe5z6jzoBjGBEREXVkEiGE0HcQrUkikeg7BCIiohbrZMMzERERdQ4Jne5KBH7oImpbs2fPBsBf/YmIiIiIuiI+E4GIiIiIiIiItMIkAhERERERERFphUkEIiIiIiIiItIKkwhEREREREREpBUmEYiIiIiIiIhIK0wiEBEREREREZFWmEQgIiIiIiIiIq0wiUBEREREREREWmESgYiIiIiIiIi0wiQCEREREREREWmFSQQiIiIiIiIi0gqTCERERERERESkFSYRiIiIiIiIiEgrTCIQERERERERkVaYRCAiIiIiIiIirTCJQERERERERERaYRKBiIiIiIiIiLTCJAIRERERERERaYVJBCIiIiIiIiLSCpMIRERERERERKQVJhGIiIiIiIiISCtMIhARERERERGRVphEICIiIiIiIiKtMIlARERERERERFphEoGIiIiIiIiItMIkAhERERERERFphUkEIiIiIiIiItIKkwhEREREREREpBUmEYiIiIiIiIhIK0wiEBEREREREZFWmEQgIiIiIiIiIq0wiUBEREREREREWmESgYiIiIiIiIi0IhFCCH0HQUQd0759+7Bnzx7U19eryq5fvw4AcHFxUZV169YN77//PubMmdPuMRIRERERUbtJYBKBiJ7p8uXLGDp0qFZ1L126hCFDhrRxREREREREpEcJvJ2BiJ5pyJAh6Nev33Prubu7M4FARERERNQFMIlARE169913YWJi8szlJiYmCAwMbMeIiIiIiIhIX3g7AxE16dq1a3B3d0dT/yqysrLg7u7ejlEREREREZEe8HYGImqaq6srhg8fDolEorFMIpFgxIgRTCAQEREREXURTCIQ0XP95je/gZGRkUa5kZERfvOb3+ghIiIiIiIi0gfezkBEz1VYWAh7e3u1qR6Bx1M7FhQUoFevXnqKjIiIiIiI2hFvZyCi5+vZsyfGjh2rdjWCkZERXn/9dSYQiIiIiIi6ECYRiEgr7777rsbDFd999109RUNERERERPrA2xmISCslJSWwtbVFdXU1gMdTOxYWFsLKykrPkRERERERUTvh7QxEpB2lUomJEyfC2NgYxsbGmDx5MhMI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urpqjq/TJ24hWsZ64/z8F+dHv/mpxtMZiBoVHvFI1FD4Q4ueprGuj6CgIOHg4GDqMGpU30mEzMxMYWFhIbZu3VrnPkyhqqpKDB48WGzevNnUoRhFUxjPvXv3hFwuF+vXr9eU6Rs311v94/w0vfmpxiQCUaPCIx6JiOjpDNlMrKkqLS3FN998g8zMTM3GXl5eXoiIiEBERASKiopMHKFhqqqqkJqaisLCQgQEBJg6nDprKuNZvnw5evfujeDgYACGxc31Vv84P01rfoQQyM3NxdGjR3H58mUTR0dET2ISgYiIWrwHDx5gxIgR6NSpE6ZNm6YpX7JkCfz9/REQEGDwpmqmdPjwYezYsQNpaWl6n23fmDWF8WzYsAFnzpzB/v37IZVKARgeN9db/eH8NL352bVrF1xdXTF48GDs27fPxBES0ZMkQghh6iCIWgJ/f38AQEpKiokjocaoMa6P999/Hx9//DHKy8vRvn17rFu3DhMmTDB1WBrJycmYNGkSGuLH2LfffotDhw5h9erV9d4XNT27du1CRkYGFi1apLOJ3vPgejMuzk/jZuz5eZbG+POWqIlJYRKBqIHwhxY9DdeH4RoyiUBERM0Df94S1VkKH2cgIiIiIiIiIr0wiUBEREREREREemESgYiIiIiIiIj0wiQCEREREREREenFwtQBELUkx48f12zoQ/Sk48ePAwDXhwFu3LgBgJ8ZERHp7/jx4+jfv7+pwyBq0phEIGogAwYMMHUI1IjxFxrDubm5NaojJ1uC06dPAwBefPFFE0dCRPR8+vfvz9/JiOqIRzwSERGRXiZOnAjg9+M1iYiIqEXiEY9EREREREREpB8mEYiIiIiIiIhIL0wiEBEREREREZFemEQgIiIiIiIiIr0wiUBEREREREREemESgYiIiIiIiIj0wiQCEREREREREemFSQQiIiIiIiIi0guTCERERERERESkFyYRiIiIiIiIiEgvTCIQERERERERkV6YRCAiIiIiIiIivTCJQERERERERER6YRKBiIiIiIiIiPTCJAIRERERERER6YVJBCIiIiIiIiLSC5MIRERERERERKQXJhGIiIiIiIiISC9MIhARERERERGRXphEICIiIiIiIiK9MIlARERERERERHphEoGIiIiIiIiI9MIkAhERERERERHphUkEIiIiIiIiItILkwhEREREREREpBcmEYiIiIiIiIhIL0wiEBEREREREZFemEQgIiIiIiIiIr0wiUBEREREREREemESgYiIiIiIiIj0wiQCEREREREREemFSQQiIiIiIiIi0ouFqQMgIiKixqekpASPHz/WKisvLwcAPHz4UKvc0tISSqWywWIjIiIi02ESgYiIiHT8/e9/x+zZs2t8z8HBQevfcXFxmDVrVkOERURERCYmEUIIUwdBREREjcvdu3fh4uKCqqqqp9YzNzfHrVu34OTk1ECRERERkQmlcE8EIiIi0uHk5IRhw4bB3Ny81jrm5ub485//zAQCERFRC8IkAhEREdVoypQpeNoNi0IITJkypQEjIiIiIlPj4wxERERUo8LCQjg5OelssFhNJpPh7t27UKlUDRwZERERmQgfZyAiIqKa2djYYPTo0ZBKpTrvWVhYYOzYsUwgEBERtTBMIhAREVGt3nrrLVRWVuqUV1VV4a233jJBRERERGRKfJyBiIiIalVeXg5HR0cUFhZqlVtbW+PevXuwtLQ0UWRERERkAnycgYiIiGonk8ng7+8PmUymKZNKpZg0aRITCERERC0QkwhERET0VJMnT0Z5ebnm3xUVFZg8ebIJIyIiIiJT4eMMRERE9FRqtRrOzs64e/cuAMDR0RG3b9+Gubm5iSMjIiKiBsbHGYiIiOjpzMzMMHnyZMhkMkilUrz11ltMIBAREbVQTCIQERHRM7355psoLy/nowxEREQtnIWpAyAiak6OHTuG69evmzoMIqMTQqBVq1YAgKtXryI7O9u0ARHVg7Zt22LAgAGmDoOIqFHjnghEREbk7++P7du3mzoMIiJ6DhMmTEBKSoqpwyAiasxSeCcCEZGR8ZfQlkEikSApKQkTJ040dSgNJiMjAwDQrVu357re398fAPjfBzVK1euTiIiejkkEIiIi0svzJg+IiIio+eDGikRERERERESkFyYRiIiIiIiIiEgvTCIQERERERERkV6YRCAiIiIiIiIivTCJQERERERERER6YRKBiIjIhPbv3w9bW1vs2bPH1KE0egcPHsSSJUuwY8cOeHh4QCKRQCKR4O2339apO3z4cNjY2MDc3Bze3t44deqUCSLWT3MbDwBERESgW7duUKlUsLS0hJeXFxYtWoSioiKtelFRUZpxP/nq3r27TpsVFRVYtWoVvLy8IJPJYGdnh+7duyM7OxsA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\n",
|
|
1556
|
+
"text/plain": [
|
|
1557
|
+
"<IPython.core.display.Image object>"
|
|
1558
|
+
]
|
|
1559
|
+
},
|
|
1560
|
+
"metadata": {},
|
|
1561
|
+
"execution_count": 47
|
|
1562
|
+
}
|
|
1563
|
+
]
|
|
1564
|
+
},
|
|
1565
|
+
{
|
|
1566
|
+
"cell_type": "markdown",
|
|
1567
|
+
"metadata": {
|
|
1568
|
+
"id": "eMp54YzsOKwn"
|
|
1569
|
+
},
|
|
1570
|
+
"source": [
|
|
1571
|
+
"# Train"
|
|
1572
|
+
]
|
|
1573
|
+
},
|
|
1574
|
+
{
|
|
1575
|
+
"cell_type": "code",
|
|
1576
|
+
"metadata": {
|
|
1577
|
+
"colab": {
|
|
1578
|
+
"base_uri": "https://localhost:8080/"
|
|
1579
|
+
},
|
|
1580
|
+
"id": "CbARhubxe2yA",
|
|
1581
|
+
"outputId": "65d91e9f-0758-4ff3-ca38-18f3133bee25"
|
|
1582
|
+
},
|
|
1583
|
+
"source": [
|
|
1584
|
+
"# Training\n",
|
|
1585
|
+
"batch_size = 64 # Batch size for training.\n",
|
|
1586
|
+
"epochs = 500 # Number of epochs to train for.\n",
|
|
1587
|
+
"initial_learning_rate = 0.001\n",
|
|
1588
|
+
"\n",
|
|
1589
|
+
"# Add callbacks:\n",
|
|
1590
|
+
"# 'EarlyStopping' to stop training when the model is not enhancing anymore\n",
|
|
1591
|
+
"# 'ModelCheckPoint' to always keep the model that has the best val_accuracy\n",
|
|
1592
|
+
"model_save_filename = \"model.h5\"\n",
|
|
1593
|
+
"\n",
|
|
1594
|
+
"model.compile(\n",
|
|
1595
|
+
" optimizer=tf.keras.optimizers.RMSprop(learning_rate=initial_learning_rate), \n",
|
|
1596
|
+
" loss='categorical_crossentropy', \n",
|
|
1597
|
+
" metrics=['accuracy'])\n",
|
|
1598
|
+
"\n",
|
|
1599
|
+
"earlystopping_cb = EarlyStopping(\n",
|
|
1600
|
+
" monitor=\"val_accuracy\",\n",
|
|
1601
|
+
" mode=\"max\",\n",
|
|
1602
|
+
" verbose=1,\n",
|
|
1603
|
+
" patience=20, \n",
|
|
1604
|
+
" restore_best_weights=True)\n",
|
|
1605
|
+
"\n",
|
|
1606
|
+
"mdlcheckpoint_cb = ModelCheckpoint(\n",
|
|
1607
|
+
" model_save_filename, \n",
|
|
1608
|
+
" monitor=\"val_accuracy\", \n",
|
|
1609
|
+
" mode=\"max\",\n",
|
|
1610
|
+
" verbose=1,\n",
|
|
1611
|
+
" save_best_only=True\n",
|
|
1612
|
+
")\n",
|
|
1613
|
+
"\n",
|
|
1614
|
+
"decay = initial_learning_rate / epochs\n",
|
|
1615
|
+
"def lr_time_based_decay(epoch, lr):\n",
|
|
1616
|
+
" return lr * 1 / (1 + decay * epoch)\n",
|
|
1617
|
+
"lrscheduler_cb = tf.keras.callbacks.LearningRateScheduler(lr_time_based_decay)\n",
|
|
1618
|
+
"\n",
|
|
1619
|
+
"history = model.fit([encoder_input_data, decoder_input_data], decoder_target_data,\n",
|
|
1620
|
+
" batch_size=batch_size, epochs=epochs, validation_split=0.2, \n",
|
|
1621
|
+
" callbacks=[earlystopping_cb, mdlcheckpoint_cb, lrscheduler_cb])"
|
|
1622
|
+
],
|
|
1623
|
+
"execution_count": 48,
|
|
1624
|
+
"outputs": [
|
|
1625
|
+
{
|
|
1626
|
+
"output_type": "stream",
|
|
1627
|
+
"name": "stdout",
|
|
1628
|
+
"text": [
|
|
1629
|
+
"Epoch 1/500\n",
|
|
1630
|
+
"698/698 [==============================] - 112s 151ms/step - loss: 0.5528 - accuracy: 0.0503 - val_loss: 0.4742 - val_accuracy: 0.0383\n",
|
|
1631
|
+
"\n",
|
|
1632
|
+
"Epoch 00001: val_accuracy improved from -inf to 0.03834, saving model to model.h5\n",
|
|
1633
|
+
"Epoch 2/500\n",
|
|
1634
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.5296 - accuracy: 0.0506 - val_loss: 0.4772 - val_accuracy: 0.0388\n",
|
|
1635
|
+
"\n",
|
|
1636
|
+
"Epoch 00002: val_accuracy improved from 0.03834 to 0.03882, saving model to model.h5\n",
|
|
1637
|
+
"Epoch 3/500\n",
|
|
1638
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.5269 - accuracy: 0.0544 - val_loss: 0.4726 - val_accuracy: 0.0393\n",
|
|
1639
|
+
"\n",
|
|
1640
|
+
"Epoch 00003: val_accuracy improved from 0.03882 to 0.03933, saving model to model.h5\n",
|
|
1641
|
+
"Epoch 4/500\n",
|
|
1642
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.5231 - accuracy: 0.0554 - val_loss: 0.4740 - val_accuracy: 0.0387\n",
|
|
1643
|
+
"\n",
|
|
1644
|
+
"Epoch 00004: val_accuracy did not improve from 0.03933\n",
|
|
1645
|
+
"Epoch 5/500\n",
|
|
1646
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.5187 - accuracy: 0.0555 - val_loss: 0.4720 - val_accuracy: 0.0400\n",
|
|
1647
|
+
"\n",
|
|
1648
|
+
"Epoch 00005: val_accuracy improved from 0.03933 to 0.04004, saving model to model.h5\n",
|
|
1649
|
+
"Epoch 6/500\n",
|
|
1650
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.5158 - accuracy: 0.0563 - val_loss: 0.4652 - val_accuracy: 0.0427\n",
|
|
1651
|
+
"\n",
|
|
1652
|
+
"Epoch 00006: val_accuracy improved from 0.04004 to 0.04271, saving model to model.h5\n",
|
|
1653
|
+
"Epoch 7/500\n",
|
|
1654
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.5121 - accuracy: 0.0575 - val_loss: 0.4594 - val_accuracy: 0.0435\n",
|
|
1655
|
+
"\n",
|
|
1656
|
+
"Epoch 00007: val_accuracy improved from 0.04271 to 0.04351, saving model to model.h5\n",
|
|
1657
|
+
"Epoch 8/500\n",
|
|
1658
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.4899 - accuracy: 0.0638 - val_loss: 0.4458 - val_accuracy: 0.0448\n",
|
|
1659
|
+
"\n",
|
|
1660
|
+
"Epoch 00008: val_accuracy improved from 0.04351 to 0.04482, saving model to model.h5\n",
|
|
1661
|
+
"Epoch 9/500\n",
|
|
1662
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.4486 - accuracy: 0.0774 - val_loss: 0.3842 - val_accuracy: 0.0653\n",
|
|
1663
|
+
"\n",
|
|
1664
|
+
"Epoch 00009: val_accuracy improved from 0.04482 to 0.06533, saving model to model.h5\n",
|
|
1665
|
+
"Epoch 10/500\n",
|
|
1666
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.4037 - accuracy: 0.0917 - val_loss: 0.3360 - val_accuracy: 0.0776\n",
|
|
1667
|
+
"\n",
|
|
1668
|
+
"Epoch 00010: val_accuracy improved from 0.06533 to 0.07759, saving model to model.h5\n",
|
|
1669
|
+
"Epoch 11/500\n",
|
|
1670
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.3503 - accuracy: 0.1079 - val_loss: 0.2920 - val_accuracy: 0.0918\n",
|
|
1671
|
+
"\n",
|
|
1672
|
+
"Epoch 00011: val_accuracy improved from 0.07759 to 0.09178, saving model to model.h5\n",
|
|
1673
|
+
"Epoch 12/500\n",
|
|
1674
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.3051 - accuracy: 0.1204 - val_loss: 0.2577 - val_accuracy: 0.1013\n",
|
|
1675
|
+
"\n",
|
|
1676
|
+
"Epoch 00012: val_accuracy improved from 0.09178 to 0.10131, saving model to model.h5\n",
|
|
1677
|
+
"Epoch 13/500\n",
|
|
1678
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.2781 - accuracy: 0.1285 - val_loss: 0.2570 - val_accuracy: 0.0996\n",
|
|
1679
|
+
"\n",
|
|
1680
|
+
"Epoch 00013: val_accuracy did not improve from 0.10131\n",
|
|
1681
|
+
"Epoch 14/500\n",
|
|
1682
|
+
"698/698 [==============================] - 104s 150ms/step - loss: 0.2578 - accuracy: 0.1343 - val_loss: 0.2221 - val_accuracy: 0.1080\n",
|
|
1683
|
+
"\n",
|
|
1684
|
+
"Epoch 00014: val_accuracy improved from 0.10131 to 0.10803, saving model to model.h5\n",
|
|
1685
|
+
"Epoch 15/500\n",
|
|
1686
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.2386 - accuracy: 0.1393 - val_loss: 0.2121 - val_accuracy: 0.1132\n",
|
|
1687
|
+
"\n",
|
|
1688
|
+
"Epoch 00015: val_accuracy improved from 0.10803 to 0.11317, saving model to model.h5\n",
|
|
1689
|
+
"Epoch 16/500\n",
|
|
1690
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.2245 - accuracy: 0.1433 - val_loss: 0.2205 - val_accuracy: 0.1077\n",
|
|
1691
|
+
"\n",
|
|
1692
|
+
"Epoch 00016: val_accuracy did not improve from 0.11317\n",
|
|
1693
|
+
"Epoch 17/500\n",
|
|
1694
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.2133 - accuracy: 0.1464 - val_loss: 0.2158 - val_accuracy: 0.1094\n",
|
|
1695
|
+
"\n",
|
|
1696
|
+
"Epoch 00017: val_accuracy did not improve from 0.11317\n",
|
|
1697
|
+
"Epoch 18/500\n",
|
|
1698
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.2029 - accuracy: 0.1496 - val_loss: 0.2012 - val_accuracy: 0.1142\n",
|
|
1699
|
+
"\n",
|
|
1700
|
+
"Epoch 00018: val_accuracy improved from 0.11317 to 0.11417, saving model to model.h5\n",
|
|
1701
|
+
"Epoch 19/500\n",
|
|
1702
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1946 - accuracy: 0.1520 - val_loss: 0.2027 - val_accuracy: 0.1130\n",
|
|
1703
|
+
"\n",
|
|
1704
|
+
"Epoch 00019: val_accuracy did not improve from 0.11417\n",
|
|
1705
|
+
"Epoch 20/500\n",
|
|
1706
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1872 - accuracy: 0.1543 - val_loss: 0.1851 - val_accuracy: 0.1192\n",
|
|
1707
|
+
"\n",
|
|
1708
|
+
"Epoch 00020: val_accuracy improved from 0.11417 to 0.11919, saving model to model.h5\n",
|
|
1709
|
+
"Epoch 21/500\n",
|
|
1710
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1810 - accuracy: 0.1564 - val_loss: 0.1800 - val_accuracy: 0.1229\n",
|
|
1711
|
+
"\n",
|
|
1712
|
+
"Epoch 00021: val_accuracy improved from 0.11919 to 0.12286, saving model to model.h5\n",
|
|
1713
|
+
"Epoch 22/500\n",
|
|
1714
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.1749 - accuracy: 0.1582 - val_loss: 0.1837 - val_accuracy: 0.1213\n",
|
|
1715
|
+
"\n",
|
|
1716
|
+
"Epoch 00022: val_accuracy did not improve from 0.12286\n",
|
|
1717
|
+
"Epoch 23/500\n",
|
|
1718
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1698 - accuracy: 0.1597 - val_loss: 0.1796 - val_accuracy: 0.1203\n",
|
|
1719
|
+
"\n",
|
|
1720
|
+
"Epoch 00023: val_accuracy did not improve from 0.12286\n",
|
|
1721
|
+
"Epoch 24/500\n",
|
|
1722
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1651 - accuracy: 0.1610 - val_loss: 0.1762 - val_accuracy: 0.1236\n",
|
|
1723
|
+
"\n",
|
|
1724
|
+
"Epoch 00024: val_accuracy improved from 0.12286 to 0.12357, saving model to model.h5\n",
|
|
1725
|
+
"Epoch 25/500\n",
|
|
1726
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1605 - accuracy: 0.1625 - val_loss: 0.1763 - val_accuracy: 0.1241\n",
|
|
1727
|
+
"\n",
|
|
1728
|
+
"Epoch 00025: val_accuracy improved from 0.12357 to 0.12410, saving model to model.h5\n",
|
|
1729
|
+
"Epoch 26/500\n",
|
|
1730
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1565 - accuracy: 0.1637 - val_loss: 0.1813 - val_accuracy: 0.1211\n",
|
|
1731
|
+
"\n",
|
|
1732
|
+
"Epoch 00026: val_accuracy did not improve from 0.12410\n",
|
|
1733
|
+
"Epoch 27/500\n",
|
|
1734
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1528 - accuracy: 0.1647 - val_loss: 0.1682 - val_accuracy: 0.1241\n",
|
|
1735
|
+
"\n",
|
|
1736
|
+
"Epoch 00027: val_accuracy improved from 0.12410 to 0.12411, saving model to model.h5\n",
|
|
1737
|
+
"Epoch 28/500\n",
|
|
1738
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1493 - accuracy: 0.1656 - val_loss: 0.1759 - val_accuracy: 0.1218\n",
|
|
1739
|
+
"\n",
|
|
1740
|
+
"Epoch 00028: val_accuracy did not improve from 0.12411\n",
|
|
1741
|
+
"Epoch 29/500\n",
|
|
1742
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.1458 - accuracy: 0.1665 - val_loss: 0.1710 - val_accuracy: 0.1240\n",
|
|
1743
|
+
"\n",
|
|
1744
|
+
"Epoch 00029: val_accuracy did not improve from 0.12411\n",
|
|
1745
|
+
"Epoch 30/500\n",
|
|
1746
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1428 - accuracy: 0.1673 - val_loss: 0.1634 - val_accuracy: 0.1271\n",
|
|
1747
|
+
"\n",
|
|
1748
|
+
"Epoch 00030: val_accuracy improved from 0.12411 to 0.12710, saving model to model.h5\n",
|
|
1749
|
+
"Epoch 31/500\n",
|
|
1750
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1402 - accuracy: 0.1680 - val_loss: 0.1666 - val_accuracy: 0.1249\n",
|
|
1751
|
+
"\n",
|
|
1752
|
+
"Epoch 00031: val_accuracy did not improve from 0.12710\n",
|
|
1753
|
+
"Epoch 32/500\n",
|
|
1754
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1380 - accuracy: 0.1686 - val_loss: 0.1708 - val_accuracy: 0.1232\n",
|
|
1755
|
+
"\n",
|
|
1756
|
+
"Epoch 00032: val_accuracy did not improve from 0.12710\n",
|
|
1757
|
+
"Epoch 33/500\n",
|
|
1758
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1356 - accuracy: 0.1693 - val_loss: 0.1754 - val_accuracy: 0.1232\n",
|
|
1759
|
+
"\n",
|
|
1760
|
+
"Epoch 00033: val_accuracy did not improve from 0.12710\n",
|
|
1761
|
+
"Epoch 34/500\n",
|
|
1762
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1335 - accuracy: 0.1698 - val_loss: 0.1660 - val_accuracy: 0.1259\n",
|
|
1763
|
+
"\n",
|
|
1764
|
+
"Epoch 00034: val_accuracy did not improve from 0.12710\n",
|
|
1765
|
+
"Epoch 35/500\n",
|
|
1766
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1314 - accuracy: 0.1704 - val_loss: 0.1600 - val_accuracy: 0.1276\n",
|
|
1767
|
+
"\n",
|
|
1768
|
+
"Epoch 00035: val_accuracy improved from 0.12710 to 0.12761, saving model to model.h5\n",
|
|
1769
|
+
"Epoch 36/500\n",
|
|
1770
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1295 - accuracy: 0.1710 - val_loss: 0.1655 - val_accuracy: 0.1261\n",
|
|
1771
|
+
"\n",
|
|
1772
|
+
"Epoch 00036: val_accuracy did not improve from 0.12761\n",
|
|
1773
|
+
"Epoch 37/500\n",
|
|
1774
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1278 - accuracy: 0.1714 - val_loss: 0.1650 - val_accuracy: 0.1257\n",
|
|
1775
|
+
"\n",
|
|
1776
|
+
"Epoch 00037: val_accuracy did not improve from 0.12761\n",
|
|
1777
|
+
"Epoch 38/500\n",
|
|
1778
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1259 - accuracy: 0.1719 - val_loss: 0.1673 - val_accuracy: 0.1227\n",
|
|
1779
|
+
"\n",
|
|
1780
|
+
"Epoch 00038: val_accuracy did not improve from 0.12761\n",
|
|
1781
|
+
"Epoch 39/500\n",
|
|
1782
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1245 - accuracy: 0.1722 - val_loss: 0.1651 - val_accuracy: 0.1258\n",
|
|
1783
|
+
"\n",
|
|
1784
|
+
"Epoch 00039: val_accuracy did not improve from 0.12761\n",
|
|
1785
|
+
"Epoch 40/500\n",
|
|
1786
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1231 - accuracy: 0.1727 - val_loss: 0.1601 - val_accuracy: 0.1265\n",
|
|
1787
|
+
"\n",
|
|
1788
|
+
"Epoch 00040: val_accuracy did not improve from 0.12761\n",
|
|
1789
|
+
"Epoch 41/500\n",
|
|
1790
|
+
"698/698 [==============================] - 104s 150ms/step - loss: 0.1214 - accuracy: 0.1730 - val_loss: 0.1636 - val_accuracy: 0.1250\n",
|
|
1791
|
+
"\n",
|
|
1792
|
+
"Epoch 00041: val_accuracy did not improve from 0.12761\n",
|
|
1793
|
+
"Epoch 42/500\n",
|
|
1794
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1200 - accuracy: 0.1733 - val_loss: 0.1848 - val_accuracy: 0.1195\n",
|
|
1795
|
+
"\n",
|
|
1796
|
+
"Epoch 00042: val_accuracy did not improve from 0.12761\n",
|
|
1797
|
+
"Epoch 43/500\n",
|
|
1798
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1187 - accuracy: 0.1736 - val_loss: 0.1658 - val_accuracy: 0.1245\n",
|
|
1799
|
+
"\n",
|
|
1800
|
+
"Epoch 00043: val_accuracy did not improve from 0.12761\n",
|
|
1801
|
+
"Epoch 44/500\n",
|
|
1802
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1175 - accuracy: 0.1739 - val_loss: 0.1616 - val_accuracy: 0.1258\n",
|
|
1803
|
+
"\n",
|
|
1804
|
+
"Epoch 00044: val_accuracy did not improve from 0.12761\n",
|
|
1805
|
+
"Epoch 45/500\n",
|
|
1806
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1164 - accuracy: 0.1743 - val_loss: 0.1597 - val_accuracy: 0.1269\n",
|
|
1807
|
+
"\n",
|
|
1808
|
+
"Epoch 00045: val_accuracy did not improve from 0.12761\n",
|
|
1809
|
+
"Epoch 46/500\n",
|
|
1810
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1152 - accuracy: 0.1745 - val_loss: 0.1629 - val_accuracy: 0.1261\n",
|
|
1811
|
+
"\n",
|
|
1812
|
+
"Epoch 00046: val_accuracy did not improve from 0.12761\n",
|
|
1813
|
+
"Epoch 47/500\n",
|
|
1814
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.1141 - accuracy: 0.1748 - val_loss: 0.1691 - val_accuracy: 0.1223\n",
|
|
1815
|
+
"\n",
|
|
1816
|
+
"Epoch 00047: val_accuracy did not improve from 0.12761\n",
|
|
1817
|
+
"Epoch 48/500\n",
|
|
1818
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.1131 - accuracy: 0.1751 - val_loss: 0.1628 - val_accuracy: 0.1260\n",
|
|
1819
|
+
"\n",
|
|
1820
|
+
"Epoch 00048: val_accuracy did not improve from 0.12761\n",
|
|
1821
|
+
"Epoch 49/500\n",
|
|
1822
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.1123 - accuracy: 0.1752 - val_loss: 0.1636 - val_accuracy: 0.1246\n",
|
|
1823
|
+
"\n",
|
|
1824
|
+
"Epoch 00049: val_accuracy did not improve from 0.12761\n",
|
|
1825
|
+
"Epoch 50/500\n",
|
|
1826
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1112 - accuracy: 0.1755 - val_loss: 0.1594 - val_accuracy: 0.1263\n",
|
|
1827
|
+
"\n",
|
|
1828
|
+
"Epoch 00050: val_accuracy did not improve from 0.12761\n",
|
|
1829
|
+
"Epoch 51/500\n",
|
|
1830
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1104 - accuracy: 0.1757 - val_loss: 0.1639 - val_accuracy: 0.1249\n",
|
|
1831
|
+
"\n",
|
|
1832
|
+
"Epoch 00051: val_accuracy did not improve from 0.12761\n",
|
|
1833
|
+
"Epoch 52/500\n",
|
|
1834
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1096 - accuracy: 0.1758 - val_loss: 0.1611 - val_accuracy: 0.1256\n",
|
|
1835
|
+
"\n",
|
|
1836
|
+
"Epoch 00052: val_accuracy did not improve from 0.12761\n",
|
|
1837
|
+
"Epoch 53/500\n",
|
|
1838
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1088 - accuracy: 0.1761 - val_loss: 0.1641 - val_accuracy: 0.1244\n",
|
|
1839
|
+
"\n",
|
|
1840
|
+
"Epoch 00053: val_accuracy did not improve from 0.12761\n",
|
|
1841
|
+
"Epoch 54/500\n",
|
|
1842
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1082 - accuracy: 0.1762 - val_loss: 0.1556 - val_accuracy: 0.1278\n",
|
|
1843
|
+
"\n",
|
|
1844
|
+
"Epoch 00054: val_accuracy improved from 0.12761 to 0.12782, saving model to model.h5\n",
|
|
1845
|
+
"Epoch 55/500\n",
|
|
1846
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1076 - accuracy: 0.1764 - val_loss: 0.1636 - val_accuracy: 0.1247\n",
|
|
1847
|
+
"\n",
|
|
1848
|
+
"Epoch 00055: val_accuracy did not improve from 0.12782\n",
|
|
1849
|
+
"Epoch 56/500\n",
|
|
1850
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.1068 - accuracy: 0.1766 - val_loss: 0.1670 - val_accuracy: 0.1245\n",
|
|
1851
|
+
"\n",
|
|
1852
|
+
"Epoch 00056: val_accuracy did not improve from 0.12782\n",
|
|
1853
|
+
"Epoch 57/500\n",
|
|
1854
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1060 - accuracy: 0.1768 - val_loss: 0.1624 - val_accuracy: 0.1252\n",
|
|
1855
|
+
"\n",
|
|
1856
|
+
"Epoch 00057: val_accuracy did not improve from 0.12782\n",
|
|
1857
|
+
"Epoch 58/500\n",
|
|
1858
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1051 - accuracy: 0.1771 - val_loss: 0.1649 - val_accuracy: 0.1245\n",
|
|
1859
|
+
"\n",
|
|
1860
|
+
"Epoch 00058: val_accuracy did not improve from 0.12782\n",
|
|
1861
|
+
"Epoch 59/500\n",
|
|
1862
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.1046 - accuracy: 0.1771 - val_loss: 0.1627 - val_accuracy: 0.1260\n",
|
|
1863
|
+
"\n",
|
|
1864
|
+
"Epoch 00059: val_accuracy did not improve from 0.12782\n",
|
|
1865
|
+
"Epoch 60/500\n",
|
|
1866
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1039 - accuracy: 0.1772 - val_loss: 0.1600 - val_accuracy: 0.1260\n",
|
|
1867
|
+
"\n",
|
|
1868
|
+
"Epoch 00060: val_accuracy did not improve from 0.12782\n",
|
|
1869
|
+
"Epoch 61/500\n",
|
|
1870
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1032 - accuracy: 0.1774 - val_loss: 0.1726 - val_accuracy: 0.1223\n",
|
|
1871
|
+
"\n",
|
|
1872
|
+
"Epoch 00061: val_accuracy did not improve from 0.12782\n",
|
|
1873
|
+
"Epoch 62/500\n",
|
|
1874
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1027 - accuracy: 0.1776 - val_loss: 0.1647 - val_accuracy: 0.1238\n",
|
|
1875
|
+
"\n",
|
|
1876
|
+
"Epoch 00062: val_accuracy did not improve from 0.12782\n",
|
|
1877
|
+
"Epoch 63/500\n",
|
|
1878
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.1023 - accuracy: 0.1776 - val_loss: 0.1633 - val_accuracy: 0.1238\n",
|
|
1879
|
+
"\n",
|
|
1880
|
+
"Epoch 00063: val_accuracy did not improve from 0.12782\n",
|
|
1881
|
+
"Epoch 64/500\n",
|
|
1882
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.1017 - accuracy: 0.1777 - val_loss: 0.1598 - val_accuracy: 0.1265\n",
|
|
1883
|
+
"\n",
|
|
1884
|
+
"Epoch 00064: val_accuracy did not improve from 0.12782\n",
|
|
1885
|
+
"Epoch 65/500\n",
|
|
1886
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1013 - accuracy: 0.1777 - val_loss: 0.1743 - val_accuracy: 0.1207\n",
|
|
1887
|
+
"\n",
|
|
1888
|
+
"Epoch 00065: val_accuracy did not improve from 0.12782\n",
|
|
1889
|
+
"Epoch 66/500\n",
|
|
1890
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.1007 - accuracy: 0.1780 - val_loss: 0.1598 - val_accuracy: 0.1268\n",
|
|
1891
|
+
"\n",
|
|
1892
|
+
"Epoch 00066: val_accuracy did not improve from 0.12782\n",
|
|
1893
|
+
"Epoch 67/500\n",
|
|
1894
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.1003 - accuracy: 0.1780 - val_loss: 0.1585 - val_accuracy: 0.1263\n",
|
|
1895
|
+
"\n",
|
|
1896
|
+
"Epoch 00067: val_accuracy did not improve from 0.12782\n",
|
|
1897
|
+
"Epoch 68/500\n",
|
|
1898
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0997 - accuracy: 0.1782 - val_loss: 0.1587 - val_accuracy: 0.1270\n",
|
|
1899
|
+
"\n",
|
|
1900
|
+
"Epoch 00068: val_accuracy did not improve from 0.12782\n",
|
|
1901
|
+
"Epoch 69/500\n",
|
|
1902
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0991 - accuracy: 0.1783 - val_loss: 0.1621 - val_accuracy: 0.1252\n",
|
|
1903
|
+
"\n",
|
|
1904
|
+
"Epoch 00069: val_accuracy did not improve from 0.12782\n",
|
|
1905
|
+
"Epoch 70/500\n",
|
|
1906
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0986 - accuracy: 0.1784 - val_loss: 0.1614 - val_accuracy: 0.1257\n",
|
|
1907
|
+
"\n",
|
|
1908
|
+
"Epoch 00070: val_accuracy did not improve from 0.12782\n",
|
|
1909
|
+
"Epoch 71/500\n",
|
|
1910
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0982 - accuracy: 0.1784 - val_loss: 0.1631 - val_accuracy: 0.1246\n",
|
|
1911
|
+
"\n",
|
|
1912
|
+
"Epoch 00071: val_accuracy did not improve from 0.12782\n",
|
|
1913
|
+
"Epoch 72/500\n",
|
|
1914
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0978 - accuracy: 0.1785 - val_loss: 0.1637 - val_accuracy: 0.1242\n",
|
|
1915
|
+
"\n",
|
|
1916
|
+
"Epoch 00072: val_accuracy did not improve from 0.12782\n",
|
|
1917
|
+
"Epoch 73/500\n",
|
|
1918
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0975 - accuracy: 0.1786 - val_loss: 0.1627 - val_accuracy: 0.1245\n",
|
|
1919
|
+
"\n",
|
|
1920
|
+
"Epoch 00073: val_accuracy did not improve from 0.12782\n",
|
|
1921
|
+
"Epoch 74/500\n",
|
|
1922
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0972 - accuracy: 0.1787 - val_loss: 0.1609 - val_accuracy: 0.1252\n",
|
|
1923
|
+
"\n",
|
|
1924
|
+
"Epoch 00074: val_accuracy did not improve from 0.12782\n",
|
|
1925
|
+
"Epoch 75/500\n",
|
|
1926
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0967 - accuracy: 0.1788 - val_loss: 0.1619 - val_accuracy: 0.1248\n",
|
|
1927
|
+
"\n",
|
|
1928
|
+
"Epoch 00075: val_accuracy did not improve from 0.12782\n",
|
|
1929
|
+
"Epoch 76/500\n",
|
|
1930
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0963 - accuracy: 0.1790 - val_loss: 0.1590 - val_accuracy: 0.1254\n",
|
|
1931
|
+
"\n",
|
|
1932
|
+
"Epoch 00076: val_accuracy did not improve from 0.12782\n",
|
|
1933
|
+
"Epoch 77/500\n",
|
|
1934
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.0961 - accuracy: 0.1790 - val_loss: 0.1611 - val_accuracy: 0.1258\n",
|
|
1935
|
+
"\n",
|
|
1936
|
+
"Epoch 00077: val_accuracy did not improve from 0.12782\n",
|
|
1937
|
+
"Epoch 78/500\n",
|
|
1938
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.0957 - accuracy: 0.1790 - val_loss: 0.1630 - val_accuracy: 0.1245\n",
|
|
1939
|
+
"\n",
|
|
1940
|
+
"Epoch 00078: val_accuracy did not improve from 0.12782\n",
|
|
1941
|
+
"Epoch 79/500\n",
|
|
1942
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0954 - accuracy: 0.1791 - val_loss: 0.1645 - val_accuracy: 0.1242\n",
|
|
1943
|
+
"\n",
|
|
1944
|
+
"Epoch 00079: val_accuracy did not improve from 0.12782\n",
|
|
1945
|
+
"Epoch 80/500\n",
|
|
1946
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.0949 - accuracy: 0.1793 - val_loss: 0.1671 - val_accuracy: 0.1222\n",
|
|
1947
|
+
"\n",
|
|
1948
|
+
"Epoch 00080: val_accuracy did not improve from 0.12782\n",
|
|
1949
|
+
"Epoch 81/500\n",
|
|
1950
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.0946 - accuracy: 0.1793 - val_loss: 0.1626 - val_accuracy: 0.1245\n",
|
|
1951
|
+
"\n",
|
|
1952
|
+
"Epoch 00081: val_accuracy did not improve from 0.12782\n",
|
|
1953
|
+
"Epoch 82/500\n",
|
|
1954
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0944 - accuracy: 0.1793 - val_loss: 0.1606 - val_accuracy: 0.1250\n",
|
|
1955
|
+
"\n",
|
|
1956
|
+
"Epoch 00082: val_accuracy did not improve from 0.12782\n",
|
|
1957
|
+
"Epoch 83/500\n",
|
|
1958
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0942 - accuracy: 0.1794 - val_loss: 0.1610 - val_accuracy: 0.1249\n",
|
|
1959
|
+
"\n",
|
|
1960
|
+
"Epoch 00083: val_accuracy did not improve from 0.12782\n",
|
|
1961
|
+
"Epoch 84/500\n",
|
|
1962
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0937 - accuracy: 0.1795 - val_loss: 0.1732 - val_accuracy: 0.1209\n",
|
|
1963
|
+
"\n",
|
|
1964
|
+
"Epoch 00084: val_accuracy did not improve from 0.12782\n",
|
|
1965
|
+
"Epoch 85/500\n",
|
|
1966
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0934 - accuracy: 0.1797 - val_loss: 0.1616 - val_accuracy: 0.1245\n",
|
|
1967
|
+
"\n",
|
|
1968
|
+
"Epoch 00085: val_accuracy did not improve from 0.12782\n",
|
|
1969
|
+
"Epoch 86/500\n",
|
|
1970
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0932 - accuracy: 0.1796 - val_loss: 0.1639 - val_accuracy: 0.1234\n",
|
|
1971
|
+
"\n",
|
|
1972
|
+
"Epoch 00086: val_accuracy did not improve from 0.12782\n",
|
|
1973
|
+
"Epoch 87/500\n",
|
|
1974
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.0930 - accuracy: 0.1797 - val_loss: 0.1618 - val_accuracy: 0.1251\n",
|
|
1975
|
+
"\n",
|
|
1976
|
+
"Epoch 00087: val_accuracy did not improve from 0.12782\n",
|
|
1977
|
+
"Epoch 88/500\n",
|
|
1978
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0926 - accuracy: 0.1797 - val_loss: 0.1649 - val_accuracy: 0.1239\n",
|
|
1979
|
+
"\n",
|
|
1980
|
+
"Epoch 00088: val_accuracy did not improve from 0.12782\n",
|
|
1981
|
+
"Epoch 89/500\n",
|
|
1982
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0924 - accuracy: 0.1798 - val_loss: 0.1641 - val_accuracy: 0.1244\n",
|
|
1983
|
+
"\n",
|
|
1984
|
+
"Epoch 00089: val_accuracy did not improve from 0.12782\n",
|
|
1985
|
+
"Epoch 90/500\n",
|
|
1986
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.0922 - accuracy: 0.1799 - val_loss: 0.1616 - val_accuracy: 0.1254\n",
|
|
1987
|
+
"\n",
|
|
1988
|
+
"Epoch 00090: val_accuracy did not improve from 0.12782\n",
|
|
1989
|
+
"Epoch 91/500\n",
|
|
1990
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0918 - accuracy: 0.1799 - val_loss: 0.1640 - val_accuracy: 0.1245\n",
|
|
1991
|
+
"\n",
|
|
1992
|
+
"Epoch 00091: val_accuracy did not improve from 0.12782\n",
|
|
1993
|
+
"Epoch 92/500\n",
|
|
1994
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.0917 - accuracy: 0.1799 - val_loss: 0.1653 - val_accuracy: 0.1239\n",
|
|
1995
|
+
"\n",
|
|
1996
|
+
"Epoch 00092: val_accuracy did not improve from 0.12782\n",
|
|
1997
|
+
"Epoch 93/500\n",
|
|
1998
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0916 - accuracy: 0.1799 - val_loss: 0.1638 - val_accuracy: 0.1241\n",
|
|
1999
|
+
"\n",
|
|
2000
|
+
"Epoch 00093: val_accuracy did not improve from 0.12782\n",
|
|
2001
|
+
"Epoch 94/500\n",
|
|
2002
|
+
"698/698 [==============================] - 103s 148ms/step - loss: 0.0912 - accuracy: 0.1800 - val_loss: 0.1629 - val_accuracy: 0.1249\n",
|
|
2003
|
+
"\n",
|
|
2004
|
+
"Epoch 00094: val_accuracy did not improve from 0.12782\n",
|
|
2005
|
+
"Epoch 95/500\n",
|
|
2006
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0909 - accuracy: 0.1801 - val_loss: 0.1698 - val_accuracy: 0.1230\n",
|
|
2007
|
+
"\n",
|
|
2008
|
+
"Epoch 00095: val_accuracy did not improve from 0.12782\n",
|
|
2009
|
+
"Epoch 96/500\n",
|
|
2010
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.0909 - accuracy: 0.1800 - val_loss: 0.1704 - val_accuracy: 0.1211\n",
|
|
2011
|
+
"\n",
|
|
2012
|
+
"Epoch 00096: val_accuracy did not improve from 0.12782\n",
|
|
2013
|
+
"Epoch 97/500\n",
|
|
2014
|
+
"698/698 [==============================] - 104s 148ms/step - loss: 0.0904 - accuracy: 0.1802 - val_loss: 0.1674 - val_accuracy: 0.1228\n",
|
|
2015
|
+
"\n",
|
|
2016
|
+
"Epoch 00097: val_accuracy did not improve from 0.12782\n",
|
|
2017
|
+
"Epoch 98/500\n",
|
|
2018
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0904 - accuracy: 0.1801 - val_loss: 0.1652 - val_accuracy: 0.1236\n",
|
|
2019
|
+
"\n",
|
|
2020
|
+
"Epoch 00098: val_accuracy did not improve from 0.12782\n",
|
|
2021
|
+
"Epoch 99/500\n",
|
|
2022
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0901 - accuracy: 0.1802 - val_loss: 0.1666 - val_accuracy: 0.1233\n",
|
|
2023
|
+
"\n",
|
|
2024
|
+
"Epoch 00099: val_accuracy did not improve from 0.12782\n",
|
|
2025
|
+
"Epoch 100/500\n",
|
|
2026
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0897 - accuracy: 0.1803 - val_loss: 0.1600 - val_accuracy: 0.1250\n",
|
|
2027
|
+
"\n",
|
|
2028
|
+
"Epoch 00100: val_accuracy did not improve from 0.12782\n",
|
|
2029
|
+
"Epoch 101/500\n",
|
|
2030
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0895 - accuracy: 0.1803 - val_loss: 0.1690 - val_accuracy: 0.1231\n",
|
|
2031
|
+
"\n",
|
|
2032
|
+
"Epoch 00101: val_accuracy did not improve from 0.12782\n",
|
|
2033
|
+
"Epoch 102/500\n",
|
|
2034
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0895 - accuracy: 0.1803 - val_loss: 0.1609 - val_accuracy: 0.1252\n",
|
|
2035
|
+
"\n",
|
|
2036
|
+
"Epoch 00102: val_accuracy did not improve from 0.12782\n",
|
|
2037
|
+
"Epoch 103/500\n",
|
|
2038
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0891 - accuracy: 0.1804 - val_loss: 0.1627 - val_accuracy: 0.1246\n",
|
|
2039
|
+
"\n",
|
|
2040
|
+
"Epoch 00103: val_accuracy did not improve from 0.12782\n",
|
|
2041
|
+
"Epoch 104/500\n",
|
|
2042
|
+
"698/698 [==============================] - 104s 149ms/step - loss: 0.0891 - accuracy: 0.1805 - val_loss: 0.1614 - val_accuracy: 0.1253\n",
|
|
2043
|
+
"Restoring model weights from the end of the best epoch.\n",
|
|
2044
|
+
"\n",
|
|
2045
|
+
"Epoch 00104: val_accuracy did not improve from 0.12782\n",
|
|
2046
|
+
"Epoch 00104: early stopping\n"
|
|
2047
|
+
]
|
|
2048
|
+
}
|
|
2049
|
+
]
|
|
2050
|
+
},
|
|
2051
|
+
{
|
|
2052
|
+
"cell_type": "code",
|
|
2053
|
+
"metadata": {
|
|
2054
|
+
"colab": {
|
|
2055
|
+
"base_uri": "https://localhost:8080/"
|
|
2056
|
+
},
|
|
2057
|
+
"id": "OAvJi9RndsTf",
|
|
2058
|
+
"outputId": "8c8d6633-a8d0-4a04-d354-fd9ada0fa750"
|
|
2059
|
+
},
|
|
2060
|
+
"source": [
|
|
2061
|
+
"# list all data in history\n",
|
|
2062
|
+
"print(history.history.keys())"
|
|
2063
|
+
],
|
|
2064
|
+
"execution_count": 49,
|
|
2065
|
+
"outputs": [
|
|
2066
|
+
{
|
|
2067
|
+
"output_type": "stream",
|
|
2068
|
+
"name": "stdout",
|
|
2069
|
+
"text": [
|
|
2070
|
+
"dict_keys(['loss', 'accuracy', 'val_loss', 'val_accuracy', 'lr'])\n"
|
|
2071
|
+
]
|
|
2072
|
+
}
|
|
2073
|
+
]
|
|
2074
|
+
},
|
|
2075
|
+
{
|
|
2076
|
+
"cell_type": "code",
|
|
2077
|
+
"metadata": {
|
|
2078
|
+
"colab": {
|
|
2079
|
+
"base_uri": "https://localhost:8080/",
|
|
2080
|
+
"height": 295
|
|
2081
|
+
},
|
|
2082
|
+
"id": "CRUKMJidtBC2",
|
|
2083
|
+
"outputId": "fd24b2da-b6b3-40f5-b9f3-cb91eefb725a"
|
|
2084
|
+
},
|
|
2085
|
+
"source": [
|
|
2086
|
+
"# summarize history for accuracy\n",
|
|
2087
|
+
"plt.plot(history.history['accuracy'])\n",
|
|
2088
|
+
"plt.plot(history.history['val_accuracy'])\n",
|
|
2089
|
+
"plt.title('model accuracy')\n",
|
|
2090
|
+
"plt.ylabel('accuracy')\n",
|
|
2091
|
+
"plt.xlabel('epoch')\n",
|
|
2092
|
+
"plt.legend(['train', 'validation'], loc='upper left')\n",
|
|
2093
|
+
"plt.show()"
|
|
2094
|
+
],
|
|
2095
|
+
"execution_count": 50,
|
|
2096
|
+
"outputs": [
|
|
2097
|
+
{
|
|
2098
|
+
"output_type": "display_data",
|
|
2099
|
+
"data": {
|
|
2100
|
+
"image/png": "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\n",
|
|
2101
|
+
"text/plain": [
|
|
2102
|
+
"<Figure size 432x288 with 1 Axes>"
|
|
2103
|
+
]
|
|
2104
|
+
},
|
|
2105
|
+
"metadata": {
|
|
2106
|
+
"needs_background": "light"
|
|
2107
|
+
}
|
|
2108
|
+
}
|
|
2109
|
+
]
|
|
2110
|
+
},
|
|
2111
|
+
{
|
|
2112
|
+
"cell_type": "code",
|
|
2113
|
+
"metadata": {
|
|
2114
|
+
"colab": {
|
|
2115
|
+
"base_uri": "https://localhost:8080/",
|
|
2116
|
+
"height": 295
|
|
2117
|
+
},
|
|
2118
|
+
"id": "arLbJGpHa-JC",
|
|
2119
|
+
"outputId": "6f1117f7-01e7-4859-b8ba-04eece73ce32"
|
|
2120
|
+
},
|
|
2121
|
+
"source": [
|
|
2122
|
+
"# summarize history for loss\n",
|
|
2123
|
+
"plt.plot(history.history['loss'])\n",
|
|
2124
|
+
"plt.plot(history.history['val_loss'])\n",
|
|
2125
|
+
"plt.title('model loss')\n",
|
|
2126
|
+
"plt.ylabel('loss')\n",
|
|
2127
|
+
"plt.xlabel('epoch')\n",
|
|
2128
|
+
"plt.legend(['train', 'validation'], loc='upper left')\n",
|
|
2129
|
+
"plt.show()"
|
|
2130
|
+
],
|
|
2131
|
+
"execution_count": 51,
|
|
2132
|
+
"outputs": [
|
|
2133
|
+
{
|
|
2134
|
+
"output_type": "display_data",
|
|
2135
|
+
"data": {
|
|
2136
|
+
"image/png": "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\n",
|
|
2137
|
+
"text/plain": [
|
|
2138
|
+
"<Figure size 432x288 with 1 Axes>"
|
|
2139
|
+
]
|
|
2140
|
+
},
|
|
2141
|
+
"metadata": {
|
|
2142
|
+
"needs_background": "light"
|
|
2143
|
+
}
|
|
2144
|
+
}
|
|
2145
|
+
]
|
|
2146
|
+
},
|
|
2147
|
+
{
|
|
2148
|
+
"cell_type": "code",
|
|
2149
|
+
"metadata": {
|
|
2150
|
+
"colab": {
|
|
2151
|
+
"base_uri": "https://localhost:8080/"
|
|
2152
|
+
},
|
|
2153
|
+
"id": "Rmx3_vQbfh7J",
|
|
2154
|
+
"outputId": "1b6ddd66-d7dc-4b4c-9adc-1159b31fc2c8"
|
|
2155
|
+
},
|
|
2156
|
+
"source": [
|
|
2157
|
+
"%ls -ltr"
|
|
2158
|
+
],
|
|
2159
|
+
"execution_count": 52,
|
|
2160
|
+
"outputs": [
|
|
2161
|
+
{
|
|
2162
|
+
"output_type": "stream",
|
|
2163
|
+
"name": "stdout",
|
|
2164
|
+
"text": [
|
|
2165
|
+
"total 241808\n",
|
|
2166
|
+
"-rw------- 1 root root 3898148 Sep 14 19:57 affidavits.csv\n",
|
|
2167
|
+
"-rw------- 1 root root 813709 Sep 14 22:38 players_with_hindi_names.json\n",
|
|
2168
|
+
"-rw------- 1 root root 5006688 Sep 17 01:54 s2s.h5\n",
|
|
2169
|
+
"-rw------- 1 root root 6128992 Sep 19 21:17 model_v1.h5\n",
|
|
2170
|
+
"-rw------- 1 root root 1326377 Sep 20 22:52 hi.translit.sampled.train.tsv\n",
|
|
2171
|
+
"-rw------- 1 root root 33396 Sep 21 19:15 model_plot_dec.png\n",
|
|
2172
|
+
"-rw------- 1 root root 71081 Sep 24 15:05 model.png\n",
|
|
2173
|
+
"-rw------- 1 root root 230330576 Sep 24 16:42 model.h5\n"
|
|
2174
|
+
]
|
|
2175
|
+
}
|
|
2176
|
+
]
|
|
2177
|
+
},
|
|
2178
|
+
{
|
|
2179
|
+
"cell_type": "code",
|
|
2180
|
+
"metadata": {
|
|
2181
|
+
"colab": {
|
|
2182
|
+
"base_uri": "https://localhost:8080/"
|
|
2183
|
+
},
|
|
2184
|
+
"id": "vm5myRi5tOKl",
|
|
2185
|
+
"outputId": "460a12c2-77c7-412d-d4b0-595189c5c835"
|
|
2186
|
+
},
|
|
2187
|
+
"source": [
|
|
2188
|
+
"!du -sh model.h5"
|
|
2189
|
+
],
|
|
2190
|
+
"execution_count": 53,
|
|
2191
|
+
"outputs": [
|
|
2192
|
+
{
|
|
2193
|
+
"output_type": "stream",
|
|
2194
|
+
"name": "stdout",
|
|
2195
|
+
"text": [
|
|
2196
|
+
"220M\tmodel.h5\n"
|
|
2197
|
+
]
|
|
2198
|
+
}
|
|
2199
|
+
]
|
|
2200
|
+
},
|
|
2201
|
+
{
|
|
2202
|
+
"cell_type": "markdown",
|
|
2203
|
+
"metadata": {
|
|
2204
|
+
"id": "qFGXM_d7OOm-"
|
|
2205
|
+
},
|
|
2206
|
+
"source": [
|
|
2207
|
+
"# Inference"
|
|
2208
|
+
]
|
|
2209
|
+
},
|
|
2210
|
+
{
|
|
2211
|
+
"cell_type": "code",
|
|
2212
|
+
"metadata": {
|
|
2213
|
+
"id": "ICjit4jSOU4O"
|
|
2214
|
+
},
|
|
2215
|
+
"source": [
|
|
2216
|
+
"# Restore the model and construct the encoder and decoder.\n",
|
|
2217
|
+
"model = load_model(model_save_filename)\n",
|
|
2218
|
+
"# model = load_model(\"model_v1.h5\")"
|
|
2219
|
+
],
|
|
2220
|
+
"execution_count": 54,
|
|
2221
|
+
"outputs": []
|
|
2222
|
+
},
|
|
2223
|
+
{
|
|
2224
|
+
"cell_type": "code",
|
|
2225
|
+
"metadata": {
|
|
2226
|
+
"colab": {
|
|
2227
|
+
"base_uri": "https://localhost:8080/"
|
|
2228
|
+
},
|
|
2229
|
+
"id": "sZ0dTUtE_3_y",
|
|
2230
|
+
"outputId": "fda6ac12-6a87-4bb7-b83e-6cfe676e7055"
|
|
2231
|
+
},
|
|
2232
|
+
"source": [
|
|
2233
|
+
"model.layers[-1]"
|
|
2234
|
+
],
|
|
2235
|
+
"execution_count": 71,
|
|
2236
|
+
"outputs": [
|
|
2237
|
+
{
|
|
2238
|
+
"output_type": "execute_result",
|
|
2239
|
+
"data": {
|
|
2240
|
+
"text/plain": [
|
|
2241
|
+
"<keras.layers.core.Dense at 0x7f3166067990>"
|
|
2242
|
+
]
|
|
2243
|
+
},
|
|
2244
|
+
"metadata": {},
|
|
2245
|
+
"execution_count": 71
|
|
2246
|
+
}
|
|
2247
|
+
]
|
|
2248
|
+
},
|
|
2249
|
+
{
|
|
2250
|
+
"cell_type": "code",
|
|
2251
|
+
"metadata": {
|
|
2252
|
+
"id": "7ZowNfcXmWlL",
|
|
2253
|
+
"colab": {
|
|
2254
|
+
"base_uri": "https://localhost:8080/"
|
|
2255
|
+
},
|
|
2256
|
+
"outputId": "23a5df65-a4f5-4383-f920-41ef8bb011d3"
|
|
2257
|
+
},
|
|
2258
|
+
"source": [
|
|
2259
|
+
"# Predictions\n",
|
|
2260
|
+
"encoder_inputs = model.input[0] # input_1\n",
|
|
2261
|
+
"encoder_outputs, state_h_enc, state_c_enc = model.layers[6].output # lstm_1\n",
|
|
2262
|
+
"encoder_states = [state_h_enc, state_c_enc]\n",
|
|
2263
|
+
"\n",
|
|
2264
|
+
"encoder_model = Model(encoder_inputs, encoder_states)\n",
|
|
2265
|
+
"\n",
|
|
2266
|
+
"decoder_inputs = model.input[1] # input_2\n",
|
|
2267
|
+
"decoder_inputs_em = decoder_embedding(decoder_inputs)\n",
|
|
2268
|
+
"\n",
|
|
2269
|
+
"# since embedding layer will add one more dim, we need to flatten last 2 dims\n",
|
|
2270
|
+
"decoder_reshape = Reshape((-1, decoder_inputs_em.shape[2] * decoder_inputs_em.shape[3]))\n",
|
|
2271
|
+
"decoder_inputs_re = decoder_reshape(decoder_inputs_em)\n",
|
|
2272
|
+
"print(decoder_inputs_re.shape)\n",
|
|
2273
|
+
"\n",
|
|
2274
|
+
"decoder_state_input_h = Input(shape=(latent_dim,))\n",
|
|
2275
|
+
"decoder_state_input_c = Input(shape=(latent_dim,))\n",
|
|
2276
|
+
"decoder_states_inputs = [decoder_state_input_h, decoder_state_input_c]\n",
|
|
2277
|
+
"\n",
|
|
2278
|
+
"decoder_lstm = model.layers[7] # lstm_2\n",
|
|
2279
|
+
"decoder_outputs, state_h_dec, state_c_dec = decoder_lstm(\n",
|
|
2280
|
+
" decoder_inputs_re, initial_state=decoder_states_inputs\n",
|
|
2281
|
+
")\n",
|
|
2282
|
+
"\n",
|
|
2283
|
+
"decoder_states = [state_h_dec, state_c_dec]\n",
|
|
2284
|
+
"\n",
|
|
2285
|
+
"decoder_dense = model.layers[-1]\n",
|
|
2286
|
+
"decoder_outputs = decoder_dense(decoder_outputs)\n",
|
|
2287
|
+
"\n",
|
|
2288
|
+
"decoder_model = Model(\n",
|
|
2289
|
+
" [decoder_inputs] + decoder_states_inputs,\n",
|
|
2290
|
+
" [decoder_outputs] + decoder_states\n",
|
|
2291
|
+
")"
|
|
2292
|
+
],
|
|
2293
|
+
"execution_count": 72,
|
|
2294
|
+
"outputs": [
|
|
2295
|
+
{
|
|
2296
|
+
"output_type": "stream",
|
|
2297
|
+
"name": "stdout",
|
|
2298
|
+
"text": [
|
|
2299
|
+
"(None, None, 8960)\n"
|
|
2300
|
+
]
|
|
2301
|
+
}
|
|
2302
|
+
]
|
|
2303
|
+
},
|
|
2304
|
+
{
|
|
2305
|
+
"cell_type": "code",
|
|
2306
|
+
"metadata": {
|
|
2307
|
+
"id": "P-waZOKNPJaS"
|
|
2308
|
+
},
|
|
2309
|
+
"source": [
|
|
2310
|
+
"# Reverse-lookup token index to decode sequences back to\n",
|
|
2311
|
+
"# something readable.\n",
|
|
2312
|
+
"reverse_input_char_index = dict((i, char) for char, i in input_token_index.items())\n",
|
|
2313
|
+
"reverse_target_char_index = dict((i, char) for char, i in target_token_index.items())"
|
|
2314
|
+
],
|
|
2315
|
+
"execution_count": 73,
|
|
2316
|
+
"outputs": []
|
|
2317
|
+
},
|
|
2318
|
+
{
|
|
2319
|
+
"cell_type": "code",
|
|
2320
|
+
"metadata": {
|
|
2321
|
+
"colab": {
|
|
2322
|
+
"base_uri": "https://localhost:8080/",
|
|
2323
|
+
"height": 470
|
|
2324
|
+
},
|
|
2325
|
+
"id": "90myy-NNvctl",
|
|
2326
|
+
"outputId": "38356718-4222-4a5c-c61d-fa21a4c56562"
|
|
2327
|
+
},
|
|
2328
|
+
"source": [
|
|
2329
|
+
"tf.keras.utils.plot_model(decoder_model, to_file='model_plot_dec.png', show_shapes=True, show_layer_names=True)"
|
|
2330
|
+
],
|
|
2331
|
+
"execution_count": 74,
|
|
2332
|
+
"outputs": [
|
|
2333
|
+
{
|
|
2334
|
+
"output_type": "execute_result",
|
|
2335
|
+
"data": {
|
|
2336
|
+
"image/png": "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LsDGxgaenp5PnZ+IiIiIiIjUiQRBELQdhCZEIhFyc3MREhKi7VCIeiU4OBgAkJ+fr+VIVEVERCA/Px/37t3Tdihq8vLyEBoaCk3+XEVERODrr79W25VYVlaGSZMmITMzE4sWLervUAdcV1cXXnvtNYSHh+P999/Xdjh9ps187t27B1tbWyQkJCgLot2ioqKQlZWFu3fvarz8hYEAACAASURBVDTmUP19ExERERER9bN87lQkIiVNXmAyHLS1teGbb75BaWmp8oUcTk5O2Lp1K7Zu3Yrm5mYtR6iZzs5OFBQUoKmpCWFhYdoOp8+0nU9cXBxefvllREZGAgAEQcCtW7dw5swZlJWVDXo8REREREREwwmLikQ0Yt2/fx+zZs2Cs7Ozyi64mJgYBAcHIywsTOOXtmhTcXExDhw4gKKiIkilUm2H02fazGfHjh24fPkyjhw5An19fQBAYWEhbGxs4Ovri8OHDw9qPERERERERMMNi4pEhA0bNiAzMxMNDQ2YOHEi9u/fr+2Q+uzTTz+FIAjKT1ZWlsrxxMREREZG4ve//72WItTczJkzsW/fPlhZWWk7lH6hrXwKCwvx8OFDFBcXw8zMTNkeGBio8p3R9NZnIiIiIiKi0URP2wEQkfYlJSUhKSlJ22EMOj8/P/j5+Wk7DBpkc+fOxdy5c7UdBhERERER0bDGnYpERERERERERESkERYViYiIiIiIiIiISCMsKhIREREREREREZFGWFQkIiIiIiIiIiIijQzLF7WcPXtW2yEQ9Vp1dTUAIC8vT8uRDB/dv3leMxrqqqurYWtrq+0wiIiIiIiIBpxIEARB20FoQiQSaTsEIiKip5o/fz7y8/O1HQYREREREdFAyh92OxWHWQ2UaEjLy8tDaGgof1dEREREREREpBE+U5GIiIiIiIiIiIg0wqIiERERERERERERaYRFRSIiIiIiIiIiItIIi4pERERERERERESkERYViYiIiIiIiIiISCMsKhIREREREREREZFGWFQkIiIiIiIiIiIijbCoSERERERERERERBphUZGIiIiIiIiIiIg0wqIiERERERERERERaYRFRSIiIiIiIiIiItIIi4pERERERERERESkERYViYiIiIiIiIiISCMsKhIREREREREREZFGWFQkIiIiIiIiIiIijbCoSERERERERERERBphUZGIiIiIiIiIiIg0wqIiERERERERERERaYRFRSIiIiIiIiIiItIIi4pERERERERERESkERYViYiIiIiIiIiISCMsKhIREREREREREZFGWFQkIiIiIiIiIiIijbCoSERERERERERERBphUZGIiIiIiIiIiIg0wqIiERERERERERERaYRFRSIiIiIiIiIiItIIi4pERERERERERESkERYViYiIiIiIiIiISCMsKhIREREREREREZFGWFQkIiIiIiIiIiIijbCoSERERERERERERBphUZGIiIiIiIiIiIg0oqftAIhocFRXV2Px4sXo7OxUtj148ADGxsZ47bXXVPq6uLjgf/7nfwY5QiIiIiIiIiIaLlhUJBolbG1tcfPmTZSXl6sd++tf/6ryz//2b/82WGERERERERER0TDE25+JRpH33nsP+vr6z+0XFhY2CNEQERERERER0XDFoiLRKPLOO++go6PjmX1efPFFuLm5DVJERERERERERDQcsahINIo4OjrC09MTIpHoicf19fWxePHiQY6KiIiIiIiIiIYbFhWJRpn33nsPurq6TzzW0dGB4ODgQY6IiIiIiIiIiIYbFhWJRpkFCxagq6tLrV1HRwdeXl6YMGHC4AdFRERERERERMMKi4pEo4y1tTWmT58OHR3Vn7+Ojg7ee+89LUVFRERERERERMMJi4pEo9C7776r1iYIAt5++20tRENEREREREREww2LikSj0Pz581Weq6irq4s33ngDlpaWWoyKiIiIiIiIiIYLFhWJRiEzMzO8+eabysKiIAhYtGiRlqMiIiIiIiIiouGCRUWiUWrRokXKF7bo6+sjMDBQyxERERERERER0XDBoiLRKDVnzhwYGhoCAAICAmBkZKTliIiIiIiIiIhouGBRkWiUkslkyt2JvPWZiIiIiIiIiDQhEgRB+HlDXl4eQkNDtRUPERERDaBf/GufiIiIiIioN/L1nnYkNzd3MAMhoic4e/YsUlNTB+z32NnZidzcXCxcuHBAxteW0NBQREVFwdvbW9uhEA0Z3X9PiIiIiIiI+sNTi4ohISGDGQcRPUVqauqA/h7nzZsHsVg8YONrQ2hoKLy9vfl3jOgXWFQkIiIiIqL+wmcqEo1yI62gSEREREREREQDj0VFIiIiIiIiIiIi0giLikRERERERERERKQRFhWJiIiIiIiIiIhIIywqEhER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Hx8fmTFjhhQUFOj0a868mZmZAqDRn7i4OL3nFRHJy8uT5557Ttzc3MTOzk4eeeQRSUlJaTCGUaNGibe3t9TW1ja5f+7F/E5ERERERAa0QyEicneRcceOHZg8eTLuaSYiE2iv/x9nzpyJnTt3oqioyNShNEihUCApKQnPPvtss/r/8ssv6N27NxITEzF16lQjR2d4tbW1eOyxxzBt2jS8/PLLpg6n1Uy1no6wH4uKiuDj44PY2FjMmzdPr23b6/GEiIiIiIg6pJ28/JmIWkSfB5u0d8HBwVi+fDmWL1+OsrIyU4ejl5qaGiQnJ6O0tBSRkZGmDqfVTLWejrIfly1bhv79+yM6OtrUoRARERERkYVjUZGICMDChQsxadIkREZG6v3QFlNKS0vD7t27kZKSAgcHB1OH02qmWk9H2I9r167FiRMncODAASiVSlOHQ0REREREFo5FRSLSy6JFi5CYmIhbt24hICAAu3btMnVIBrNy5UpER0fj/fffN3UozfbEE0/g888/h6enp6lDMQhTrae978e9e/fi9u3bSEtLg5ubm6nDISIiIiIigo2pAyCijmXVqlVYtWqVqcMwmuHDh2P48OGmDoNIx9ixYzF27FhTh0FERERERKTFMxWJiIiIiIiIiIhILywqEhERERERERERkV5YVCQiIiIiIiIiIiK9sKhIREREREREREREemn0QS2TJk1qyziIqAH5+fkA+P+xJT766CPs3LnT1GEQtRt1xxMiIiIiIiJDUIiI3N1w9OhRrF271lTxEFEbunLlCjIyMvDUU0+ZOhQiaiMsthMRERERkQHsrFdUJCLLsWPHDkyePBk8DBARERERERGRHnbynopERERERERERESkFxYViYiIiIiIiIiISC8sKhIREREREREREZFeWFQkIiIiIiIiIiIivbCoSERERERERERERHphUZGIiIiIiIiIiIj0wqIiERERERERERER6YVFRSIiIiIiIiIiItILi4pERERERERERESkFxYViYiIiIiIiIiISC8sKhIREREREREREZFeWFQkIiIiIiIiIiIivbCoSERERERERERERHphUZGIiIiIiIiIiIj0wqIiERERERERERER6YVFRSIiIiIiIiIiItILi4pERERERERERESkFxYViYiIiIiIiIiISC8sKhIREREREREREZFeWFQkIiIiIiIiIiIivbCoSERERERERERERHphUZGIiIiIiIiIiIj0wqIiERERERERERER6YVFRSIiIiIiIiIiItILi4pERERERERERESkFxYViYiIiIiIiIiISC8sKhIREREREREREZFeWFQkIiIiIiIiIiIivbCoSERERERERERERHphUZGIiIiIiIiIiIj0wqIiERERERERERER6YVFRSIiIiIiIiIiItKLjakDIKK2odFoUFZWptNWXl4OALh586ZOu0KhgKura5vFRkREREREREQdC4uKRBbixo0b8Pb2Rk1NTb3X3N3ddf49bNgwHDp0qK1CIyIiIiIiIqIOhpc/E1mIrl274ne/+x2srJr+b69QKPDcc8+1UVRERERERERE1BGxqEhkQV544YX79rG2tsb48ePbIBoiIiIiIiIi6qhYVCSyIBMmTICNTeN3PbC2tsbIkSPRqVOnNoyKiIiIiIiIiDoaFhWJLIharcZTTz3VaGFRRDB16tQ2joqIiIiIiIiIOhoWFYkszNSpUxt8WAsA2Nra4plnnmnjiIiIiIiIiIioo2FRkcjCPPPMM3BwcKjXrlQqERERAUdHRxNERUREREREREQdCYuKRBZGpVJh/PjxUCqVOu0ajQbPP/+8iaIiIiIiIiIioo6ERUUiCzRlyhRoNBqdNrVajd///vcmioiIiIiIiIiIOhIWFYks0JNPPgl3d3ftv5VKJZ577jnY2tqaMCoiIiIiIiIi6ihYVCSyQDY2Nnjuuee0l0BrNBpMmTLFxFERERERERERUUfBoiKRhXruuee0l0B37doVQ4YMMXFERERERERERNRRsKhIZKHCwsLg7e0NAHjxxRdhZcXDARERERERERE1j42pA9ixY4epQyCyWAMHDsSlS5fQqVMn/l8kMhFfX1+EhoYaZeyjR48iLy/PKGMTEVH7FRYWBh8fH6OMzc+MRESW6dlnn63XphARMUEs/wtAoTDl9ERERCY1ceJE7Ny50yhjT5o0Cbt27TLK2ERE1H4lJSU1+OXPEPj9jYjIMjVQPtxp8jMVAeMmPSJDmzRpEgAYrQjQ1nbt2oWJEycadY4dO3Zg8uTJDR2EiCxa3fHEmIxZtCQyNuaPllEoFPx8bcHaoujH3y/qyMzt+1xbYD62bHXvf0N4EzUiC2fsgiIRERERERERmR8WFYmIiIiIiIiIiEgvLCoSERER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RS20YT75+flCJpOJNWvWKNoaGjfXW9NjfrQvP7VYVCSiViSe25+JiIhIJ6jyYAJtVl5ejqNHj+LGjRuKBwV4enpi+fLlWL58OUpKSjQcoWpqamqwf/9+FBcXIzQ0VNPhvDRtmc/SpUvRs2dPhIeHA1Atbq63psf8aFd+hBDIzc1FUlISbt68qeHoiIiaD4uKRERERFqkoKAAw4YNQ6dOnfDhhx8q2hcsWIBx48YhNDRU5Yc0aNKJEyewd+9eJCQkwMTERNPhvDRtmM/atWtx+fJlfPfdd5BKpQBUj5vrrekwP9qXnwMHDsDJyQkDBw7Et99+q+EIiYiaj0QIITQdBBERtRzx8fEICQkBvx6oPi1xfSxcuBCff/45Kisr4erqitWrV+NPf/qTpsNSIpFIEBcXh/Hjxzf5ub7//nscO3YMK1eubPJzkfY5cOAA0tLS8Mknn9R5KEdjcL2pF/PTsqk7P8/TEr9viYj+YDeLikREpIS/xNLzcH00TnMWFYmISPvx+5aItMBubn8mIiIiIiIiIiIilbCoSERERERERERERCphUZGIiIiIiIiIiIhUwqIiERERERERERERqcRA0wEQEVHLFB8fr+kQqAU6e/YsAK6Pxqj97IiIiF6E3xlEpA349GciIlJS+7RBIiIiItIs/rlORC3YbhYViYiIiEin1P7jCH/NJSIiImoyu3lPRSIiIiIiIiIiIlIJi4pERERERERERESkEhYViYiIiIiIiIiISCUsKhIREREREREREZFKWFQkIiIiIiIiIiIilbCoSERERERERERERCphUZGIiIiIiIiIiIhUwqIiERERERERERERqYRFRSIiIiIiIiIiIlIJi4pERERERERERESkEhYViYiIiIiIiIiISCUsKhIREREREREREZFKWFQkIiIiIiIiIiIilbCoSERERERERERERCphUZGIiIiIiIiIiIhUwqIiERERERERERERqYRFRSIiIiIiIiIiIlIJi4pERERERERERESkEhYViYiIiIiIiIiISCUsKhIREREREREREZFKWFQkIiIiIiIiIiIilbCoSERERERERERERCphUZGIiIiIiIiIiIhUwqIiERERERERERERqYRFRSIiIiIiIiIiIlIJi4pERERERERERESkEhYViYiIiIiIiIiISCUsKhIREREREREREZFKWFQkIiIiIiIiIiIilbCoSERERERERERERCphUZGIiIiIiIiIiIhUwqIiERERERERERERqYRFRSIiIiIiIiIiIlKJgaYDICIiIiJqrJycHEyaNAk1NTWKtkePHsHc3Byvv/66Ut/OnTvjH//4RzNHSERERKSbWFQkIiIiIq3l7OyMzMxMpKen13nv5MmTSv/92muvNVdYRERERDqP25+JiIiISKu9//77kEqlL+wXGhraDNEQERERtQ4sKhIRERGRVnv33XdRXV393D7e3t7w8vJqpoiIiIiIdB+LikRERESk1Tw8PNC9e3dIJJJ635dKpZg0aVIzR0VERESk21hUJCIiIiKt9/7770NfX7/e96qrqzFu3LhmjoiIiIhIt7GoSERERERab8KECZDL5XXa9fT00L9/f7i6ujZ/UEREREQ6jEVFIiIiItJ6jo6O8Pf3h56e8q+3enp6eP/99zUUFREREZHuYlGRiIiIiHTCe++9V6dNCIG3335bA9EQERER6TYWFYmIiIhIJ/zpT39Suq+ivr4+AgMDYWdnp8GoiIiIiHQTi4pEREREpBOsra0xZMgQRWFRCIGJEydqOCoiIiIi3cSiIhERERHpjIkTJyoe2CKVSjFmzBgNR0RERESkm1hUJCIiIiKdMWrUKBgZGQEARo4cCTMzMw1HRERERKSbWFQkIiIiIp1hamqquDqRW5+JiIiImo5ECCE0HQQRERE1r/j4eISEhGg6DCIiaiT+GUdERBq220DTERAREZHmxMXFaToEamLr1q0DAMycOVPDkTSfmpoaxMXF4Z133mnU8WfPnkVMTAz//0EtUu36JCIi0jQWFYmIiFqx8ePHazoEamK7d+8G0PpyHRwcDJlM1ujjY2JiWt1nRtqDRUUiImoJeE9FIiIiItI5L1NQJCIiIqIXY1GRiIiIiIiIiIiIVMKiIhEREREREREREamERUUiIiIiIiIiIiJSCYuKREREREREREREpBIWFYmIiIjohb777jtYWlri0KFDmg6lxUtMTMSCBQuwd+9euLu7QyKRQCKR4L333qvTd+jQoTA3N4e+vj68vb1x6dIlDUTcMLo2HwBYvnw5vLy8YGFhASMjI3h6euKTTz5BSUmJUr+oqCjFvJ9+devWrc6YVVVVWLFiBTw9PWFoaAgrKyt069YNGRkZAICDBw9i1apVqKmpaY4pEhERNRkWFYmIiIjohYQQmg5BK/ztb3/D+vXrsXDhQowdOxa3bt2Ch4cH2rRpgx07duDbb79V6v/9999j9+7dGDlyJFJTU9GrVy8NRf5iujYfADh27BimT5+OjIwM5OfnY8WKFYiJicG4ceMaPWZISAj+/e9/4z//+Q/Kysrw66+/wsPDQ1GoHDVqFGQyGQYPHozCwkJ1TYWIiKjZsahIRERERC8UFBSEx48fY+TIkZoOBeXl5fDz89N0GHWsXLkSu3btQnx8PMzNzZXeW79+PfT09BAWFobHjx9rKEL10ZX5mJmZISwsDDY2NjA3N8f48eMRHByMI0eOIDs7W6nv9u3bIYRQev3yyy9KfXbt2oX9+/dj9+7d6NevHwwMDODo6IgDBw4oXdU4Y8YM9OjRA8OHD0d1dXWzzJWIiEjdWFQkIiIiIq2ydetWPHjwQNNhKLl58yYWL16MZcuWQSaT1Xnfz88PERERuHPnDubMmaOBCNVLV+Zz+PBh6OvrK7W1bdsWAFBWVqbyeJs2bUKvXr3g4+Pzwr5Lly7F5cuXERMTo/J5iIiIWgIWFYmIiIjouZKSkuDi4gKJRIIvvvgCALBx40aYmprCxMQEBw4cwFtvvQULCws4Oztj586dimPXr18PmUwGOzs7TJkyBY6OjpDJZPDz88P58+cV/cLDw2FoaAgHBwdF21/+8heYmppCIpEgPz8fABAREYHZs2cjPT0dEokEnp6eAIAjR47AwsIC0dHRzfGR1LF+/XoIITBq1Khn9omKikKnTp3w1VdfITEx8bnjCSGwdu1adO3aFUZGRrC2tsaYMWNw7do1RZ+G5gAAampqsGTJEri4uMDY2Bjdu3dHXFzcS81Z1+ZT686dOzA2Noabm5tKx1VWVuLcuXPo2bNng/pbW1sjICAAMTExvL0AERFpJRYViYiIiOi5BgwYgDNnzii1TZs2DTNnzkR5eTnMzc0RFxeH9PR0uLu74+OPP0ZVVRWA34uFkydPRllZGWbMmIGMjAxcunQJ1dXVGDJkiGKL6fr16zF+/Hilc8TGxmLZsmVKbTExMRg5ciQ8PDwghMDNmzcBQPHQC7lc3iSfwYt8++236Ny5M0xMTJ7Zx9jYGP/85z+hp6eHjz/+GKWlpc/su3TpUixYsACffvopHjx4gFOnTiE7OxsDBw7E/fv3ATQ8BwAwf/58fPbZZ1i3bh3u3r2LkSNH4p133sHPP//c6Dnr2nyA369OPHbsGD7++GMYGhoqvbdgwQJYW1vD0NAQbm5uGDNmDC5cuKB4Pzc3F5WVlbh48SIGDRqkKKB37doVsbGx9RYOX3nlFdy5cwdXrlx5qbiJiIg0gUVFIiIiInopfn5+sLCwgK2tLUJDQ1FaWoqsrCylPgYGBoqr1Ly8vLBx40YUFxdj27ZtaokhKCgIRUVFWLx4sVrGU0VpaSlu374NDw+PF/b19fXFzJkzkZGRgfnz59fbp7y8HGvXrsXbb7+NiRMnwtLSEj4+Pti8eTPy8/Px5Zdf1jnmeTmoqKjAxo0bERwcjLFjx8LKygqLFi2CVCp96c9f1+azYsUKODo6IioqSql90qRJOHjwILKzs1FSUoKdO3ciKysLAQEBSE1NBQDFg1hsbW0RHR2N1NRU3L9/H2PGjMH06dPx9ddf1zlfx44dAQApKSkvFTcREZEmsKhIRERERGpTe3XX01eV1adPnz4wMTFR2v6qrR48eAAhxHOvUnxaVFQUOnfujNjYWCQlJdV5PzU1FSUlJejTp49Se9++fWFoaKi0bbw+f8zB9evXUVZWpvSgEGNjYzg4OKjl89eV+ezbtw/x8fE4evRonQfttG/fHq+88grMzMxgaGiI/v37Y9u2bSgvL0dsbCwAwMjICADg7e0NPz8/2NjYwNLSEsuWLYOlpWW9xdPaNVN7tSYREZE2YVGRiIiIiDTCyMgIeXl5mg7jpVVUVAD4X1HpRWQyGbZt2waJRIIPP/wQ5eXlSu8XFhYC+P3JxH9kZWWF4uJileKr3Za8aNEiSCQSxSszM7NRDyP5I12Yz65du7By5UqcOHECrq6uDTrGx8cH+vr6+O233wAAjo6OAKC4/2ctQ0NY/DdDAAAWM0lEQVRDdOjQAenp6XXGMDY2BvC/NURERKRNWFQkIiIiomZXVVWFwsJCODs7azqUl1ZbGKq9r2ND+Pr6YtasWbhx4wYiIyOV3rOysgKAeottjfnMbG1tAQDr1q2DEELpdfbsWZXGehZtns+GDRuwY8cOHDt2DO3atWvwcXK5HHK5XFFMNjMzQ8eOHZGWllanb3V1NSwtLeu0V1ZWAvjfGiIiItImLCoSERERUbM7ceIEhBDo37+/os3AwOCF26ZbIjs7O0gkEjx+/Fil4yIjI9GlSxckJycrtXfr1g1mZmZ1Hjpy/vx5VFZWonfv3iqdp3379pDJZLh8+bJKx6lK2+YjhMC8efOQkpKC/fv313slZa0333yzTtuFCxcghICvr6+iLSQkBMnJybh165airaysDJmZmfDx8akzRu2asbe3f5mpEBERaQSLikRERETU5ORyOR49eoTq6mpcvXoVERERcHFxweTJkxV9PD09UVBQgP3796Oqqgp5eXnIzMysM5aNjQ1yc3ORkZGB4uJiVFVVISEhARYWFoiOjm7GWf3OxMQE7u7uyMnJUem42m3D+vr6ddpnz56Nffv2YceOHSgqKkJKSgqmTp0KR0dHhIWFqXyeDz74ADt37sTGjRtRVFSEmpoa5OTk4O7duwCA0NBQ2Nvb49KlSyqNrc3zSUtLw2effYYtW7ZAKpUqbaWWSCRYs2aNou+dO3ewa9cuFBYWoqqqCmfPnsVHH30EFxcXTJ06VdFv1qxZ6NChAyZPnoysrCw8fPgQ8+bNQ3l5eb0PsqldM/UVHImIiFo6FhWJiIiI6Lm++OIL9O3bFwAwb948jB49Ghs3bsS6desAAN27d8etW7ewZcsWzJ49GwAwbNgw3LhxQzFGRUUFfHx8YGxsjIEDB6JTp044fvy40n0Ip02bhkGDBmHChAno3LkzIiMjFdtCfX19kZ2dDQCYOnUq7Ozs4OXlheHDh6OgoKBZPofnCQoKQur/b+/eY7q67z+OP78i+OWLIBRRCegUmZcKFNu6KMbIYse0DLVDhBmXotF4WxF0i5dhtQg47ALETdLUdmxZOwS0lTZW05mOrkuks1FnR2MFnBeUisULF1ERzu+PBrbvD618uR2gr0dy/jnncz7v9/ucA+I751Jaavc+wXfffZfAwEAqKiqYNm0aL730Urv9pk+fzoYNG9qt3759O+np6aSkpDB8+HBmz57N2LFjKS4uxs3NDcChc5CdnU1SUhIZGRl4e3vj6+tLYmIiN2/eBL55DLe6upqioqJH1jjQ6jEM45Hb/r+5c+eSnJyMv78/NpuNxYsXM3PmTEpKSvD29m4b5+XlxSeffIK/vz+hoaH4+fnxz3/+k8OHDxMaGtpu3hMnTuDn50dISEiHcxEREekrLIYj/5qKiIjIgFBQUEBsbKxD/6mW/ikmJgaAwsJC03JYvXo1hYWF1NTUmJaDIzrz81FeXs7kyZPJzc1l6dKlPZhdz2hpaSE8PJz4+HiWL19udjpd1h/qqampwd/fn9TU1LbGaUfo97eIiPQRhbpTUURERER6nCMfMemPAgMDSUlJISUlhfr6erPTcUhzczOHDh2irq6OuLg4s9Ppsv5Sz44dOwgNDSUhIcHsVERERDpFTUURERHplBUrVuDu7o7FYunxD0D0hIMHDxIQENDuPWouLi6MGDGC8PBwXn311bbHKUUeZ8uWLcTExBAXF+fwR1vMVFxczMGDBzly5Ag2m83sdLqsP9STmZnJ6dOn+eCDD3B2djY7HRERkU5RU1FEREQ65Y033mDfvn1mp9Fp0dHRnD9/nvHjxzNs2DAMw6ClpYXq6moKCgoYN24cmzZtYsqUKe2+Wisdt3XrVnJzc7l9+zbjxo3jwIEDZqfUo9LS0khISGDXrl1mp9Jhc+bM4e2332bUqFFmp9It+no9RUVF3Lt3j+LiYry8vMxOR0REpNMGm52AiIiISF9hsVjw9PQkPDyc8PBwIiMjiY2NJTIyknPnzjFs2DCzU+x30tPTSU9PNzuNXhUREUFERITZaUgftWDBAhYsWGB2GiIiIl2mOxVFRESk0ywWi9kp9KhFixYRHx9PdXU1r732mtnpiIiIiIj0GWoqioiISIcYhsGrr77KxIkTGTJkCMOGDeNXv/pVu3HNzc28/PLLjBkzBldXV0JCQsjPzwcgJycHNzc3bDYbRUVFzJs3Dw8PD/z9/cnLy7Ob5+OPP+YHP/gBNpsNDw8PgoODqa2tfWwMgKNHj+Lh4UFaWlqX646PjwfgyJEjfapGEREREREzqakoIiIiHbJt2zY2bdrEqlWruHbtGl999RWbN29uN27z5s3s3r2brKwsqqqqiIqKYsmSJXz22WesXbuWpKQkGhsbcXd3Jz8/n4qKCgICAli5ciVNTU0ANDQ0MH/+fBYtWsSNGzcoKytjwoQJ3L9//7Ex4L9fGm5paely3aGhoQCcP3++T9UoIiIiImImNRVFRETksRobG8nKyuK5555jw4YNeHp64urqyhNPPGE37u7du+Tk5PDCCy8QHR2Np6cnycnJODs7k5ubazc2LCwMDw8PfHx8iIuLo6GhgUuXLgFw4cIFamtrmTJlClarlZEjR3Lw4EGGDx/eoRiRkZHU1taybdu2Ltfe+oXrurq6PlWjiIiIiIiZ9KEWEREReazy8nLu3LnDnDlzvnXcl19+yZ07dwgKCmpb5+rqyqhRozh79uwj93NxcQFou4svICCAESNGsHTpUtavX098fDxjx47tUozOamhowDAMPDw8uhTfzBorKyspKChweL/vquPHjwPomEmf1Hp9ioiImE1NRREREXmsyspKAHx8fL51XENDAwDJyckkJyfbbfP19e1wPFdXVz766CM2b95MWloaKSkpLF68mNzc3G6L0VHnzp0DYNKkSUD/rLGkpITY2FiH9/uu0zETEREReTQ9/iwiIiKPZbVaAbh37963jmttOmZlZWEYht3i6N01U6ZM4f333+fq1ats2rSJ/Px8fvvb33ZrjI44evQoAPPmzQP6Z42LFi1qN4+WRy+tH8QxOw8tWh626INNIiLSV6ipKCIiIo8VFBTEoEGD+Pjjj7913OjRo7FarZw+fbpL8a5evcoXX3wBfNPE27VrF08//TRffPFFt8XoiK+++oqsrCz8/f1Zvnw5MPBqFBERERHpDDUVRURE5LF8fHyIjo7mwIEDvPnmm9TW1nLmzBlef/11u3FWq5Vly5aRl5dHTk4OtbW1NDc3U1lZSVVVVYfjXb16ldWrV3P27Fnu37/PqVOnuHjxItOnT+9QjCNHjuDh4UFaWlqH4hmGQX19PS0tLRiGwfXr18nPz2fmzJk4OTlx6NChtncq9pUaRURERETMpKaiiIiIdMgf/vAHli1bxqZNm/Dz82PdunXMmjULgKioKM6cOQNAdnY2SUlJZGRk4O3tja+vL4mJidy8eZOcnByysrIACAkJ4fz58+zbt4+NGzcCMHfuXMrKyvDx8aG5uZmwsDBsNhs/+clPWL16Nb/4xS8eG6Oj3n//fZ566imqqqq4e/cuw4YNw8nJCScnJyZMmEBmZibx8fGUlpbyzDPP2O3bX2oUEREREekpFsMwDLOTEBERkd5VUFBAbGws+jNg4IuJiQGgsLDQ5Ez6D/18SF+m61NERPqIQt2pKCIiIiIiIiIiIg5RU1FEREREREREREQcoqaiiIiIiEgPO3bsGFu2bOHgwYMEBARgsViwWCz8/Oc/bzc2IiICd3d3nJycmDJlCidPnjQh444ZaPUAZGRkMGnSJFxdXXFzc2PSpEls27aN2tpau3Gpqaltdf/vEhQU1DbmvffeIyMjg+bm5t4uQ0REpMepqSgiIiIi0oO2b9/Onj172Lp1K9HR0Zw/f57x48fj7e3NW2+9xeHDh+3Gf/jhhxQWFhIVFUVpaSlPP/20SZk/3kCrB+CTTz5h5cqVXLp0iWvXrrFz504yMjJYtGiRw3PNnz8fq9XKnDlzuHXrVg9kKyIiYh41FUVERESkRzU2NhIWFtbvY3TGb37zG/bv309BQQHu7u522/bs2cOgQYNYtWoVt2/fNinD7jNQ6nFxcWHdunX4+PgwdOhQYmJiWLhwIX/961+pqqqyG/vnP/8ZwzDsln//+992Y9avX89TTz3F888/z4MHD3qzFBERkR6lpqKIiIiI9Kg333yT6urqfh/DUeXl5Wzbto1XXnkFq9XabntYWBiJiYlcuXKFX/7ylyZk2L0GSj3vvPNOu/Pl5+cHQH19fafm3LFjB6dPnyY7O7vL+YmIiPQVaiqKiIiIiB3DMMjMzGTy5MkMGTIELy8vFi5cyNmzZ9vGJCQk4OLiwqhRo9rWrVu3Djc3NywWC19//TUAiYmJbNy4kYqKCiwWC4GBgezZswer1cqIESNYvXo1vr6+WK1WwsLC+PTTT7slBsDRo0fx8PAgLS2tR4/Xo+zZswfDMJg/f/4jx6SmpjJhwgTeeOMNjh079q3zdeS85OTk4Obmhs1mo6ioiHnz5uHh4YG/vz95eXl28zU3N/Pyyy8zZswYXF1dCQkJIT8/v0s1D7R6WpWVleHp6cn3vve9Tu3v5eXF7Nmzyc7OxjCMbslJRETEbGoqioiIiIidHTt2sGXLFn79619TXV3N3//+dy5fvsysWbO4du0a8E3DbPHixXb77d27l1deecVuXXZ2NlFRUYwfPx7DMCgvLychIYH4+Hju3LnD+vXruXDhAidPnuTBgwf86Ec/4vLly12OAbR9HKOlpaX7Do4DDh8+zMSJE7HZbI8c4+rqyh//+EcGDRrEypUraWhoeOTYjpyXtWvXkpSURGNjI+7u7uTn51NRUUFAQAArV66kqampbb7Nmzeze/dusrKyqKqqIioqiiVLlvDZZ591uuaBVE9TUxNXrlzh97//PceOHeN3v/sdLi4udmO2bNmCl5cXLi4ujBs3joULF3LixImHzjd16lSuXLnCv/71r07lIyIi0teoqSgiIiIibRobG8nMzOSnP/0pS5cuZdiwYQQHB/Paa6/x9ddf8/rrr3dbrMGDB7fdpfbkk0+Sk5NDXV0dubm53TJ/ZGQktbW1bNu2rVvmc0RDQwP/+c9/GD9+/GPHzpgxg6SkJC5cuMDmzZsfOqYz5yUsLAwPDw98fHyIi4ujoaGBS5cuAXD37l1ycnJ44YUXiI6OxtPTk+TkZJydnbt8/AdKPaNHj8bf358dO3awe/duYmNj7ba/+OKLvPfee1y+fJn6+nry8vK4dOkSs2fPprS0tN183//+9wH4/PPPO5WPiIhIX6OmooiIiIi0KS0tpb6+nmeffdZu/bRp03BxcbF7PLm7Pfvss9hsNrvHX/ur6upqDMP41rsU/1dqaioTJ05k7969/OMf/2i3vavnpfUOu9Y7+7788kvu3LlDUFBQ2xhXV1dGjRrVLcd/INRz+fJlqqur+ctf/sKf/vQnpk6davfeztGjRzN16lSGDh2Ki4sL06dPJzc3l8bGRvbu3dtuvtZrofUuTBERkf5OTUURERERaXPr1i0Ahg4d2m6bp6cndXV1PRp/yJAhXL9+vUdj9Ia7d+8C39TTEVarldzcXCwWC8uXL6exsdFue3efl9bHkpOTk7FYLG3LxYsXuXPnjkNzPcxAqMfZ2RkfHx8iIiLYv38/paWlpKenf+s+wcHBODk5ce7cuXbbXF1dgf9eGyIiIv2dmooiIiIi0sbT0xPgoU2dW7du4e/v32Oxm5qaejxGb2ltILW+17EjZsyYwYYNGygrK2Pnzp1227r7vPj4+ACQlZWFYRh2y/Hjxx2a61EGUj2BgYE4OTk99LHm/9XS0kJLS8tDm8n3798H/nttiIiI9HdqKoqIiIhIm6CgIIYOHdru4xaffvop9+/f55lnnmlbN3jwYLsPZXRVcXExhmEwffr0HovRW0aMGIHFYuH27dsO7bdz504mTZrEqVOn7NY7cl46YvTo0VitVk6fPu3Qfo7qb/XU1NSwZMmSduvLyspobm5m9OjRbet+/OMftxt34sQJDMNgxowZ7ba1XgsjR47sUo4iIiJ9hZqKIiIiItLGarWyceNG3nnnHd566y1qa2v5/PPPWbNmDb6+vqxataptbGBgIDdu3ODQoUM0NTVx/fp1Ll682G7OJ554gqtXr3LhwgXq6uramoQtLS3cvHmTBw8ecObMGRITExkzZgzx8fHdEuPIkSN4eHiQlpbW/QfqMWw2GwEBAVRWVjq0X+tjw05OTu3Wd/S8dDTOsmXLyMvLIycnh9raWpqbm6msrKSqqgqAuLg4Ro4cycmTJx2auz/X4+bmxocffshHH31EbW0tTU1NnDp1ihdffBE3Nzc2bNjQNvbKlSvs37+fW7du0dTUxPHjx1mxYgVjxoxhzZo17eZuvRaCg4Mdqk1ERKSvUlNRREREROxs376d9PR0UlJSGD58OLNnz2bs2LEUFxfj5ubWNm7t2rX88Ic/5Gc/+xkTJ05k586dbY92zpgxg8uXLwOwZs0aRowYwZNPPsnzzz/PjRs3gG/eLRccHIyrqyuzZs1iwoQJ/O1vf7N7dLSrMcwUGRlJaWmp3fsE3333XQIDA6moqGDatGm89NJL7fabPn26XfOqVUfOS05ODllZWQCEhIRw/vx59u3bx8aNGwGYO3cuZWVlAGRnZ5OUlERGRgbe3t74+vqSmJjIzZs3gW8e162urqaoqOiRNQ60eqxWKzNnzmTFihX4+fnh7u5OTEwMY8eOpaSkxO5DMHPnziU5ORl/f39sNhuLFy9m5syZlJSU4O3t3W7uEydO4OfnR0hIyCPji4iI9CcWwzAMs5MQERGR3lVQUEBsbCz6M2Dgi4mJAaCwsNDkTOytXr2awsJCampqzE6lne76+SgvL2fy5Mnk5uaydOnSbsqu97S0tBAeHk58fDzLly83O50uM7Oempoa/P39SU1NbWuIdpZ+f4uISB9RqDsVRURERMQUjnzEpD8KDAwkJSWFlJQU6uvrzU7HIc3NzRw6dIi6ujri4uLMTqfLzK5nx44dhIaGkpCQ0OuxRUREeoqaiiIiIiIiPWTLli3ExMQQFxfn8EdbzFRcXMzBgwc5cuQINpvN7HS6zMx6MjMzOX36NB988AHOzs69GltERKQnqakoIiIiIr1q69at5Obmcvv2bcaNG8eBAwfMTqlHpaWlkZCQwK5du8xOpcPmzJnD22+/zahRo8xOpVuYVU9RURH37t2juLgYLy+vXo0tIiLS0wabnYCIiIiIfLekp6eTnp5udhq9KiIigoiICLPTkF62YMECFixYYHYaIiIiPUJ3KoqIiIiIiIiIiIhD1FQUERERERERERERh6ipKCIiIiIiIiIiIg5RU1FEREREREREREQcog+1iIiIfIfFxMSYnYL0sJKSEkDn2hGVlZWAjpn0Ta3Xp4iIiNkshmEYZichIiIivev48eNkZmaanYaIiHRSYWGh2SmIiMh3W6GaiiIiIiIiIiIiIuKIQr1TUURERERERERERByipqKIiIiIiIiIiIg4RE1FERERERERERERcYiaiiIiIiIiIiIiIuKQ/wP090R5yPNeGQAAAABJRU5ErkJggg==\n",
|
|
2337
|
+
"text/plain": [
|
|
2338
|
+
"<IPython.core.display.Image object>"
|
|
2339
|
+
]
|
|
2340
|
+
},
|
|
2341
|
+
"metadata": {},
|
|
2342
|
+
"execution_count": 74
|
|
2343
|
+
}
|
|
2344
|
+
]
|
|
2345
|
+
},
|
|
2346
|
+
{
|
|
2347
|
+
"cell_type": "code",
|
|
2348
|
+
"metadata": {
|
|
2349
|
+
"id": "CP-O29K3zeut"
|
|
2350
|
+
},
|
|
2351
|
+
"source": [
|
|
2352
|
+
"def predict_target(input_string):\n",
|
|
2353
|
+
" # convert for encoding \n",
|
|
2354
|
+
" input_data = np.zeros((1, max_encoder_seq_length, num_encoder_tokens), dtype='float32')\n",
|
|
2355
|
+
" for t, char in enumerate(input_string):\n",
|
|
2356
|
+
" input_data[0, t, input_token_index[char]] = 1.\n",
|
|
2357
|
+
"\n",
|
|
2358
|
+
" # Encode the input as state vectors.\n",
|
|
2359
|
+
" states_value = encoder_model(input_data)\n",
|
|
2360
|
+
"\n",
|
|
2361
|
+
" # Generate empty target sequence of length 1.\n",
|
|
2362
|
+
" target_seq = np.zeros((1, 1, num_decoder_tokens), dtype='float32')\n",
|
|
2363
|
+
" # Populate the first character of target sequence with the start character.\n",
|
|
2364
|
+
" target_seq[0, 0, target_token_index['^']] = 1.0\n",
|
|
2365
|
+
"\n",
|
|
2366
|
+
" stop_condition = False\n",
|
|
2367
|
+
" decoded_sentence = \"\"\n",
|
|
2368
|
+
"\n",
|
|
2369
|
+
" while True:\n",
|
|
2370
|
+
" output_tokens, d_h, d_c = decoder_model.predict([target_seq] + states_value)\n",
|
|
2371
|
+
" # Sample a token\n",
|
|
2372
|
+
" sampled_token_index = np.argmax(output_tokens[0, -1, :])\n",
|
|
2373
|
+
" sampled_char = reverse_target_char_index[sampled_token_index]\n",
|
|
2374
|
+
"\n",
|
|
2375
|
+
" # Exit condition: either hit max length\n",
|
|
2376
|
+
" # or find stop character.\n",
|
|
2377
|
+
" if sampled_char == \"$\" or len(decoded_sentence) > max_decoder_seq_length:\n",
|
|
2378
|
+
" break\n",
|
|
2379
|
+
" \n",
|
|
2380
|
+
" decoded_sentence += sampled_char\n",
|
|
2381
|
+
"\n",
|
|
2382
|
+
" # Update the target sequence (of length 1).\n",
|
|
2383
|
+
" target_seq = np.zeros((1, 1, num_decoder_tokens))\n",
|
|
2384
|
+
" target_seq[0, 0, sampled_token_index] = 1.0\n",
|
|
2385
|
+
"\n",
|
|
2386
|
+
" # Update states\n",
|
|
2387
|
+
" states_value = [d_h, d_c]\n",
|
|
2388
|
+
" return decoded_sentence"
|
|
2389
|
+
],
|
|
2390
|
+
"execution_count": 75,
|
|
2391
|
+
"outputs": []
|
|
2392
|
+
},
|
|
2393
|
+
{
|
|
2394
|
+
"cell_type": "code",
|
|
2395
|
+
"metadata": {
|
|
2396
|
+
"id": "0O9eWBgtvGeM",
|
|
2397
|
+
"colab": {
|
|
2398
|
+
"base_uri": "https://localhost:8080/",
|
|
2399
|
+
"height": 35
|
|
2400
|
+
},
|
|
2401
|
+
"outputId": "1d910d26-b1d5-42ec-9821-315303fa19fc"
|
|
2402
|
+
},
|
|
2403
|
+
"source": [
|
|
2404
|
+
"test_input = 'राजशेखर'\n",
|
|
2405
|
+
"predicted_string = predict_target(test_input)\n",
|
|
2406
|
+
"predicted_string"
|
|
2407
|
+
],
|
|
2408
|
+
"execution_count": 76,
|
|
2409
|
+
"outputs": [
|
|
2410
|
+
{
|
|
2411
|
+
"output_type": "execute_result",
|
|
2412
|
+
"data": {
|
|
2413
|
+
"application/vnd.google.colaboratory.intrinsic+json": {
|
|
2414
|
+
"type": "string"
|
|
2415
|
+
},
|
|
2416
|
+
"text/plain": [
|
|
2417
|
+
"'rajasekhar'"
|
|
2418
|
+
]
|
|
2419
|
+
},
|
|
2420
|
+
"metadata": {},
|
|
2421
|
+
"execution_count": 76
|
|
2422
|
+
}
|
|
2423
|
+
]
|
|
2424
|
+
},
|
|
2425
|
+
{
|
|
2426
|
+
"cell_type": "code",
|
|
2427
|
+
"metadata": {
|
|
2428
|
+
"colab": {
|
|
2429
|
+
"base_uri": "https://localhost:8080/",
|
|
2430
|
+
"height": 35
|
|
2431
|
+
},
|
|
2432
|
+
"id": "Uy2yjJXZ0MdK",
|
|
2433
|
+
"outputId": "0e9bedd2-7365-4d6c-9c67-eab5d0d4e56f"
|
|
2434
|
+
},
|
|
2435
|
+
"source": [
|
|
2436
|
+
"test_input = 'गौरव'\n",
|
|
2437
|
+
"predicted_string = predict_target(test_input)\n",
|
|
2438
|
+
"predicted_string"
|
|
2439
|
+
],
|
|
2440
|
+
"execution_count": 79,
|
|
2441
|
+
"outputs": [
|
|
2442
|
+
{
|
|
2443
|
+
"output_type": "execute_result",
|
|
2444
|
+
"data": {
|
|
2445
|
+
"application/vnd.google.colaboratory.intrinsic+json": {
|
|
2446
|
+
"type": "string"
|
|
2447
|
+
},
|
|
2448
|
+
"text/plain": [
|
|
2449
|
+
"'gaurav'"
|
|
2450
|
+
]
|
|
2451
|
+
},
|
|
2452
|
+
"metadata": {},
|
|
2453
|
+
"execution_count": 79
|
|
2454
|
+
}
|
|
2455
|
+
]
|
|
2456
|
+
},
|
|
2457
|
+
{
|
|
2458
|
+
"cell_type": "code",
|
|
2459
|
+
"metadata": {
|
|
2460
|
+
"colab": {
|
|
2461
|
+
"base_uri": "https://localhost:8080/",
|
|
2462
|
+
"height": 35
|
|
2463
|
+
},
|
|
2464
|
+
"id": "q8W7E0Kzka0e",
|
|
2465
|
+
"outputId": "bacc696d-b934-46ea-d7f4-74e063c07836"
|
|
2466
|
+
},
|
|
2467
|
+
"source": [
|
|
2468
|
+
"test_input = 'सूद'\n",
|
|
2469
|
+
"predicted_string = predict_target(test_input)\n",
|
|
2470
|
+
"predicted_string"
|
|
2471
|
+
],
|
|
2472
|
+
"execution_count": 78,
|
|
2473
|
+
"outputs": [
|
|
2474
|
+
{
|
|
2475
|
+
"output_type": "execute_result",
|
|
2476
|
+
"data": {
|
|
2477
|
+
"application/vnd.google.colaboratory.intrinsic+json": {
|
|
2478
|
+
"type": "string"
|
|
2479
|
+
},
|
|
2480
|
+
"text/plain": [
|
|
2481
|
+
"'sod'"
|
|
2482
|
+
]
|
|
2483
|
+
},
|
|
2484
|
+
"metadata": {},
|
|
2485
|
+
"execution_count": 78
|
|
2486
|
+
}
|
|
2487
|
+
]
|
|
2488
|
+
},
|
|
2489
|
+
{
|
|
2490
|
+
"cell_type": "code",
|
|
2491
|
+
"metadata": {
|
|
2492
|
+
"id": "NeUfRfSlyGX4"
|
|
2493
|
+
},
|
|
2494
|
+
"source": [
|
|
2495
|
+
""
|
|
2496
|
+
],
|
|
2497
|
+
"execution_count": null,
|
|
2498
|
+
"outputs": []
|
|
2499
|
+
}
|
|
2500
|
+
]
|
|
2501
|
+
}
|