Spaces:
Runtime error
Runtime error
Commit
·
d7790d0
1
Parent(s):
29432f4
Upload 2 files
Browse files- .gitattributes +1 -0
- Transliteration(2_LSTM)_final.ipynb +1199 -0
- transliteration.csv +3 -0
.gitattributes
CHANGED
|
@@ -34,3 +34,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
s2s/variables/variables.data-00000-of-00001 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
s2s/variables/variables.data-00000-of-00001 filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
transliteration.csv filter=lfs diff=lfs merge=lfs -text
|
Transliteration(2_LSTM)_final.ipynb
ADDED
|
@@ -0,0 +1,1199 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "code",
|
| 5 |
+
"execution_count": null,
|
| 6 |
+
"metadata": {
|
| 7 |
+
"id": "i32AdA77t1eH"
|
| 8 |
+
},
|
| 9 |
+
"outputs": [],
|
| 10 |
+
"source": [
|
| 11 |
+
"#import libraries\n",
|
| 12 |
+
"import numpy as np\n",
|
| 13 |
+
"import pandas as pd\n",
|
| 14 |
+
"import tensorflow as tf\n",
|
| 15 |
+
"from tensorflow import keras\n"
|
| 16 |
+
]
|
| 17 |
+
},
|
| 18 |
+
{
|
| 19 |
+
"cell_type": "code",
|
| 20 |
+
"execution_count": 1,
|
| 21 |
+
"metadata": {
|
| 22 |
+
"colab": {
|
| 23 |
+
"base_uri": "https://localhost:8080/"
|
| 24 |
+
},
|
| 25 |
+
"executionInfo": {
|
| 26 |
+
"elapsed": 17529,
|
| 27 |
+
"status": "ok",
|
| 28 |
+
"timestamp": 1691416966013,
|
| 29 |
+
"user": {
|
| 30 |
+
"displayName": "JOBANPREET SINGH",
|
| 31 |
+
"userId": "15968293240343091979"
|
| 32 |
+
},
|
| 33 |
+
"user_tz": -330
|
| 34 |
+
},
|
| 35 |
+
"id": "mCo1sSvgTmMt",
|
| 36 |
+
"outputId": "a984f6b4-a0f7-4ef7-8e7e-c453915b31d3"
|
| 37 |
+
},
|
| 38 |
+
"outputs": [
|
| 39 |
+
{
|
| 40 |
+
"name": "stdout",
|
| 41 |
+
"output_type": "stream",
|
| 42 |
+
"text": [
|
| 43 |
+
"Mounted at /content/drive\n"
|
| 44 |
+
]
|
| 45 |
+
}
|
| 46 |
+
],
|
| 47 |
+
"source": [
|
| 48 |
+
"from google.colab import drive\n",
|
| 49 |
+
"drive.mount('/content/drive')"
|
| 50 |
+
]
|
| 51 |
+
},
|
| 52 |
+
{
|
| 53 |
+
"cell_type": "code",
|
| 54 |
+
"execution_count": null,
|
| 55 |
+
"metadata": {
|
| 56 |
+
"colab": {
|
| 57 |
+
"base_uri": "https://localhost:8080/",
|
| 58 |
+
"height": 206
|
| 59 |
+
},
|
| 60 |
+
"id": "TCF-yZlauZ41",
|
| 61 |
+
"outputId": "38d1e397-00dc-4f12-d038-d9de685fd0cd"
|
| 62 |
+
},
|
| 63 |
+
"outputs": [
|
| 64 |
+
{
|
| 65 |
+
"data": {
|
| 66 |
+
"text/html": [
|
| 67 |
+
"<div>\n",
|
| 68 |
+
"<style scoped>\n",
|
| 69 |
+
" .dataframe tbody tr th:only-of-type {\n",
|
| 70 |
+
" vertical-align: middle;\n",
|
| 71 |
+
" }\n",
|
| 72 |
+
"\n",
|
| 73 |
+
" .dataframe tbody tr th {\n",
|
| 74 |
+
" vertical-align: top;\n",
|
| 75 |
+
" }\n",
|
| 76 |
+
"\n",
|
| 77 |
+
" .dataframe thead th {\n",
|
| 78 |
+
" text-align: right;\n",
|
| 79 |
+
" }\n",
|
| 80 |
+
"</style>\n",
|
| 81 |
+
"<table border=\"1\" class=\"dataframe\">\n",
|
| 82 |
+
" <thead>\n",
|
| 83 |
+
" <tr style=\"text-align: right;\">\n",
|
| 84 |
+
" <th></th>\n",
|
| 85 |
+
" <th>Punjabi</th>\n",
|
| 86 |
+
" <th>English</th>\n",
|
| 87 |
+
" </tr>\n",
|
| 88 |
+
" </thead>\n",
|
| 89 |
+
" <tbody>\n",
|
| 90 |
+
" <tr>\n",
|
| 91 |
+
" <th>0</th>\n",
|
| 92 |
+
" <td>ਅੱਜਕੱਲ੍ਹ</td>\n",
|
| 93 |
+
" <td>ajjkallh</td>\n",
|
| 94 |
+
" </tr>\n",
|
| 95 |
+
" <tr>\n",
|
| 96 |
+
" <th>1</th>\n",
|
| 97 |
+
" <td>ਕੁੱਕਰੀ</td>\n",
|
| 98 |
+
" <td>kookerii</td>\n",
|
| 99 |
+
" </tr>\n",
|
| 100 |
+
" <tr>\n",
|
| 101 |
+
" <th>2</th>\n",
|
| 102 |
+
" <td>ਧਮਨੀਆਂ</td>\n",
|
| 103 |
+
" <td>dhamniyan</td>\n",
|
| 104 |
+
" </tr>\n",
|
| 105 |
+
" <tr>\n",
|
| 106 |
+
" <th>3</th>\n",
|
| 107 |
+
" <td>ਖ਼ੁਦਗ਼ਰਜ਼ੀ</td>\n",
|
| 108 |
+
" <td>khudgarzi</td>\n",
|
| 109 |
+
" </tr>\n",
|
| 110 |
+
" <tr>\n",
|
| 111 |
+
" <th>4</th>\n",
|
| 112 |
+
" <td>ਅਗਲੇਰਾ</td>\n",
|
| 113 |
+
" <td>aglera</td>\n",
|
| 114 |
+
" </tr>\n",
|
| 115 |
+
" </tbody>\n",
|
| 116 |
+
"</table>\n",
|
| 117 |
+
"</div>"
|
| 118 |
+
],
|
| 119 |
+
"text/plain": [
|
| 120 |
+
" Punjabi English\n",
|
| 121 |
+
"0 ਅੱਜਕੱਲ੍ਹ ajjkallh\n",
|
| 122 |
+
"1 ਕੁੱਕਰੀ kookerii\n",
|
| 123 |
+
"2 ਧਮਨੀਆਂ dhamniyan\n",
|
| 124 |
+
"3 ਖ਼ੁਦਗ਼ਰਜ਼ੀ khudgarzi\n",
|
| 125 |
+
"4 ਅਗਲੇਰਾ aglera"
|
| 126 |
+
]
|
| 127 |
+
},
|
| 128 |
+
"execution_count": 15,
|
| 129 |
+
"metadata": {},
|
| 130 |
+
"output_type": "execute_result"
|
| 131 |
+
}
|
| 132 |
+
],
|
| 133 |
+
"source": [
|
| 134 |
+
"# read dataset\n",
|
| 135 |
+
"df=pd.read_csv(\"transliteration.csv\")\n",
|
| 136 |
+
"\n",
|
| 137 |
+
"df.head()"
|
| 138 |
+
]
|
| 139 |
+
},
|
| 140 |
+
{
|
| 141 |
+
"cell_type": "code",
|
| 142 |
+
"execution_count": null,
|
| 143 |
+
"metadata": {
|
| 144 |
+
"colab": {
|
| 145 |
+
"base_uri": "https://localhost:8080/"
|
| 146 |
+
},
|
| 147 |
+
"id": "sQJDIFoouski",
|
| 148 |
+
"outputId": "7aa0b1b6-29b8-40bf-f69f-3269ab738bfa"
|
| 149 |
+
},
|
| 150 |
+
"outputs": [
|
| 151 |
+
{
|
| 152 |
+
"data": {
|
| 153 |
+
"text/plain": [
|
| 154 |
+
"Punjabi 0\n",
|
| 155 |
+
"English 2\n",
|
| 156 |
+
"dtype: int64"
|
| 157 |
+
]
|
| 158 |
+
},
|
| 159 |
+
"execution_count": 16,
|
| 160 |
+
"metadata": {},
|
| 161 |
+
"output_type": "execute_result"
|
| 162 |
+
}
|
| 163 |
+
],
|
| 164 |
+
"source": [
|
| 165 |
+
"#check null values\n",
|
| 166 |
+
"df.isnull().sum()"
|
| 167 |
+
]
|
| 168 |
+
},
|
| 169 |
+
{
|
| 170 |
+
"cell_type": "code",
|
| 171 |
+
"execution_count": null,
|
| 172 |
+
"metadata": {
|
| 173 |
+
"id": "63J_12A9uzDR",
|
| 174 |
+
"outputId": "3668f1c6-eb6e-4adb-ac7e-68aa27cfad0e"
|
| 175 |
+
},
|
| 176 |
+
"outputs": [
|
| 177 |
+
{
|
| 178 |
+
"data": {
|
| 179 |
+
"text/plain": [
|
| 180 |
+
"(514722, 2)"
|
| 181 |
+
]
|
| 182 |
+
},
|
| 183 |
+
"execution_count": 17,
|
| 184 |
+
"metadata": {},
|
| 185 |
+
"output_type": "execute_result"
|
| 186 |
+
}
|
| 187 |
+
],
|
| 188 |
+
"source": [
|
| 189 |
+
"#drop null values\n",
|
| 190 |
+
"df.dropna(inplace=True)\n",
|
| 191 |
+
"df.shape"
|
| 192 |
+
]
|
| 193 |
+
},
|
| 194 |
+
{
|
| 195 |
+
"cell_type": "code",
|
| 196 |
+
"execution_count": null,
|
| 197 |
+
"metadata": {
|
| 198 |
+
"id": "xzPeje92u8YF"
|
| 199 |
+
},
|
| 200 |
+
"outputs": [],
|
| 201 |
+
"source": [
|
| 202 |
+
"#creaing list source text and target text\n",
|
| 203 |
+
"input_texts=list(df['English'])\n",
|
| 204 |
+
"input_texts=[item.lower() for item in input_texts] # converting to lowercase all elements of input_texts\n",
|
| 205 |
+
"target_texts=list(df['Punjabi'])"
|
| 206 |
+
]
|
| 207 |
+
},
|
| 208 |
+
{
|
| 209 |
+
"cell_type": "code",
|
| 210 |
+
"execution_count": null,
|
| 211 |
+
"metadata": {
|
| 212 |
+
"id": "4rsG9aYQvUXX"
|
| 213 |
+
},
|
| 214 |
+
"outputs": [],
|
| 215 |
+
"source": [
|
| 216 |
+
"target_texts = ['\\t' + item + '\\n' for item in target_texts] # adding \\t and \\n at the start and end of each element of target_texts"
|
| 217 |
+
]
|
| 218 |
+
},
|
| 219 |
+
{
|
| 220 |
+
"cell_type": "code",
|
| 221 |
+
"execution_count": null,
|
| 222 |
+
"metadata": {
|
| 223 |
+
"id": "NUhp1DyOvhie"
|
| 224 |
+
},
|
| 225 |
+
"outputs": [],
|
| 226 |
+
"source": [
|
| 227 |
+
"#getting unique characters in both the languages\n",
|
| 228 |
+
"input_characters = set()\n",
|
| 229 |
+
"target_characters = set()\n",
|
| 230 |
+
"for char in input_texts:\n",
|
| 231 |
+
" for i in char:\n",
|
| 232 |
+
" if i not in input_characters:\n",
|
| 233 |
+
" input_characters.add(i)\n",
|
| 234 |
+
"for char in target_texts:\n",
|
| 235 |
+
" for j in char:\n",
|
| 236 |
+
" if j not in target_characters:\n",
|
| 237 |
+
" target_characters.add(j)"
|
| 238 |
+
]
|
| 239 |
+
},
|
| 240 |
+
{
|
| 241 |
+
"cell_type": "code",
|
| 242 |
+
"execution_count": null,
|
| 243 |
+
"metadata": {
|
| 244 |
+
"colab": {
|
| 245 |
+
"base_uri": "https://localhost:8080/"
|
| 246 |
+
},
|
| 247 |
+
"id": "ho2APRJrvtyb",
|
| 248 |
+
"outputId": "45721760-bb46-44d0-8425-4e97d9b8ec55"
|
| 249 |
+
},
|
| 250 |
+
"outputs": [
|
| 251 |
+
{
|
| 252 |
+
"name": "stdout",
|
| 253 |
+
"output_type": "stream",
|
| 254 |
+
"text": [
|
| 255 |
+
"Number of samples: 514722\n",
|
| 256 |
+
"Max sequence length for inputs: 27\n",
|
| 257 |
+
"Max sequence length for outputs: 24\n"
|
| 258 |
+
]
|
| 259 |
+
}
|
| 260 |
+
],
|
| 261 |
+
"source": [
|
| 262 |
+
"input_characters = sorted(list(input_characters))\n",
|
| 263 |
+
"target_characters = sorted(list(target_characters))\n",
|
| 264 |
+
"max_encoder_seq_length = max([len(txt) for txt in input_texts])\n",
|
| 265 |
+
"max_decoder_seq_length = max([len(txt) for txt in target_texts])\n",
|
| 266 |
+
"\n",
|
| 267 |
+
"\n",
|
| 268 |
+
"print(\"Number of samples:\", len(input_texts))\n",
|
| 269 |
+
"print(\"Max sequence length for inputs:\", max_encoder_seq_length)\n",
|
| 270 |
+
"print(\"Max sequence length for outputs:\", max_decoder_seq_length)"
|
| 271 |
+
]
|
| 272 |
+
},
|
| 273 |
+
{
|
| 274 |
+
"cell_type": "code",
|
| 275 |
+
"execution_count": null,
|
| 276 |
+
"metadata": {
|
| 277 |
+
"id": "7Sszy5eYwHMS"
|
| 278 |
+
},
|
| 279 |
+
"outputs": [],
|
| 280 |
+
"source": [
|
| 281 |
+
"# assigning indexes to each characters of source and target language\n",
|
| 282 |
+
"input_token_index={' ':0,\n",
|
| 283 |
+
" 'a': 1,\n",
|
| 284 |
+
" 'b': 2,\n",
|
| 285 |
+
" 'c': 3,\n",
|
| 286 |
+
" 'd': 4,\n",
|
| 287 |
+
" 'e': 5,\n",
|
| 288 |
+
" 'f': 6,\n",
|
| 289 |
+
" 'g': 7,\n",
|
| 290 |
+
" 'h': 8,\n",
|
| 291 |
+
" 'i': 9,\n",
|
| 292 |
+
" 'j': 10,\n",
|
| 293 |
+
" 'k': 11,\n",
|
| 294 |
+
" 'l': 12,\n",
|
| 295 |
+
" 'm': 13,\n",
|
| 296 |
+
" 'n': 14,\n",
|
| 297 |
+
" 'o': 15,\n",
|
| 298 |
+
" 'p': 16,\n",
|
| 299 |
+
" 'q': 17,\n",
|
| 300 |
+
" 'r': 18,\n",
|
| 301 |
+
" 's': 19,\n",
|
| 302 |
+
" 't': 20,\n",
|
| 303 |
+
" 'u': 21,\n",
|
| 304 |
+
" 'v': 22,\n",
|
| 305 |
+
" 'w': 23,\n",
|
| 306 |
+
" 'x': 24,\n",
|
| 307 |
+
" 'y': 25,\n",
|
| 308 |
+
" 'z': 26}"
|
| 309 |
+
]
|
| 310 |
+
},
|
| 311 |
+
{
|
| 312 |
+
"cell_type": "code",
|
| 313 |
+
"execution_count": null,
|
| 314 |
+
"metadata": {
|
| 315 |
+
"id": "WAa6pR1-wHY6"
|
| 316 |
+
},
|
| 317 |
+
"outputs": [],
|
| 318 |
+
"source": [
|
| 319 |
+
"target_token_index={'\\t': 0,\n",
|
| 320 |
+
" '\\n': 1,\n",
|
| 321 |
+
" ' ': 2,\n",
|
| 322 |
+
" 'ਅ': 3,\n",
|
| 323 |
+
" 'ਆ': 4,\n",
|
| 324 |
+
" 'ਇ': 5,\n",
|
| 325 |
+
" 'ਈ': 6,\n",
|
| 326 |
+
" 'ਉ': 7,\n",
|
| 327 |
+
" 'ਊ': 8,\n",
|
| 328 |
+
" 'ਏ': 9,\n",
|
| 329 |
+
" 'ਐ': 10,\n",
|
| 330 |
+
" 'ਓ': 11,\n",
|
| 331 |
+
" 'ਔ': 12,\n",
|
| 332 |
+
" 'ਕ': 13,\n",
|
| 333 |
+
" 'ਖ': 14,\n",
|
| 334 |
+
" 'ਗ': 15,\n",
|
| 335 |
+
" 'ਘ': 16,\n",
|
| 336 |
+
" 'ਙ': 17,\n",
|
| 337 |
+
" 'ਚ': 18,\n",
|
| 338 |
+
" 'ਛ': 19,\n",
|
| 339 |
+
" 'ਜ': 20,\n",
|
| 340 |
+
" 'ਝ': 21,\n",
|
| 341 |
+
" 'ਞ': 22,\n",
|
| 342 |
+
" 'ਟ': 23,\n",
|
| 343 |
+
" 'ਠ': 24,\n",
|
| 344 |
+
" 'ਡ': 25,\n",
|
| 345 |
+
" 'ਢ': 26,\n",
|
| 346 |
+
" 'ਣ': 27,\n",
|
| 347 |
+
" 'ਤ': 28,\n",
|
| 348 |
+
" 'ਥ': 29,\n",
|
| 349 |
+
" 'ਦ': 30,\n",
|
| 350 |
+
" 'ਧ': 31,\n",
|
| 351 |
+
" 'ਨ': 32,\n",
|
| 352 |
+
" 'ਪ': 33,\n",
|
| 353 |
+
" 'ਫ': 34,\n",
|
| 354 |
+
" 'ਬ': 35,\n",
|
| 355 |
+
" 'ਭ': 36,\n",
|
| 356 |
+
" 'ਮ': 37,\n",
|
| 357 |
+
" 'ਯ': 38,\n",
|
| 358 |
+
" 'ਰ': 39,\n",
|
| 359 |
+
" 'ਲ': 40,\n",
|
| 360 |
+
" 'ਵ': 41,\n",
|
| 361 |
+
" 'ਸ': 42,\n",
|
| 362 |
+
" 'ਹ': 43,\n",
|
| 363 |
+
" '਼': 44,\n",
|
| 364 |
+
" 'ਾ': 45,\n",
|
| 365 |
+
" 'ਿ': 46,\n",
|
| 366 |
+
" 'ੀ': 47,\n",
|
| 367 |
+
" 'ੁ': 48,\n",
|
| 368 |
+
" 'ੂ': 49,\n",
|
| 369 |
+
" 'ੇ': 50,\n",
|
| 370 |
+
" 'ੈ': 51,\n",
|
| 371 |
+
" 'ੋ': 52,\n",
|
| 372 |
+
" 'ੌ': 53,\n",
|
| 373 |
+
" '੍': 54,\n",
|
| 374 |
+
" 'ੜ': 55,\n",
|
| 375 |
+
" 'ੰ': 56,\n",
|
| 376 |
+
" 'ੱ': 57,\n",
|
| 377 |
+
" 'ਂ': 58,\n",
|
| 378 |
+
"'ੲ':59}"
|
| 379 |
+
]
|
| 380 |
+
},
|
| 381 |
+
{
|
| 382 |
+
"cell_type": "code",
|
| 383 |
+
"execution_count": null,
|
| 384 |
+
"metadata": {
|
| 385 |
+
"id": "bCqPdrq-TkQx"
|
| 386 |
+
},
|
| 387 |
+
"outputs": [],
|
| 388 |
+
"source": [
|
| 389 |
+
"import pickle\n",
|
| 390 |
+
"with open(\"input_token_index.pkl\",'wb') as file:\n",
|
| 391 |
+
" pickle.dump(input_token_index,file)\n",
|
| 392 |
+
"\n",
|
| 393 |
+
"with open(\"target_token_index.pkl\",'wb') as file:\n",
|
| 394 |
+
" pickle.dump(target_token_index,file)"
|
| 395 |
+
]
|
| 396 |
+
},
|
| 397 |
+
{
|
| 398 |
+
"cell_type": "code",
|
| 399 |
+
"execution_count": null,
|
| 400 |
+
"metadata": {
|
| 401 |
+
"id": "HAWXGYejTkQy"
|
| 402 |
+
},
|
| 403 |
+
"outputs": [],
|
| 404 |
+
"source": []
|
| 405 |
+
},
|
| 406 |
+
{
|
| 407 |
+
"cell_type": "code",
|
| 408 |
+
"execution_count": null,
|
| 409 |
+
"metadata": {
|
| 410 |
+
"colab": {
|
| 411 |
+
"base_uri": "https://localhost:8080/"
|
| 412 |
+
},
|
| 413 |
+
"id": "pKlLsEReyuwE",
|
| 414 |
+
"outputId": "9ec6f048-76be-43cd-cd0f-3aff94b628b0"
|
| 415 |
+
},
|
| 416 |
+
"outputs": [
|
| 417 |
+
{
|
| 418 |
+
"name": "stdout",
|
| 419 |
+
"output_type": "stream",
|
| 420 |
+
"text": [
|
| 421 |
+
"Number of unique input tokens: 27\n",
|
| 422 |
+
"Number of unique output tokens: 60\n"
|
| 423 |
+
]
|
| 424 |
+
}
|
| 425 |
+
],
|
| 426 |
+
"source": [
|
| 427 |
+
"num_encoder_tokens=len(input_token_index)\n",
|
| 428 |
+
"num_decoder_tokens=len(target_token_index)\n",
|
| 429 |
+
"print(\"Number of unique input tokens:\", num_encoder_tokens)\n",
|
| 430 |
+
"print(\"Number of unique output tokens:\", num_decoder_tokens)"
|
| 431 |
+
]
|
| 432 |
+
},
|
| 433 |
+
{
|
| 434 |
+
"cell_type": "code",
|
| 435 |
+
"execution_count": null,
|
| 436 |
+
"metadata": {
|
| 437 |
+
"id": "KRiDLofETkQz"
|
| 438 |
+
},
|
| 439 |
+
"outputs": [],
|
| 440 |
+
"source": []
|
| 441 |
+
},
|
| 442 |
+
{
|
| 443 |
+
"cell_type": "code",
|
| 444 |
+
"execution_count": null,
|
| 445 |
+
"metadata": {
|
| 446 |
+
"id": "gFDq5lqWv0NW"
|
| 447 |
+
},
|
| 448 |
+
"outputs": [],
|
| 449 |
+
"source": [
|
| 450 |
+
"# input_token_index = dict([(char, i) for i, char in enumerate(input_characters)])\n",
|
| 451 |
+
"# target_token_index = dict([(char, i) for i, char in enumerate(target_characters)])"
|
| 452 |
+
]
|
| 453 |
+
},
|
| 454 |
+
{
|
| 455 |
+
"cell_type": "code",
|
| 456 |
+
"execution_count": null,
|
| 457 |
+
"metadata": {
|
| 458 |
+
"id": "Qks23AHEwBxL"
|
| 459 |
+
},
|
| 460 |
+
"outputs": [],
|
| 461 |
+
"source": [
|
| 462 |
+
"# Data preparation for model training\n",
|
| 463 |
+
"encoder_input_data = np.zeros(\n",
|
| 464 |
+
" (len(input_texts), max_encoder_seq_length, num_encoder_tokens), dtype=\"float32\"\n",
|
| 465 |
+
")\n",
|
| 466 |
+
"decoder_input_data = np.zeros(\n",
|
| 467 |
+
" (len(input_texts), max_decoder_seq_length,num_decoder_tokens), dtype=\"float32\"\n",
|
| 468 |
+
")\n",
|
| 469 |
+
"decoder_target_data = np.zeros(\n",
|
| 470 |
+
" (len(input_texts), max_decoder_seq_length,num_decoder_tokens), dtype=\"float32\"\n",
|
| 471 |
+
")\n",
|
| 472 |
+
"\n",
|
| 473 |
+
"for i, (input_text, target_text) in enumerate(zip(input_texts, target_texts)):\n",
|
| 474 |
+
" for t, char in enumerate(input_text):\n",
|
| 475 |
+
" encoder_input_data[i, t, input_token_index[char]] = 1.0\n",
|
| 476 |
+
" encoder_input_data[i, t + 1 :, input_token_index[\" \"]] = 1.0\n",
|
| 477 |
+
" for t, char in enumerate(target_text):\n",
|
| 478 |
+
" # decoder_target_data is ahead of decoder_input_data by one timestep\n",
|
| 479 |
+
" decoder_input_data[i, t, target_token_index[char]] = 1.0\n",
|
| 480 |
+
" if t > 0:\n",
|
| 481 |
+
" # decoder_target_data will be ahead by one timestep\n",
|
| 482 |
+
" # and will not include the start character.\n",
|
| 483 |
+
" decoder_target_data[i, t - 1, target_token_index[char]] = 1.0\n",
|
| 484 |
+
" decoder_input_data[i, t + 1 :, target_token_index[\" \"]] = 1.0\n",
|
| 485 |
+
" decoder_target_data[i, t:, target_token_index[\" \"]] = 1.0"
|
| 486 |
+
]
|
| 487 |
+
},
|
| 488 |
+
{
|
| 489 |
+
"cell_type": "code",
|
| 490 |
+
"execution_count": null,
|
| 491 |
+
"metadata": {
|
| 492 |
+
"colab": {
|
| 493 |
+
"base_uri": "https://localhost:8080/"
|
| 494 |
+
},
|
| 495 |
+
"id": "KUO0JORIogdi",
|
| 496 |
+
"outputId": "fb6fc006-a073-4426-9683-0f9da633777a"
|
| 497 |
+
},
|
| 498 |
+
"outputs": [
|
| 499 |
+
{
|
| 500 |
+
"name": "stderr",
|
| 501 |
+
"output_type": "stream",
|
| 502 |
+
"text": [
|
| 503 |
+
"2023-08-06 14:10:30.193063: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1960] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.\n",
|
| 504 |
+
"Skipping registering GPU devices...\n"
|
| 505 |
+
]
|
| 506 |
+
},
|
| 507 |
+
{
|
| 508 |
+
"name": "stdout",
|
| 509 |
+
"output_type": "stream",
|
| 510 |
+
"text": [
|
| 511 |
+
"Model: \"model\"\n",
|
| 512 |
+
"__________________________________________________________________________________________________\n",
|
| 513 |
+
" Layer (type) Output Shape Param # Connected to \n",
|
| 514 |
+
"==================================================================================================\n",
|
| 515 |
+
" encoder_inputs (InputLayer [(None, None, 27)] 0 [] \n",
|
| 516 |
+
" ) \n",
|
| 517 |
+
" \n",
|
| 518 |
+
" decoder_inputs (InputLayer [(None, None, 60)] 0 [] \n",
|
| 519 |
+
" ) \n",
|
| 520 |
+
" \n",
|
| 521 |
+
" encoder_lstm1 (LSTM) [(None, None, 256), 290816 ['encoder_inputs[0][0]'] \n",
|
| 522 |
+
" (None, 256), \n",
|
| 523 |
+
" (None, 256)] \n",
|
| 524 |
+
" \n",
|
| 525 |
+
" decoder_lstm1 (LSTM) [(None, None, 256), 324608 ['decoder_inputs[0][0]', \n",
|
| 526 |
+
" (None, 256), 'encoder_lstm1[0][1]', \n",
|
| 527 |
+
" (None, 256)] 'encoder_lstm1[0][2]'] \n",
|
| 528 |
+
" \n",
|
| 529 |
+
" encoder_lstm2 (LSTM) [(None, 256), 525312 ['encoder_lstm1[0][0]'] \n",
|
| 530 |
+
" (None, 256), \n",
|
| 531 |
+
" (None, 256)] \n",
|
| 532 |
+
" \n",
|
| 533 |
+
" decoder_lstm2 (LSTM) [(None, None, 256), 525312 ['decoder_lstm1[0][0]', \n",
|
| 534 |
+
" (None, 256), 'encoder_lstm2[0][1]', \n",
|
| 535 |
+
" (None, 256)] 'encoder_lstm2[0][2]'] \n",
|
| 536 |
+
" \n",
|
| 537 |
+
" decoder_dense (Dense) (None, None, 60) 15420 ['decoder_lstm2[0][0]'] \n",
|
| 538 |
+
" \n",
|
| 539 |
+
"==================================================================================================\n",
|
| 540 |
+
"Total params: 1681468 (6.41 MB)\n",
|
| 541 |
+
"Trainable params: 1681468 (6.41 MB)\n",
|
| 542 |
+
"Non-trainable params: 0 (0.00 Byte)\n",
|
| 543 |
+
"__________________________________________________________________________________________________\n"
|
| 544 |
+
]
|
| 545 |
+
}
|
| 546 |
+
],
|
| 547 |
+
"source": [
|
| 548 |
+
"from keras.models import Model\n",
|
| 549 |
+
"from keras.layers import Input, LSTM, Dense, RNN\n",
|
| 550 |
+
"layers = [256,128] # we loop LSTMCells then wrap them in an RNN layer\n",
|
| 551 |
+
"latent_dim = 256\n",
|
| 552 |
+
"\n",
|
| 553 |
+
"encoder_inputs = Input(shape=(None, num_encoder_tokens), name='encoder_inputs')\n",
|
| 554 |
+
"\n",
|
| 555 |
+
"e_outputs, h1, c1 = LSTM(latent_dim, return_state=True, return_sequences=True, name='encoder_lstm1')(encoder_inputs)\n",
|
| 556 |
+
"_, h2, c2 = LSTM(latent_dim, return_state=True, name='encoder_lstm2')(e_outputs)\n",
|
| 557 |
+
"encoder_states = [h1, c1, h2, c2]\n",
|
| 558 |
+
"\n",
|
| 559 |
+
"decoder_inputs = Input(shape=(None, num_decoder_tokens), name='decoder_inputs')\n",
|
| 560 |
+
"\n",
|
| 561 |
+
"out_layer1 = LSTM(latent_dim, return_sequences=True, return_state=True, name='decoder_lstm1')\n",
|
| 562 |
+
"d_outputs, dh1, dc1 = out_layer1(decoder_inputs, initial_state=[h1, c1])\n",
|
| 563 |
+
"\n",
|
| 564 |
+
"out_layer2 = LSTM(latent_dim, return_sequences=True, return_state=True, name='decoder_lstm2')\n",
|
| 565 |
+
"final, dh2, dc2 = out_layer2(d_outputs, initial_state=[h2, c2])\n",
|
| 566 |
+
"\n",
|
| 567 |
+
"decoder_dense = Dense(num_decoder_tokens, activation='softmax', name='decoder_dense')\n",
|
| 568 |
+
"decoder_outputs = decoder_dense(final)\n",
|
| 569 |
+
"\n",
|
| 570 |
+
"model = Model([encoder_inputs, decoder_inputs], decoder_outputs)\n",
|
| 571 |
+
"\n",
|
| 572 |
+
"model.summary()"
|
| 573 |
+
]
|
| 574 |
+
},
|
| 575 |
+
{
|
| 576 |
+
"cell_type": "code",
|
| 577 |
+
"execution_count": null,
|
| 578 |
+
"metadata": {
|
| 579 |
+
"colab": {
|
| 580 |
+
"base_uri": "https://localhost:8080/"
|
| 581 |
+
},
|
| 582 |
+
"id": "tVcfVOwioggR",
|
| 583 |
+
"outputId": "8b0c76e6-8a81-4531-da76-90b0e36f2dda"
|
| 584 |
+
},
|
| 585 |
+
"outputs": [
|
| 586 |
+
{
|
| 587 |
+
"name": "stdout",
|
| 588 |
+
"output_type": "stream",
|
| 589 |
+
"text": [
|
| 590 |
+
"Epoch 1/20\n",
|
| 591 |
+
"6435/6435 [==============================] - 916s 142ms/step - loss: 0.5904 - accuracy: 0.8316 - val_loss: 0.3925 - val_accuracy: 0.8818\n",
|
| 592 |
+
"Epoch 2/20\n",
|
| 593 |
+
"6435/6435 [==============================] - 906s 141ms/step - loss: 0.1990 - accuracy: 0.9351 - val_loss: 0.1797 - val_accuracy: 0.9392\n",
|
| 594 |
+
"Epoch 3/20\n",
|
| 595 |
+
"6435/6435 [==============================] - 906s 141ms/step - loss: 0.1368 - accuracy: 0.9547 - val_loss: 0.1442 - val_accuracy: 0.9506\n",
|
| 596 |
+
"Epoch 4/20\n",
|
| 597 |
+
"6435/6435 [==============================] - 908s 141ms/step - loss: 0.1127 - accuracy: 0.9624 - val_loss: 0.1038 - val_accuracy: 0.9627\n",
|
| 598 |
+
"Epoch 5/20\n",
|
| 599 |
+
"6435/6435 [==============================] - 907s 141ms/step - loss: 0.1001 - accuracy: 0.9664 - val_loss: 0.0852 - val_accuracy: 0.9690\n",
|
| 600 |
+
"Epoch 6/20\n",
|
| 601 |
+
"6435/6435 [==============================] - 907s 141ms/step - loss: 0.0922 - accuracy: 0.9689 - val_loss: 0.0782 - val_accuracy: 0.9714\n",
|
| 602 |
+
"Epoch 7/20\n",
|
| 603 |
+
"6435/6435 [==============================] - 907s 141ms/step - loss: 0.0865 - accuracy: 0.9708 - val_loss: 0.0738 - val_accuracy: 0.9730\n",
|
| 604 |
+
"Epoch 8/20\n",
|
| 605 |
+
"6435/6435 [==============================] - 906s 141ms/step - loss: 0.0819 - accuracy: 0.9721 - val_loss: 0.0761 - val_accuracy: 0.9720\n",
|
| 606 |
+
"Epoch 9/20\n",
|
| 607 |
+
"6435/6435 [==============================] - 905s 141ms/step - loss: 0.0782 - accuracy: 0.9733 - val_loss: 0.0751 - val_accuracy: 0.9723\n",
|
| 608 |
+
"Epoch 10/20\n",
|
| 609 |
+
"6435/6435 [==============================] - 905s 141ms/step - loss: 0.0751 - accuracy: 0.9743 - val_loss: 0.0885 - val_accuracy: 0.9695\n",
|
| 610 |
+
"Epoch 11/20\n",
|
| 611 |
+
"6435/6435 [==============================] - 907s 141ms/step - loss: 0.0723 - accuracy: 0.9751 - val_loss: 0.0649 - val_accuracy: 0.9758\n",
|
| 612 |
+
"Epoch 12/20\n",
|
| 613 |
+
"6435/6435 [==============================] - 906s 141ms/step - loss: 0.0699 - accuracy: 0.9759 - val_loss: 0.0672 - val_accuracy: 0.9747\n",
|
| 614 |
+
"Epoch 13/20\n",
|
| 615 |
+
"6435/6435 [==============================] - 907s 141ms/step - loss: 0.0675 - accuracy: 0.9766 - val_loss: 0.0666 - val_accuracy: 0.9752\n",
|
| 616 |
+
"Epoch 14/20\n",
|
| 617 |
+
"6435/6435 [==============================] - 907s 141ms/step - loss: 0.0654 - accuracy: 0.9773 - val_loss: 0.0709 - val_accuracy: 0.9736\n",
|
| 618 |
+
"Epoch 15/20\n",
|
| 619 |
+
"6435/6435 [==============================] - 906s 141ms/step - loss: 0.0635 - accuracy: 0.9778 - val_loss: 0.0633 - val_accuracy: 0.9762\n",
|
| 620 |
+
"Epoch 16/20\n",
|
| 621 |
+
"6435/6435 [==============================] - 906s 141ms/step - loss: 0.0616 - accuracy: 0.9784 - val_loss: 0.0637 - val_accuracy: 0.9762\n",
|
| 622 |
+
"Epoch 17/20\n",
|
| 623 |
+
"6435/6435 [==============================] - 906s 141ms/step - loss: 0.0598 - accuracy: 0.9789 - val_loss: 0.0655 - val_accuracy: 0.9756\n",
|
| 624 |
+
"Epoch 18/20\n",
|
| 625 |
+
"6435/6435 [==============================] - 905s 141ms/step - loss: 0.0582 - accuracy: 0.9794 - val_loss: 0.0645 - val_accuracy: 0.9760\n",
|
| 626 |
+
"Epoch 19/20\n",
|
| 627 |
+
"6435/6435 [==============================] - 905s 141ms/step - loss: 0.0566 - accuracy: 0.9799 - val_loss: 0.0640 - val_accuracy: 0.9759\n",
|
| 628 |
+
"Epoch 20/20\n",
|
| 629 |
+
"6435/6435 [==============================] - 906s 141ms/step - loss: 0.0551 - accuracy: 0.9804 - val_loss: 0.0646 - val_accuracy: 0.9760\n",
|
| 630 |
+
"INFO:tensorflow:Assets written to: s2s/assets\n"
|
| 631 |
+
]
|
| 632 |
+
},
|
| 633 |
+
{
|
| 634 |
+
"name": "stderr",
|
| 635 |
+
"output_type": "stream",
|
| 636 |
+
"text": [
|
| 637 |
+
"INFO:tensorflow:Assets written to: s2s/assets\n"
|
| 638 |
+
]
|
| 639 |
+
}
|
| 640 |
+
],
|
| 641 |
+
"source": [
|
| 642 |
+
"batch_size = 64 # Batch size for training.\n",
|
| 643 |
+
"epochs = 20\n",
|
| 644 |
+
"model.compile(\n",
|
| 645 |
+
" optimizer=\"rmsprop\", loss=\"categorical_crossentropy\", metrics=[\"accuracy\"]\n",
|
| 646 |
+
")\n",
|
| 647 |
+
"history=model.fit(\n",
|
| 648 |
+
" [encoder_input_data, decoder_input_data],\n",
|
| 649 |
+
" decoder_target_data,\n",
|
| 650 |
+
" batch_size=batch_size,\n",
|
| 651 |
+
" epochs=epochs,\n",
|
| 652 |
+
" validation_split=0.2,\n",
|
| 653 |
+
")\n",
|
| 654 |
+
"# Save model\n",
|
| 655 |
+
"model.save(\"s2s\")"
|
| 656 |
+
]
|
| 657 |
+
},
|
| 658 |
+
{
|
| 659 |
+
"cell_type": "code",
|
| 660 |
+
"execution_count": null,
|
| 661 |
+
"metadata": {
|
| 662 |
+
"id": "pPg8_FY2Vw1v"
|
| 663 |
+
},
|
| 664 |
+
"outputs": [],
|
| 665 |
+
"source": []
|
| 666 |
+
},
|
| 667 |
+
{
|
| 668 |
+
"cell_type": "code",
|
| 669 |
+
"execution_count": null,
|
| 670 |
+
"metadata": {
|
| 671 |
+
"colab": {
|
| 672 |
+
"base_uri": "https://localhost:8080/",
|
| 673 |
+
"height": 447
|
| 674 |
+
},
|
| 675 |
+
"id": "PRTb9JtnVw4M",
|
| 676 |
+
"outputId": "113afba2-b594-41af-f1b7-1061154113a5"
|
| 677 |
+
},
|
| 678 |
+
"outputs": [
|
| 679 |
+
{
|
| 680 |
+
"data": {
|
| 681 |
+
"image/png": "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\n",
|
| 682 |
+
"text/plain": [
|
| 683 |
+
"<Figure size 432x288 with 1 Axes>"
|
| 684 |
+
]
|
| 685 |
+
},
|
| 686 |
+
"metadata": {
|
| 687 |
+
"needs_background": "light"
|
| 688 |
+
},
|
| 689 |
+
"output_type": "display_data"
|
| 690 |
+
},
|
| 691 |
+
{
|
| 692 |
+
"data": {
|
| 693 |
+
"text/plain": [
|
| 694 |
+
"<Figure size 432x288 with 0 Axes>"
|
| 695 |
+
]
|
| 696 |
+
},
|
| 697 |
+
"metadata": {},
|
| 698 |
+
"output_type": "display_data"
|
| 699 |
+
}
|
| 700 |
+
],
|
| 701 |
+
"source": [
|
| 702 |
+
"import matplotlib.pyplot as plt\n",
|
| 703 |
+
"plt.plot(history.history['loss'])\n",
|
| 704 |
+
"plt.plot(history.history['val_loss'])\n",
|
| 705 |
+
"plt.legend(['train','validation'])\n",
|
| 706 |
+
"plt.show()\n",
|
| 707 |
+
"plt.savefig('trai_validation_loss')"
|
| 708 |
+
]
|
| 709 |
+
},
|
| 710 |
+
{
|
| 711 |
+
"cell_type": "code",
|
| 712 |
+
"execution_count": null,
|
| 713 |
+
"metadata": {
|
| 714 |
+
"colab": {
|
| 715 |
+
"base_uri": "https://localhost:8080/",
|
| 716 |
+
"height": 489
|
| 717 |
+
},
|
| 718 |
+
"id": "uaEwY_b0V93S",
|
| 719 |
+
"outputId": "7cc3860b-a274-462a-8a9c-360b4330ddf0"
|
| 720 |
+
},
|
| 721 |
+
"outputs": [
|
| 722 |
+
{
|
| 723 |
+
"data": {
|
| 724 |
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA1G0lEQVR4nO3dd3xc1Z3//9dbo1G3JRe5Sa6swTYOGDDGKZuwIQVCAmm/xCSkkMKyCVnIb3cDyRbyW7K/sPmmbiBxCGFDNpQQSkISBxISSlhMcQNjG3ABY0kucpFklZE0ms/3j3sljcYje2xrNLLm83w85jF37rl35jPX8v3MPeeec2RmOOecc6kKch2Ac865kckThHPOubQ8QTjnnEvLE4Rzzrm0PEE455xLyxOEc865tDxBOAdI+qmkr2W47auS3pbtmJzLNU8Qzjnn0vIE4dwoIqkw1zG40cMThDthhFU7/yTpeUltkn4iabKk30s6KOlhSeOStr9I0gZJTZIelTQ/qewMSWvC/X4BlKR81rslrQv3fVLSaRnGeKGktZJaJO2Q9NWU8jeF79cUln8yXF8q6VuStktqlvREuO5cSXVpjsPbwuWvSrpH0s8ltQCflLRE0srwM3ZKulFSUdL+p0r6o6T9knZL+oqkKZLaJU1I2u4sSY2Sopl8dzf6eIJwJ5oPAG8HTgbeA/we+AowkeDv+e8BJJ0M3AlcDVQDK4DfSCoKT5a/Av4HGA/8Mnxfwn3PBG4F/haYAPwIeEBScQbxtQEfB6qAC4G/k/Te8H1nhPF+P4xpEbAu3O+bwFnAG8KYvgQkMjwmFwP3hJ95O9ADfJHgmLweOA/4XBjDGOBh4EFgGvBXwJ/MbBfwKPChpPe9FLjLzLozjMONMp4g3Inm+2a228zqgb8AT5vZWjPrBO4Hzgi3+zDwOzP7Y3iC+yZQSnACXgpEge+aWbeZ3QM8m/QZnwV+ZGZPm1mPmd0GdIb7HZaZPWpm680sYWbPEySpt4TFHwUeNrM7w8/dZ2brJBUAnwKuMrP68DOfDL9TJlaa2a/Cz+wws9Vm9pSZxc3sVYIE1xvDu4FdZvYtM4uZ2UEzezosu40gKSApAlxCkERdnvIE4U40u5OWO9K8rgiXpwHbewvMLAHsAGrCsnobOFLl9qTlmcA/hFU0TZKagOnhfocl6RxJj4RVM83AFQS/5AnfY2ua3SYSVHGlK8vEjpQYTpb0W0m7wmqn/z+DGAB+DSyQNIfgKq3ZzJ45xpjcKOAJwo1WDQQnegAkieDkWA/sBGrCdb1mJC3vAP7DzKqSHmVmdmcGn3sH8AAw3cwqgeVA7+fsAE5Ks89eIDZIWRtQlvQ9IgTVU8lSh2T+IfAiMNfMxhJUwR0pBswsBtxNcKXzMfzqIe95gnCj1d3AhZLOCxtZ/4GgmuhJYCUQB/5eUqGk9wNLkvb9MXBFeDUgSeVh4/OYDD53DLDfzGKSlgAfSSq7HXibpA+FnztB0qLw6uZW4NuSpkmKSHp92ObxMlASfn4U+BfgSG0hY4AWoFXSPODvksp+C0yRdLWkYkljJJ2TVP4z4JPARcDPM/i+bhTzBOFGJTN7iaA+/fsEv9DfA7zHzLrMrAt4P8GJ8ABBe8V9SfuuImiHuDEs3xJum4nPAf8u6SDwbwSJqvd9XwPeRZCs9hM0UJ8eFv8jsJ6gLWQ/8J9AgZk1h+95C8HVTxsw4K6mNP6RIDEdJEh2v0iK4SBB9dF7gF3AZuBvksr/l6BxfE3YfuHymHzCIOdcMkl/Bu4ws1tyHYvLLU8Qzrk+ks4G/kjQhnIw1/G43PIqJuccAJJuI+gjcbUnBwd+BeGcc24QfgXhnHMurVE1sNfEiRNt1qxZuQ7DOedOGKtXr95rZql9a4BRliBmzZrFqlWrch2Gc86dMCRtH6zMq5icc86l5QnCOedcWp4gnHPOpTWq2iDS6e7upq6ujlgslutQsqqkpITa2lqiUZ/bxTk3NEZ9gqirq2PMmDHMmjWLgYN3jh5mxr59+6irq2P27Nm5Dsc5N0qM+iqmWCzGhAkTRm1yAJDEhAkTRv1VknNueGU1QUg6X9JLkrZIujZN+ThJ9yuYY/gZSQuTyr6oYD7hFyTdKakkdf+jiONYdz1h5MN3dM4Nr6xVMYUTm9xEMLRwHfCspAfMbGPSZl8B1pnZ+8Jx628CzpNUQzC38AIz65B0N7AM+Gm24nXOuZGgJ2F0dPfQ0dVDrLunb7kjXI6Fy+295V09RAsLuOItaeeBOi7ZbINYAmwxs20Aku4imFw9OUEsAL4OYGYvSpolaXJSbKWSuglm1GrIYqxZ09TUxB133MHnPve5o9rvXe96F3fccQdVVVXZCcw5d1QSvSfupBN2e1cP7V1xYt09xLoTwUk93n9yj3Un+k/s3T0DtktdF7xPgq6exFHHVj2m+IRLEDUMnCu3DjgnZZvnCCZueSKcfWsmUGtmqyV9E3iNYJ7hP5jZH9J9iKTLgcsBZsyYkW6TnGpqauIHP/jBIQmip6eHSCQy6H4rVqzIdmjOjTrdPQnaO3to747T3hWcqHtP4u3hckfycncPbZ3xvpN+77qOpOf2rnh4Mj/6E3eBoDQaobQoQnFh8FwSLaA0GmFMSSHVY4opjQbryooKKYlGwu0LwvXBPqXpnqMRSsLlaCQ7rQXZTBDpKsVTh469AfiepHUEs2mtBeKSxhFcbcwGmoBfSrrUzA6ZAtHMbgZuBli8ePGIG5r22muvZevWrSxatIhoNEpFRQVTp05l3bp1bNy4kfe+973s2LGDWCzGVVddxeWXXw70DxvS2trKBRdcwJve9CaefPJJampq+PWvf01paWmOv5lzxyfek6AtPIm3dsZp74oHz509tHXFaesMTt7Bcpy2rh7aO+O0dgYn7d51bZ3xvpN8d8/RnQJ6T8yl0QhlRf0n34kVReFyIaVF/duUFgXblYTb9y6nnriLo70nbp3Q7YPZTBB1BJPE96olpZrIzFqAy6BvUvlXwsc7gVfMrDEsuw94A8c5R+7/95sNbGxoOZ63OMSCaWO57j2nDlp+ww038MILL7Bu3ToeffRRLrzwQl544YW+21FvvfVWxo8fT0dHB2effTYf+MAHmDBhwoD32Lx5M3feeSc//vGP+dCHPsS9997LpZdeOqTfw7nDMTNi3QkOdnbTGgtO5K2xOAfD5/au/hN4W9Iv9rbek3lY1vtrvq2rh6545r/IS6MRyosLKS+OUF4UPI8rL6J2XLBcVlRIaVGE8qIIpUWFfSfv4MRf2HdiDx6FfWUFBSfuyXs4ZDNBPAvMlTSbYC7dZQycwB1JVUB7OEfwZ4DHzaxF0mvAUkllBFVM5wGjYhS+JUuWDOir8F//9V/cf//9AOzYsYPNmzcfkiBmz57NokWLADjrrLN49dVXhytcNwrEuns4GItzMNYdPvcvt4TPvSf81q74gATQ2hls29oZJ5Hhj/PyoghlxYXBc3gyriyNMq2yhLKi/hN6efiLvbwoQkVhnPLiIsqKo8FzSSEVxVHKigspKyok4ifynMhagjCzuKQrgYeACHCrmW2QdEVYvhyYD/xMUg9B4/Wnw7KnJd0DrAHiBFVPNx9vTIf7pT9cysvL+5YfffRRHn74YVauXElZWRnnnntu2r4MxcXFfcuRSISOjo5hidUNg0QCNj0AB16BislQMSl8ngxlEzAV0BlP0NzR3fdoGbAcD55j3WkTwMFYPKNGz7KiCBXFhVSUFDImfJ5YUUZFcZSK4ggV4Qm7rzzcpiJc7v11X1KYwa/yjiaoXw11q2D7M8FzrGmQjQUqCB/Jy0nrEESKoLgCisJHccrzYMu9zwWF0N0RPtohHguee193x5KWOyDeMfB1TzcURFJii/THPKAsabkgfEZgCcDArP95wHJqeaJ/uaQSLvp+pn91GctqT2ozWwGsSFm3PGl5JTB3kH2vA67LZnzDYcyYMRw8mH72xubmZsaNG0dZWRkvvvgiTz311DBH54ZLV99Jvoum9m6a2roo3f4w8zZ+lwmtm9Pu00MB+2wsjVZJo1Wxl8q+5UarpJHgub1oIsXFpUwsTjC+uIfpxT1UVfRQGY0Hj0icikicikg35eqitKCbUnVTQicl1kWULgqipTBuJlTNgnG1UDUdCovTxnVUEj3Q+BLUPQN1zwbJoPElguZIwaT5sOAiGDebASe9Ac9Jj0O2CR/xTuhqg65W6GyF1j3QtS1Y7gofQ6EgCtHSpEcZFJZAJDownkRPUow9Ket74+8ZuE9vouhNKr3Lfes0eHn5xKH5filG/VAbuTZhwgTe+MY3snDhQkpLS5k8eXJf2fnnn8/y5cs57bTTOOWUU1i6dGkOI3WZMDNaYnH2t3Wxv62Tfa1dHGjv4kB7N03tSQmgvZumjm6a27to6uimvaun7z2WaBP/FP0FZxe8zKuJyfx7z5U8W7SEmSVtTI+2UlPYwpRIM9VqZrwdoCpxgCnx/ZR1vUxx5z4KEt2HBtYVPo52JunCkuDR3Q49XUkFgjFTYdysMHHMDJ7HzQqWx0wNfv2mat8fJoJnYcczUL8GusKgSsdD7dmw8INQuxhqzoKSsUcZ8DFKJILv2NUaJJLOg/3JpKs1OHH3nvCjpRAt6V8uTEoIkfwa62xUzUm9ePFiS50waNOmTcyfPz9HEQ2vfPquQyWRMA60d7G3tYt9bZ0caOsOTvxtXWES6H/sa+viQFsX8UEq46MRUVVWRFVplKqyKJWlRVSVRakqjVJZGmV2fAtnb7uJybv/QnfZZA6e8/8SOevjjCkrzbyxNJEIqmNa90Dr7vB5V/ALOlrWf2IrLOk/qRWWpl8fKe4/yScSwfsceBUObIem7cHzgVeD5ZYGBtyEGCmCqhn9iaO7I0gI+7cG5YrA5FODhDB9SfA8fk74i9eNJJJWm9nidGV+BeGGV3cHNL2WdBJ6NXg2Cy6Tyyb2P5eNH7juKKo8uuIJGls72dMSo/FgJ3vCR+PBpNctnext7Rz0hD+2pJAJFcWMLy9i+vgyTq+tYnxFERPKixif8hhXVkRZUST9LY17N8Mj/wEb7ofScfD264ku+Szjo8dwq3JBQXBcysbDpHlHv//h3nfstOAx8w2Hlsc7obkuaCtJ/rc7sB0a1gRVL7Vnw5kfC56nnQFF5Ye+jzuheIJwQ6snDi31/b9AU3+Jtu4euH1hSfArVAWw42lo3xfWNadRNAYrn0C8eDwd0SoORqo4wFj29FTQ3CU6YjFisU46u2LEu7uI0kMhcaLEidJDrXqYV2iUFxrlhQnKioyS6gSlBT30VEyhc+rZFMxcSnntQsZVlB5/56PmOnj0Blh3R/A93/wleMOVQYPiiaawGCacFDxc3vAE4Y5NTxz2vgQNa4PH3s1BAmiug0S8fzsVQGVtkATmvj1sBE2qy66Y1FftkEgY+1pjNO7Zzf7Geg7u301H0x66Du7BWvcSie2jZN8BqqyFCdrKeB1kLi0sVPyQ8BKFBVhBIVYQhUgURaIUFBahSDT4tRsJHwXR4A6WA8/Cjt/AM0Dx2KCOfPpSmHEO1CwO7nbJVNte+Mu34dlbAIMll8Nf/wNUpJ0X3rkRyxOEO7JEIqhbblgbNDo2rIVdzweNfhCcUCeeHDQ6LvxAf7101cwgOSQ17PUkjPoDHWzd28q27W1sa3yBrY2t1Dd1sLu5M+WWzGKikRlMqTyZqWNLmVpbwpTKEqZVltJRWUJPZQmFY0uYEO2iwOLhSb8ICqIUpGtAPRyzIMG99jTseCp4fvTrgAX16VMW9ieM6ecE3ytVrAVW3gQrbwyOzekfgXOvCerqnTsBeYJwA5kFbQQNa/oTws7noDPsgV5YClNPhzM/ATVnBnXN40865I6Wllg32xrb2PbqbrY1trG1sZVtjW28sq9tQA/aytIoc6rLOXPGOKZWljK1sj8JTKksYUJ5UQYNuMc8Enw/KbxjZxac/uFgXUdTcFvmjqeC6q+1/wPP/CgoG1sbJoulMP1sePV/4S/fgo79MP8ieOu/QPUpxx+XcznkCSLfmcH2J2HbI/3VRe37grKCaPDL+XUfhGlhMqieB5H+P5vm9m6e37qPl3YdZGtjG9saW9m2t43Gg51920QKxIzxZcyZWM5bTqlmzsRy5lRXcFJ1OePLi0buWDWlVTD3bcEDgmq13ev7rzK2r4QX7u3ffs7fwHn/FiRO50YBTxAjTEVFBa2tQ9Sp50heewr+dD1sfyKoRpk0H065oD8ZTD51wJ1DXfEEmxpaeK6uiXWvNbFuRxPb9rb1lVeVRZkzsZxzT65mTnUFc6rLOam6ghnjyygqHAWTF0YKg+My7QxYekWQXJt3BLd3jq2Bma/PdYTODSlPEPlo53Pw56/B5j9A+SS44BtwxqUDbks0M17b3866HXtZ+1oTz9U1saGhpa96aGJFMYumV/GBs2pZNL2K+VPHMr68KFffKDeksC+AtzG40ckTRJZdc801zJw5s28+iK9+9atI4vHHH+fAgQN0d3fzta99jYsvvjj7wTS+HNyPv/FXUFIF510H5/wtFJVzoK2Lda/s4bkdwZXBczuaONAe9NgtjUZ4XU0ln3zDLE6vrWLRjCqmVZaM3Koh59yQyK8E8ftrYdf6oX3PKa+DC24YtHjZsmVcffXVfQni7rvv5sEHH+SLX/wiY8eOZe/evSxdupSLLrooeyfcA6/Co/8Jz98V9KZ985ew13+Ol5sL+d1j9Tz4wk5e3h1Ua0lw8qQxvGPBFE6fXsWi6VWcPLmCwixNSOKcG7nyK0HkwBlnnMGePXtoaGigsbGRcePGMXXqVL74xS/y+OOPU1BQQH19Pbt372bKlClD++EHd8Hj/wdW3wYqwM75O7aecjkPbOlixQ+fZ8ueViQ4Z/Z4rjl/HoumV/G62koqiv3PwjmXbwniML/0s+mDH/wg99xzD7t27WLZsmXcfvvtNDY2snr1aqLRKLNmzUo7zPcxa98PT3wHnvkxluimed4l3F22jLs39rDl0Q19SeETrz+Vdy6cwqQxQ3CbqHNu1MmvBJEjy5Yt47Of/Sx79+7lscce4+6772bSpElEo1EeeeQRtm/fPjQfZAl49AbsyRuhq5VN1Rfw9Y6L+cuaMUjNnhScc0fFE8QwOPXUUzl48CA1NTVMnTqVj370o7znPe9h8eLFLFq0iHnzjnPQtUQP1rYXa2mAR7/OE4Wv598738eWulrOmT2e69841ZOCc+6oeYIYJuvX9zeOT5w4kZUrV6bd7mj7QCTinSQaN1No3XRaIRd1fY2yaYv5+Os8KTjnjk9WE4Sk84HvEUw5eouZ3ZBSPg64FTgJiAGfMrMXwrIq4BZgIcFA9J8KZ6BzofaOdgoPbCViCRoKa4iXFnLLlz/rScE5NySydu+ipAhwE3ABsAC4RNKClM2+Aqwzs9OAjxMkk17fAx40s3nA6cCmbMV6oulJJNi1v4XI/q1ESBCrnM20yZOoKC705OCcGzLZvLl9CbDFzLaZWRdwF5DaG2wB8CcAM3sRmCVpsqSxwJuBn4RlXWbWdKyBjKZZ81o6utm2u4lxHduJKoEmnER5xdhR9R2dcyNDNhNEDbAj6XVduC7Zc8D7ASQtAWYCtcAcoBH4b0lrJd0iKe30VJIul7RK0qrGxsZDyktKSti3b98JfwLt7kmwfV8b9fuamWkNFBUkKJj4VxQUV2Bm7Nu3j5ISv3pwzg2dbLZBpOsWnHqWvgH4nqR1wHpgLRAHosCZwBfM7GlJ3wOuBf71kDc0uxm4GYI5qVPLa2trqaurI13yOFG0dcZp7uimgB4mqYWtJKC8OhiWO1RSUkJtbZo5Cpxz7hhlM0HUAdOTXtcCDckbmFkLcBmAgnEmXgkfZUCdmT0dbnoPQYI4atFolNmzZx/Lrjn36t42vnL/ep7cuo/zZ/Tw/di/Eo3tg4/dD9MX5To859wol80E8SwwV9JsoB5YBnwkeYPwTqX2sI3iM8DjYdJokbRD0ilm9hJwHrAxi7GOKN09CW75yyt89+GXKYoU8J3zq3nv83+L+pLD2bkO0TmXB7KWIMwsLulK4CGC21xvNbMNkq4Iy5cD84GfSeohSACfTnqLLwC3SyoCthFeaYx26+uauebe59m4s4XzT53C9W8dT/W974fWRk8OzrlhpRO98TbZ4sWLbdWqVbkO45i0d8X59h9e5tb/fYWJFcX8+8Wncv4Mg59eGCaH+2D6klyH6ZwbZSStNrPF6cq8J/UI8OSWvXzp3uepO9DBR86ZwTXnz6OyuxF++m5o3QOXenJwzg0/TxA59ureNj7502eprSrlF5cv5Zw5E6BlZ5gcdgfJYcY5uQ7TOZeHPEHkkJnxr79+gaJIAXdevpTJY0vC5HChJwfnXM75NGE59Nvnd/KXzXv5x3ec3J8cbuu9crjXk4NzLqc8QeRIS6yb63+7kYU1Y/nY62cFs7/d9u4gSXz0HpixNNchOufynFcx5ci3//Ayja2d/Pjji4m07Q7aHFp2BlcOM1+f6/Ccc86vIHJhfV0zP1v5Kh9bOpPTx7aFyaHBk4NzbkTxK4hh1pMw/vlX6xlfXsw/nV0Et54PHQc8OTjnRhxPEMPsjqe383xdM7e+q5wxd7wHerrgEw9AzZm5Ds055wbwKqZhtOdgjG88+BIfnbGfv1l5GWBw2QpPDs65EckTxDD6j99t4nU9G7j+wLWoqAIu+z1Mmp/rsJxzLi2vYhomT2zey/7nH+S2ku9QMHY6fPzXUOnzNzjnRi5PEMMg1t3DQ/f+mJ8UfZPIxHnw8V9BRXWuw3LOucPyKqZh8Ngvv891Hd8gNmEhBZf91pODc+6E4Akiy/Y98gPe+fJ1bC07nbGX/w5Kx+U6JOecy4gniCyyJ77LhMe+zKN2JlWf/RUUV+Q6JOecy5gniGwwgz9djx6+jt/0LGX7237E5PFVuY7KOeeOijdSD7VEAh76Mjy9nF/pbdxa/QXuf+PcXEflnHNHLatXEJLOl/SSpC2Srk1TPk7S/ZKel/SMpIUp5RFJayX9NptxDplEDzzwBXh6OSsnfZgvxi7j+vctIlKgXEfmnHNHLWsJQlIEuAm4AFgAXCJpQcpmXwHWmdlpwMeB76WUXwVsylaMQyreBfd8Ctb9nN1nXM1Hd1zEpefM4vTpVbmOzDnnjkk2ryCWAFvMbJuZdQF3ARenbLMA+BOAmb0IzJI0GUBSLXAhcEsWYxwa3R1w10dg469IvP16Prvj7YwvL+Ef33lKriNzzrljls0EUQPsSHpdF65L9hzwfgBJS4CZQG/34u8CXwISh/sQSZdLWiVpVWNj4xCEfQzu/gRseRje/V1uL7iI5+ua+dd3z6eyNJqbeJxzbghkM0Gkq3i3lNc3AOMkrQO+AKwF4pLeDewxs9VH+hAzu9nMFpvZ4urqHHRAa98Pmx+Cv/4H9pxyCd948CXe+FcTuOj0acMfi3PODaFs3sVUB0xPel0LNCRvYGYtwGUAkgS8Ej6WARdJehdQAoyV9HMzuzSL8R6b+jXB85y38B+/20RnPMH1Fy8k+DrOOXfiyuYVxLPAXEmzJRURnPQfSN5AUlVYBvAZ4HEzazGzL5tZrZnNCvf784hMDgD1qwGxsmM6v17XwBXnnsScau8Q55w78WXtCsLM4pKuBB4CIsCtZrZB0hVh+XJgPvAzST3ARuDT2YonaxrWkJg4l6+s2M7MCWV87tyTch2Rc84Niax2lDOzFcCKlHXLk5ZXAoftRWZmjwKPZiG842cG9at5sfwcXtnbxm2fWkJJNJLrqJxzbkh4T+rj0bwD2hq5r20y71gwmbec7KO0OudGDx+L6XjUBzdZPd05myWzx+c4GOecG1qeII5H/RoSBUW8aDOYVlWa62icc25IeYI4HvVrOFg1j24KPUE450YdTxDHKtEDDWvZWREMLzWtqiTHATnn3NDyBHGsGl+C7jY2F55CUaSAieXFuY7IOeeGlCeIY9UQ9KB+LjGHqVUlFPiQ3s65UcZvcz1W9auheCzr2icytdL7PjjnRh+/gjhW9ath2hk0NHd6A7VzblTyBHEsujtg9wYS085kV0uMGk8QzrlRyBPEsdi1HhJxDow7jYThVxDOuVHJE8SxCIf43lE6D/AE4ZwbnTxBHIv61TBmKtu7KwGo8T4QzrlRyBPEsahfDTVnUd/UAcDUSr+CcM6NPp4gjlbHAdi/FWrOZGdTjMrSKOXFfrewc2708QRxtBrWBs81Z9HQ1OHtD865UcsTxNEKh/hm6iLqmzq8/cE5N2plNUFIOl/SS5K2SLo2Tfk4SfdLel7SM5IWhuunS3pE0iZJGyRdlc04j0r9GpgwF0qr/ArCOTeqZS1BSIoANwEXAAuASyQtSNnsK8A6MzsN+DjwvXB9HPgHM5sPLAU+n2bf4RdOMUrNWRyMddMSi3uCcM6NWhklCEn3SrpQ0tEklCXAFjPbZmZdwF3AxSnbLAD+BGBmLwKzJE02s51mtiZcfxDYBNQcxWdnR0sDtO6GmrPY2RwDYGqlVzE550anTE/4PwQ+AmyWdIOkeRnsUwPsSHpdx6En+eeA9wNIWgLMBGqTN5A0CzgDeDrdh0i6XNIqSasaGxszCOs49LY/1JxJQ3iLqw+z4ZwbrTJKEGb2sJl9FDgTeBX4o6QnJV0mKTrIbunGv7aU1zcA4yStA74ArCWoXgreQKoA7gWuNrOWQWK72cwWm9ni6urqTL7OsatfDQVRmLyQhqbgCsKrmJxzo1XGN/BLmgBcCnyM4ER+O/Am4BPAuWl2qQOmJ72uBRqSNwhP+peF7y/glfBBmHjuBW43s/syjTOr6lfDlIUQLaGhqYNIgZg0xicKcs6NTpm2QdwH/AUoA95jZheZ2S/M7AtAxSC7PQvMlTRbUhGwDHgg5X2rwjKAzwCPm1lLmCx+Amwys28f/dfKgkQCGtZBzVkANDR1MGVsCYURv1PYOTc6ZXoFcaOZ/TldgZktHmR9XNKVwENABLjVzDZIuiIsXw7MB34mqQfYCHw63P2NBFcq68PqJ4CvmNmKDOMdevs2Q9fBvgRR39ThDdTOuVEt0wQxX9IaM2uCoP8CcImZ/eBwO4Un9BUp65YnLa8E5qbZ7wnSt2HkTm8D9bQzAWho7uCM6eNyGJBzzmVXpvUjn+1NDgBmdgD4bFYiGqnqV0PRGJg4l0TC2NUc8wZq59yolmmCKAjbBYC+TnBFh9l+9KlfDdMWQUGEva2ddPeYD7PhnBvVMk0QDwF3SzpP0luBO4EHsxfWCBPvhF0vDGh/AL/F1Tk3umXaBnEN8LfA3xG0DfwBuCVbQY04u16ARHfSHUzeB8I5N/pllCDMLEHQm/qH2Q1nhErqQQ309aKe5hMFOedGsYwShKS5wNcJxk7qq3g3szlZimtkqV8NFZNhbDBSSH1TB+VFEcaW+kRBzrnRK9M2iP8muHqIA38D/Az4n2wFNeI0rAmql8J2+p3NwTDfSe32zjk36mSaIErN7E+AzGy7mX0VeGv2whpBYs2w9+W+6iUI2iC8/cE5N9plWkcSC4f63hz2jq4HJmUvrBGkd4rRackJooOFNZU5Csg554ZHplcQVxOMw/T3wFkEg/Z9IksxjSx9PajPACDW3cO+ti7vA+GcG/WOeAURdor7kJn9E9BKOPpq3qhfA+NPgrLxQP8dTFP9Dibn3Ch3xCsIM+sBzlK+tsjWr+nr/wDeB8I5lz8ybYNYC/xa0i+Btt6VI2aehmxpaYCDDQMTRLPPJOecyw+ZJojxwD4G3rlkwOhOEPVrgueagQ3UEkyu9ImCnHOjW6Y9qfOr3aFX/WooKIQpr+tb1dDUQXVFMcWFkRwG5pxz2ZdpT+r/5tD5pDGzTw15RCNJwxqYfCpE+6uTvA+Ecy5fZFrF9Nuk5RLgfaTMLz3qJBJQvxZe94EBqxuaOpg3dUyOgnLOueGTaRXTvcmvJd0JPJyViEaK/Vuhs3lAA7WZ0dDcwVvn5UcfQedcfsu0o1yqucCMI20k6XxJL0naIunaNOXjJN0v6XlJz0hamOm+WZcyxSjAgfZuYt0Jr2JyzuWFTNsgDjKwDWIXwRwRh9snAtwEvB2oA56V9ICZbUza7CvAOjN7n6R54fbnZbhvdtWvgWg5VJ/St6rBJwpyzuWRTKuYjqXSfQmwxcy2AUi6C7gYSD7JLyAYRhwze1HSLEmTgTkZ7Jtd9auD4TUK+u9W6p1JzvtAOOfyQUZVTJLeJ6ky6XWVpPceYbcaYEfS67pwXbLngPeH77kEmAnUZrhvbyyXS1olaVVjY2MG3yYD8S7Y9fyA/g+QfAXh4zA550a/TNsgrjOz5t4XZtYEXHeEfdINzZF6q+wNwDhJ64AvEPTYjme4b28sN5vZYjNbXF1dfYSQMrT7BejpGtBADUGCKC4sYHx50dB8jnPOjWCZ3uaaLpEcad86YHrS61pSbo01sxbCwf/CsZ5eCR9lR9o3q1KmGO3V0BzziYKcc3kj0yuIVZK+LekkSXMkfQdYfYR9ngXmSpotqQhYBjyQvEFYVdX7c/wzwONh0jjivlnVsBbKq6Fy+sDVTR1eveScyxuZJogvAF3AL4C7gQ7g84fbwcziwJXAQ8Am4G4z2yDpCklXhJvNBzZIehG4ALjqcPsezRc7LvWrB0wx2quhqYNpPsy3cy5PZHoXUxtw1H0RzGwFsCJl3fKk5ZUEfSoy2ndYxFqg8SVYOLAHdVc8wZ6DnX6Lq3Mub2R6F9MfJVUlvR4n6aGsRZVLO9cBNqCDHMDulhhmfourcy5/ZFrFNDG8cwkAMzvAaJ2TOs0Q39DfB2Kqt0E45/JEpgkiIalvaA1JsxjkttMTXv1qGDe7b4rRXjubvRe1cy6/ZHqb6z8DT0h6LHz9ZuDy7ISUY/VrYMbSQ1b3TTXqjdTOuTyRaSP1g5IWEySFdcCvCe5kGl0O7oaWukM6yEFQxTS+vIjSIp8oyDmXHzIdrO8zBLeg1hIkiKXASgZOQXria0jf/gDeB8I5l38ybYO4Cjgb2G5mfwOcAQzRwEcjSP1qUASmnHZIUUNTB1O9esk5l0cyTRAxM4sBSCo2sxeBU46wz4mnfjVMXgBFZYcUNTTF/BZX51xeybSRui7sB/Er4I+SDjDaphw1CxLEqe87pKgl1k1rZ9yrmJxzeSXTRures+ZXJT0CVAIPZi2qXNi/DWLNaRuofaIg51w+yvQKoo+ZPXbkrU5AvR3kpqVvoAZPEM65/HKsc1KPPvWrIVoG1fMOLQr7QHgbhHMun3iC6FW/GqYugsihF1UNTR0UFoiJFcXDH5dzzuWIJwiAnu60U4z2amjqYEplCZECnyjIOZc/PEEA7NkI8digCWJnU8zbH5xzeccTBCRNMXroHUwQDLPh7Q/OuXzjCQKCBFE2AapmHlLUkzB2tcS8D4RzLu9kNUFIOl/SS5K2SDpkRjpJlZJ+I+k5SRskXZZU9sVw3QuS7pSUvTN0/Zq0U4wC7DkYoydhXsXknMs7WUsQkiLATQRzTS8ALpG0IGWzzwMbzex04FzgW5KKJNUAfw8sNrOFQARYlpVA413QumfQ6qW+PhA+DpNzLs8cdUe5o7AE2GJm2wAk3QVcDGxM2saAMZIEVAD7gXhSbKWSuoEysjW0R2ER/NMW6OlKW9zbB8KvIJxz+SabVUw1wI6k13XhumQ3AvMJTv7rgavMLGFm9cA3gdeAnUCzmf0ha5FKUJi+j8POvl7U3gbhnMsv2UwQ6ToNpE5T+k6C+SWmAYuAGyWNlTSO4GpjdlhWLunStB8iXS5plaRVjY1DPwJ5Q1MHY0oKGVMSHfL3ds65kSybCaIOmJ70upZDq4kuA+6zwBbgFWAe8DbgFTNrNLNu4D7gDek+xMxuNrPFZra4urp6yL9EvQ/z7ZzLU9lMEM8CcyXNllRE0Mj8QMo2rwHnAUiaTDDHxLZw/VJJZWH7xHnApizGOqhgJjlPEM65/JO1Rmozi0u6EniI4C6kW81sg6QrwvLlwPXATyWtJ6iSusbM9gJ7Jd0DrCFotF4L3JytWA+nobmDM2ZU5eKjnXMup7J5FxNmtgJYkbJuedJyA/COQfa9Drgum/EdSXtXnKb2br+CcM7lJe9JfRgNPsy3cy6PeYI4DJ8oyDmXzzxBHEaD94FwzuUxTxCH0dDUQYFg8lhPEM65/OMJ4jDqm2JMGlNCNOKHyTmXf/zMdxhBHwi/enDO5SdPEIexs9k7yTnn8pcniEEkEkZDsw+z4ZzLX54gBrGvrYuueMKvIJxzecsTxCC8D4RzLt95ghhEb4KYWumN1M65/OQJYhD1YYLwNgjnXL7yBDGInc0xSqMRqsp8oiDnXH7yBDGI3j4QwXQUzjmXfzxBDMInCnLO5TtPEIOob4oxrdIThHMuf3mCSKMz3sPe1k6/gnDO5TVPEGnsag4mCvJxmJxz+SyrCULS+ZJekrRF0rVpyisl/UbSc5I2SLosqaxK0j2SXpS0SdLrsxlrMr/F1TnnspggJEWAm4ALgAXAJZIWpGz2eWCjmZ0OnAt8S1JRWPY94EEzmwecDmzKVqypeqca9Som51w+y+YVxBJgi5ltM7Mu4C7g4pRtDBij4F7SCmA/EJc0Fngz8BMAM+sys6YsxjpAby/qKd6L2jmXx7KZIGqAHUmv68J1yW4E5gMNwHrgKjNLAHOARuC/Ja2VdIuk8nQfIulySaskrWpsbBySwBuaOphYUURJNDIk7+eccyeibCaIdD3MLOX1O4F1wDRgEXBjePVQCJwJ/NDMzgDagEPaMADM7GYzW2xmi6urq4ck8HrvA+Gcc1lNEHXA9KTXtQRXCskuA+6zwBbgFWBeuG+dmT0dbncPQcIYFjubvQ+Ec85lM0E8C8yVNDtseF4GPJCyzWvAeQCSJgOnANvMbBewQ9Ip4XbnARuzGGsfM/Ne1M45R1CVkxVmFpd0JfAQEAFuNbMNkq4Iy5cD1wM/lbSeoErqGjPbG77FF4Dbw+SyjeBqI+uaO7pp7+rxPhDOubyXtQQBYGYrgBUp65YnLTcA7xhk33XA4mzGl473gXDOuYD3pE7R2wdiqicI51ye8wSRon+qUa9ics7lN08QKRqaOyiKFDCxvDjXoTjnXE55gkjR0BRjalUJBQU+UZBzLr95gkjR0NThfSCccw5PEIfwPhDOORfwBJGkuyfB7paYN1A75xyeIAbY3RIjYT7Mt3POgSeIAXY2+zwQzjnXyxNEkoa+XtRexeScc54gkvQOszHV72JyzjlPEMkamjqoKotSXpzVIaqcc+6E4AkiSUNTzK8enHMu5AkiSUNTh7c/OOdcyBNEEu8k55xz/TxBhA7GummJxT1BOOdcyBNEyPtAOOfcQJ4gQvXeB8I55wbIaoKQdL6klyRtkXRtmvJKSb+R9JykDZIuSymPSFor6bfZjBP6O8n5XUzOORfIWoKQFAFuAi4AFgCXSFqQstnngY1mdjpwLvAtSUVJ5VcBm7IVY7KGpg4iBWLSGJ8oyDnnILtXEEuALWa2zcy6gLuAi1O2MWCMJAEVwH4gDiCpFrgQuCWLMfbZ2RRjytgSCiNe6+acc5DdBFED7Eh6XReuS3YjMB9oANYDV5lZIiz7LvAlIMFhSLpc0ipJqxobG4852PqmDh/m2znnkmQzQaSbs9NSXr8TWAdMAxYBN0oaK+ndwB4zW32kDzGzm81ssZktrq6uPuZgG5q9D4RzziXLZoKoA6Ynva4luFJIdhlwnwW2AK8A84A3AhdJepWgauqtkn6erUB7EsauZh9mwznnkmUzQTwLzJU0O2x4XgY8kLLNa8B5AJImA6cA28zsy2ZWa2azwv3+bGaXZivQva2ddPeY3+LqnHNJsjZsqZnFJV0JPAREgFvNbIOkK8Ly5cD1wE8lrSeokrrGzPZmK6bB9PaB8Com55zrl9Vxrc1sBbAiZd3ypOUG4B1HeI9HgUezEF6fnU3ei9o551L5PZ30d5LzBOGcc/08QRBUMVUUFzK2xCcKcs65Xp4gCK4gplaWEPTXc845B54gAO8D4Zxz6XiCIJhq1BOEc84NlPcJIpEw3nJyNWfPGpfrUJxzbkTJ+1bZggLxnQ8vynUYzjk34uT9FYRzzrn0PEE455xLyxOEc865tDxBOOecS8sThHPOubQ8QTjnnEvLE4Rzzrm0PEE455xLS2ap00SfuCQ1AtuPcfeJwLBPVnQUPL7j4/EdH4/v+Izk+GaaWXW6glGVII6HpFVmtjjXcQzG4zs+Ht/x8fiOz0iPbzBexeSccy4tTxDOOefS8gTR7+ZcB3AEHt/x8fiOj8d3fEZ6fGl5G4Rzzrm0/ArCOedcWp4gnHPOpZVXCULS+ZJekrRF0rVpyiXpv8Ly5yWdOczxTZf0iKRNkjZIuirNNudKapa0Lnz82zDH+Kqk9eFnr0pTnrNjKOmUpOOyTlKLpKtTthnW4yfpVkl7JL2QtG68pD9K2hw+p53O8Eh/r1mM7/9IejH897tfUtUg+x72byGL8X1VUn3Sv+G7Btk3V8fvF0mxvSpp3SD7Zv34HTczy4sHEAG2AnOAIuA5YEHKNu8Cfg8IWAo8PcwxTgXODJfHAC+nifFc4Lc5PI6vAhMPU57TY5jy772LoBNQzo4f8GbgTOCFpHXfAK4Nl68F/nOQ+A/795rF+N4BFIbL/5kuvkz+FrIY31eBf8zg3z8nxy+l/FvAv+Xq+B3vI5+uIJYAW8xsm5l1AXcBF6dsczHwMws8BVRJmjpcAZrZTjNbEy4fBDYBNcP1+UMkp8cwyXnAVjM71p71Q8LMHgf2p6y+GLgtXL4NeG+aXTP5e81KfGb2BzOLhy+fAmqH+nMzNcjxy0TOjl8vSQI+BNw51J87XPIpQdQAO5Je13HoyTeTbYaFpFnAGcDTaYpfL+k5Sb+XdOrwRoYBf5C0WtLlacpHyjFcxuD/MXN5/AAmm9lOCH4UAJPSbDNSjuOnCK4I0znS30I2XRlWgd06SBXdSDh+fw3sNrPNg5Tn8vhlJJ8ShNKsS73HN5Ntsk5SBXAvcLWZtaQUryGoNjkd+D7wq2EO741mdiZwAfB5SW9OKc/5MZRUBFwE/DJNca6PX6ZGwnH8ZyAO3D7IJkf6W8iWHwInAYuAnQTVOKlyfvyASzj81UOujl/G8ilB1AHTk17XAg3HsE1WSYoSJIfbzey+1HIzazGz1nB5BRCVNHG44jOzhvB5D3A/waV8spwfQ4L/cGvMbHdqQa6PX2h3b7Vb+LwnzTY5PY6SPgG8G/iohRXmqTL4W8gKM9ttZj1mlgB+PMjn5vr4FQLvB34x2Da5On5HI58SxLPAXEmzw1+Yy4AHUrZ5APh4eCfOUqC5typgOIR1lj8BNpnZtwfZZkq4HZKWEPwb7hum+MoljeldJmjMfCFls5wew9Cgv9xyefySPAB8Ilz+BPDrNNtk8veaFZLOB64BLjKz9kG2yeRvIVvxJbdpvW+Qz83Z8Qu9DXjRzOrSFeby+B2VXLeSD+eD4A6blwnubvjncN0VwBXhsoCbwvL1wOJhju9NBJfBzwPrwse7UmK8EthAcFfGU8AbhjG+OeHnPhfGMBKPYRnBCb8yaV3Ojh9BotoJdBP8qv00MAH4E7A5fB4fbjsNWHG4v9dhim8LQf1979/g8tT4BvtbGKb4/if823qe4KQ/dSQdv3D9T3v/5pK2Hfbjd7wPH2rDOedcWvlUxeScc+4oeIJwzjmXlicI55xzaXmCcM45l5YnCOecc2l5gnBuBFAwyuxvcx2Hc8k8QTjnnEvLE4RzR0HSpZKeCcfw/5GkiKRWSd+StEbSnyRVh9sukvRU0rwK48L1fyXp4XDAwDWSTgrfvkLSPQrmYri9t8e3c7niCcK5DEmaD3yYYJC1RUAP8FGgnGDspzOBx4Drwl1+BlxjZqcR9PztXX87cJMFAwa+gaAnLgSj914NLCDoafvGLH8l5w6rMNcBOHcCOQ84C3g2/HFfSjDQXoL+Qdl+DtwnqRKoMrPHwvW3Ab8Mx9+pMbP7AcwsBhC+3zMWjt0TzkI2C3gi69/KuUF4gnAucwJuM7MvD1gp/WvKdocbv+Zw1UadScs9+P9Pl2NexeRc5v4EfFDSJOibW3omwf+jD4bbfAR4wsyagQOS/jpc/zHgMQvm96iT9N7wPYollQ3nl3AuU/4LxbkMmdlGSf9CMAtYAcEInp8H2oBTJa0GmgnaKSAYynt5mAC2AZeF6z8G/EjSv4fv8f8M49dwLmM+mqtzx0lSq5lV5DoO54aaVzE555xLy68gnHPOpeVXEM4559LyBOGccy4tTxDOOefS8gThnHMuLU8Qzjnn0vq/YlQJcbtqLWYAAAAASUVORK5CYII=\n",
|
| 725 |
+
"text/plain": [
|
| 726 |
+
"<Figure size 432x288 with 1 Axes>"
|
| 727 |
+
]
|
| 728 |
+
},
|
| 729 |
+
"metadata": {
|
| 730 |
+
"needs_background": "light"
|
| 731 |
+
},
|
| 732 |
+
"output_type": "display_data"
|
| 733 |
+
},
|
| 734 |
+
{
|
| 735 |
+
"data": {
|
| 736 |
+
"text/plain": [
|
| 737 |
+
"<Figure size 432x288 with 0 Axes>"
|
| 738 |
+
]
|
| 739 |
+
},
|
| 740 |
+
"metadata": {},
|
| 741 |
+
"output_type": "display_data"
|
| 742 |
+
}
|
| 743 |
+
],
|
| 744 |
+
"source": [
|
| 745 |
+
"plt.plot(history.history['accuracy'])\n",
|
| 746 |
+
"plt.plot(history.history['val_accuracy'])\n",
|
| 747 |
+
"plt.title('model accuracy')\n",
|
| 748 |
+
"plt.ylabel('accuracy')\n",
|
| 749 |
+
"plt.xlabel('epoch')\n",
|
| 750 |
+
"plt.legend(['train', 'val'], loc='upper left')\n",
|
| 751 |
+
"plt.show()\n",
|
| 752 |
+
"plt.savefig('trai_validation_accuracy')"
|
| 753 |
+
]
|
| 754 |
+
},
|
| 755 |
+
{
|
| 756 |
+
"cell_type": "markdown",
|
| 757 |
+
"metadata": {
|
| 758 |
+
"id": "5ejPmkDseEn0"
|
| 759 |
+
},
|
| 760 |
+
"source": [
|
| 761 |
+
"# Prediction"
|
| 762 |
+
]
|
| 763 |
+
},
|
| 764 |
+
{
|
| 765 |
+
"cell_type": "code",
|
| 766 |
+
"execution_count": 2,
|
| 767 |
+
"metadata": {
|
| 768 |
+
"executionInfo": {
|
| 769 |
+
"elapsed": 16181,
|
| 770 |
+
"status": "ok",
|
| 771 |
+
"timestamp": 1691417034020,
|
| 772 |
+
"user": {
|
| 773 |
+
"displayName": "JOBANPREET SINGH",
|
| 774 |
+
"userId": "15968293240343091979"
|
| 775 |
+
},
|
| 776 |
+
"user_tz": -330
|
| 777 |
+
},
|
| 778 |
+
"id": "up50mntoTtsG"
|
| 779 |
+
},
|
| 780 |
+
"outputs": [
|
| 781 |
+
{
|
| 782 |
+
"name": "stderr",
|
| 783 |
+
"output_type": "stream",
|
| 784 |
+
"text": [
|
| 785 |
+
"2023-10-01 17:08:48.123898: I tensorflow/compiler/xla/stream_executor/cuda/cuda_gpu_executor.cc:894] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n",
|
| 786 |
+
"2023-10-01 17:08:48.124943: W tensorflow/core/common_runtime/gpu/gpu_device.cc:2211] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.\n",
|
| 787 |
+
"Skipping registering GPU devices...\n"
|
| 788 |
+
]
|
| 789 |
+
}
|
| 790 |
+
],
|
| 791 |
+
"source": [
|
| 792 |
+
"from keras.models import Model\n",
|
| 793 |
+
"from keras.layers import Input, LSTM, Dense, RNN\n",
|
| 794 |
+
"from tensorflow import keras\n",
|
| 795 |
+
"import numpy as np\n",
|
| 796 |
+
"import pickle\n",
|
| 797 |
+
"\n",
|
| 798 |
+
"model = keras.models.load_model(\"s2s\")\n",
|
| 799 |
+
"\n",
|
| 800 |
+
"with open(\"input_token_index.pkl\", \"rb\") as file:\n",
|
| 801 |
+
" input_token_index = pickle.load(file)\n",
|
| 802 |
+
"\n",
|
| 803 |
+
"with open(\"target_token_index.pkl\", \"rb\") as file:\n",
|
| 804 |
+
" target_token_index = pickle.load(file)\n",
|
| 805 |
+
"\n",
|
| 806 |
+
"num_encoder_tokens=len(input_token_index)\n",
|
| 807 |
+
"num_decoder_tokens=len(target_token_index)\n",
|
| 808 |
+
"latent_dim=256\n",
|
| 809 |
+
"max_encoder_seq_length=25\n",
|
| 810 |
+
"max_decoder_seq_length=24"
|
| 811 |
+
]
|
| 812 |
+
},
|
| 813 |
+
{
|
| 814 |
+
"cell_type": "code",
|
| 815 |
+
"execution_count": 3,
|
| 816 |
+
"metadata": {
|
| 817 |
+
"colab": {
|
| 818 |
+
"base_uri": "https://localhost:8080/"
|
| 819 |
+
},
|
| 820 |
+
"executionInfo": {
|
| 821 |
+
"elapsed": 15,
|
| 822 |
+
"status": "ok",
|
| 823 |
+
"timestamp": 1691417035680,
|
| 824 |
+
"user": {
|
| 825 |
+
"displayName": "JOBANPREET SINGH",
|
| 826 |
+
"userId": "15968293240343091979"
|
| 827 |
+
},
|
| 828 |
+
"user_tz": -330
|
| 829 |
+
},
|
| 830 |
+
"id": "9_9kU2VU6cA7",
|
| 831 |
+
"outputId": "79b2fa7f-fc0e-46b4-9f3c-0f8209621ae6"
|
| 832 |
+
},
|
| 833 |
+
"outputs": [
|
| 834 |
+
{
|
| 835 |
+
"name": "stdout",
|
| 836 |
+
"output_type": "stream",
|
| 837 |
+
"text": [
|
| 838 |
+
"Model: \"model\"\n",
|
| 839 |
+
"__________________________________________________________________________________________________\n",
|
| 840 |
+
" Layer (type) Output Shape Param # Connected to \n",
|
| 841 |
+
"==================================================================================================\n",
|
| 842 |
+
" encoder_inputs (InputLayer [(None, None, 27)] 0 [] \n",
|
| 843 |
+
" ) \n",
|
| 844 |
+
" \n",
|
| 845 |
+
" decoder_inputs (InputLayer [(None, None, 60)] 0 [] \n",
|
| 846 |
+
" ) \n",
|
| 847 |
+
" \n",
|
| 848 |
+
" encoder_lstm1 (LSTM) [(None, None, 256), 290816 ['encoder_inputs[0][0]'] \n",
|
| 849 |
+
" (None, 256), \n",
|
| 850 |
+
" (None, 256)] \n",
|
| 851 |
+
" \n",
|
| 852 |
+
" decoder_lstm1 (LSTM) [(None, None, 256), 324608 ['decoder_inputs[0][0]', \n",
|
| 853 |
+
" (None, 256), 'encoder_lstm1[0][1]', \n",
|
| 854 |
+
" (None, 256)] 'encoder_lstm1[0][2]'] \n",
|
| 855 |
+
" \n",
|
| 856 |
+
" encoder_lstm2 (LSTM) [(None, 256), 525312 ['encoder_lstm1[0][0]'] \n",
|
| 857 |
+
" (None, 256), \n",
|
| 858 |
+
" (None, 256)] \n",
|
| 859 |
+
" \n",
|
| 860 |
+
" decoder_lstm2 (LSTM) [(None, None, 256), 525312 ['decoder_lstm1[0][0]', \n",
|
| 861 |
+
" (None, 256), 'encoder_lstm2[0][1]', \n",
|
| 862 |
+
" (None, 256)] 'encoder_lstm2[0][2]'] \n",
|
| 863 |
+
" \n",
|
| 864 |
+
" decoder_dense (Dense) (None, None, 60) 15420 ['decoder_lstm2[0][0]'] \n",
|
| 865 |
+
" \n",
|
| 866 |
+
"==================================================================================================\n",
|
| 867 |
+
"Total params: 1681468 (6.41 MB)\n",
|
| 868 |
+
"Trainable params: 1681468 (6.41 MB)\n",
|
| 869 |
+
"Non-trainable params: 0 (0.00 Byte)\n",
|
| 870 |
+
"__________________________________________________________________________________________________\n"
|
| 871 |
+
]
|
| 872 |
+
}
|
| 873 |
+
],
|
| 874 |
+
"source": [
|
| 875 |
+
"model.summary()"
|
| 876 |
+
]
|
| 877 |
+
},
|
| 878 |
+
{
|
| 879 |
+
"cell_type": "code",
|
| 880 |
+
"execution_count": 4,
|
| 881 |
+
"metadata": {
|
| 882 |
+
"colab": {
|
| 883 |
+
"base_uri": "https://localhost:8080/"
|
| 884 |
+
},
|
| 885 |
+
"executionInfo": {
|
| 886 |
+
"elapsed": 417,
|
| 887 |
+
"status": "ok",
|
| 888 |
+
"timestamp": 1691417038313,
|
| 889 |
+
"user": {
|
| 890 |
+
"displayName": "JOBANPREET SINGH",
|
| 891 |
+
"userId": "15968293240343091979"
|
| 892 |
+
},
|
| 893 |
+
"user_tz": -330
|
| 894 |
+
},
|
| 895 |
+
"id": "HcGQ2zw76cM8",
|
| 896 |
+
"outputId": "8c645685-813f-4cdd-d9ab-7655d20ad8a8"
|
| 897 |
+
},
|
| 898 |
+
"outputs": [
|
| 899 |
+
{
|
| 900 |
+
"data": {
|
| 901 |
+
"text/plain": [
|
| 902 |
+
"[<keras.src.engine.input_layer.InputLayer at 0x7fe97008fc10>,\n",
|
| 903 |
+
" <keras.src.engine.input_layer.InputLayer at 0x7fe969479e10>,\n",
|
| 904 |
+
" <keras.src.layers.rnn.lstm.LSTM at 0x7fe9694a1c10>,\n",
|
| 905 |
+
" <keras.src.layers.rnn.lstm.LSTM at 0x7fe96addda90>,\n",
|
| 906 |
+
" <keras.src.layers.rnn.lstm.LSTM at 0x7fe968d83fd0>,\n",
|
| 907 |
+
" <keras.src.layers.rnn.lstm.LSTM at 0x7fe968d92ad0>,\n",
|
| 908 |
+
" <keras.src.layers.core.dense.Dense at 0x7fe969e64c50>]"
|
| 909 |
+
]
|
| 910 |
+
},
|
| 911 |
+
"execution_count": 4,
|
| 912 |
+
"metadata": {},
|
| 913 |
+
"output_type": "execute_result"
|
| 914 |
+
}
|
| 915 |
+
],
|
| 916 |
+
"source": [
|
| 917 |
+
"model.layers"
|
| 918 |
+
]
|
| 919 |
+
},
|
| 920 |
+
{
|
| 921 |
+
"cell_type": "code",
|
| 922 |
+
"execution_count": 5,
|
| 923 |
+
"metadata": {
|
| 924 |
+
"colab": {
|
| 925 |
+
"base_uri": "https://localhost:8080/"
|
| 926 |
+
},
|
| 927 |
+
"id": "b3RguYBW7xKR",
|
| 928 |
+
"outputId": "1fc1a7d3-e784-4dcb-f802-a9248286cf0d"
|
| 929 |
+
},
|
| 930 |
+
"outputs": [
|
| 931 |
+
{
|
| 932 |
+
"data": {
|
| 933 |
+
"text/plain": [
|
| 934 |
+
"[<KerasTensor: shape=(None, None, 27) dtype=float32 (created by layer 'encoder_inputs')>,\n",
|
| 935 |
+
" <KerasTensor: shape=(None, None, 60) dtype=float32 (created by layer 'decoder_inputs')>]"
|
| 936 |
+
]
|
| 937 |
+
},
|
| 938 |
+
"execution_count": 5,
|
| 939 |
+
"metadata": {},
|
| 940 |
+
"output_type": "execute_result"
|
| 941 |
+
}
|
| 942 |
+
],
|
| 943 |
+
"source": [
|
| 944 |
+
"model.input"
|
| 945 |
+
]
|
| 946 |
+
},
|
| 947 |
+
{
|
| 948 |
+
"cell_type": "code",
|
| 949 |
+
"execution_count": 6,
|
| 950 |
+
"metadata": {
|
| 951 |
+
"executionInfo": {
|
| 952 |
+
"elapsed": 928,
|
| 953 |
+
"status": "ok",
|
| 954 |
+
"timestamp": 1691417039973,
|
| 955 |
+
"user": {
|
| 956 |
+
"displayName": "JOBANPREET SINGH",
|
| 957 |
+
"userId": "15968293240343091979"
|
| 958 |
+
},
|
| 959 |
+
"user_tz": -330
|
| 960 |
+
},
|
| 961 |
+
"id": "87egvtLMTtwo"
|
| 962 |
+
},
|
| 963 |
+
"outputs": [],
|
| 964 |
+
"source": [
|
| 965 |
+
"encoder_inputs = model.input[0] # input_1\n",
|
| 966 |
+
"encoder_lstm_1 = model.layers[2]\n",
|
| 967 |
+
"encoder_outputs_1, h1, c1 = encoder_lstm_1(encoder_inputs)\n",
|
| 968 |
+
"encoder_lstm_2 = model.layers[4]\n",
|
| 969 |
+
"encoder_outputs, h2, c2 = encoder_lstm_2(encoder_outputs_1)\n",
|
| 970 |
+
"encoder_states = [h1, c1, h2, c2]\n",
|
| 971 |
+
"decoder_inputs=model.input[1]\n",
|
| 972 |
+
"\n",
|
| 973 |
+
"out_layer1 = model.layers[3]\n",
|
| 974 |
+
"out_layer2 = model.layers[5]\n",
|
| 975 |
+
"\n",
|
| 976 |
+
"\n",
|
| 977 |
+
"decoder_dense = model.layers[6]"
|
| 978 |
+
]
|
| 979 |
+
},
|
| 980 |
+
{
|
| 981 |
+
"cell_type": "code",
|
| 982 |
+
"execution_count": 7,
|
| 983 |
+
"metadata": {
|
| 984 |
+
"executionInfo": {
|
| 985 |
+
"elapsed": 1125,
|
| 986 |
+
"status": "ok",
|
| 987 |
+
"timestamp": 1691417043147,
|
| 988 |
+
"user": {
|
| 989 |
+
"displayName": "JOBANPREET SINGH",
|
| 990 |
+
"userId": "15968293240343091979"
|
| 991 |
+
},
|
| 992 |
+
"user_tz": -330
|
| 993 |
+
},
|
| 994 |
+
"id": "R5jt4ZFqogoT"
|
| 995 |
+
},
|
| 996 |
+
"outputs": [],
|
| 997 |
+
"source": [
|
| 998 |
+
"# Reverse-lookup token index to decode sequences back to\n",
|
| 999 |
+
"# something readable.\n",
|
| 1000 |
+
"reverse_input_char_index = dict(\n",
|
| 1001 |
+
" (i, char) for char, i in input_token_index.items())\n",
|
| 1002 |
+
"reverse_target_char_index = dict(\n",
|
| 1003 |
+
" (i, char) for char, i in target_token_index.items())\n",
|
| 1004 |
+
"\n",
|
| 1005 |
+
"\n",
|
| 1006 |
+
"encoder_model = Model(encoder_inputs, encoder_states)\n",
|
| 1007 |
+
"\n",
|
| 1008 |
+
"decoder_state_input_h = Input(shape=(latent_dim,))\n",
|
| 1009 |
+
"decoder_state_input_c = Input(shape=(latent_dim,))\n",
|
| 1010 |
+
"decoder_state_input_h1 = Input(shape=(latent_dim,))\n",
|
| 1011 |
+
"decoder_state_input_c1 = Input(shape=(latent_dim,))\n",
|
| 1012 |
+
"decoder_states_inputs = [decoder_state_input_h, decoder_state_input_c,\n",
|
| 1013 |
+
" decoder_state_input_h1, decoder_state_input_c1]\n",
|
| 1014 |
+
"d_o, state_h, state_c = out_layer1(\n",
|
| 1015 |
+
" decoder_inputs, initial_state=decoder_states_inputs[:2])\n",
|
| 1016 |
+
"d_o, state_h1, state_c1 = out_layer2(\n",
|
| 1017 |
+
" d_o, initial_state=decoder_states_inputs[-2:])\n",
|
| 1018 |
+
"decoder_states = [state_h, state_c, state_h1, state_c1]\n",
|
| 1019 |
+
"decoder_outputs = decoder_dense(d_o)\n",
|
| 1020 |
+
"decoder_model = Model(\n",
|
| 1021 |
+
" [decoder_inputs] + decoder_states_inputs,\n",
|
| 1022 |
+
" [decoder_outputs] + decoder_states)\n",
|
| 1023 |
+
"\n",
|
| 1024 |
+
"\n",
|
| 1025 |
+
"def decode_sequence(input_seq):\n",
|
| 1026 |
+
" # Encode the input as state vectors.\n",
|
| 1027 |
+
" states_value = encoder_model.predict(input_seq)\n",
|
| 1028 |
+
"\n",
|
| 1029 |
+
" # Generate empty target sequence of length 1.\n",
|
| 1030 |
+
" target_seq = np.zeros((1, 1, num_decoder_tokens))\n",
|
| 1031 |
+
" # Populate the first character of target sequence with the start character.\n",
|
| 1032 |
+
" target_seq[0, 0, target_token_index['\\t']] = 1.\n",
|
| 1033 |
+
"\n",
|
| 1034 |
+
" # Sampling loop for a batch of sequences\n",
|
| 1035 |
+
" # (to simplify, here we assume a batch of size 1).\n",
|
| 1036 |
+
" stop_condition = False\n",
|
| 1037 |
+
" decoded_sentence = ''\n",
|
| 1038 |
+
" while not stop_condition:\n",
|
| 1039 |
+
" output_tokens, h, c, h1, c1 = decoder_model.predict(\n",
|
| 1040 |
+
" [target_seq] + states_value) #######NOTICE THE ADDITIONAL HIDDEN STATES\n",
|
| 1041 |
+
"\n",
|
| 1042 |
+
" # Sample a token\n",
|
| 1043 |
+
" sampled_token_index = np.argmax(output_tokens[0, -1, :])\n",
|
| 1044 |
+
"\n",
|
| 1045 |
+
" sampled_char = reverse_target_char_index[sampled_token_index]\n",
|
| 1046 |
+
" decoded_sentence += sampled_char\n",
|
| 1047 |
+
"\n",
|
| 1048 |
+
" # Exit condition: either hit max length\n",
|
| 1049 |
+
" # or find stop character.\n",
|
| 1050 |
+
" if (sampled_char == '\\n' or\n",
|
| 1051 |
+
" len(decoded_sentence) > max_decoder_seq_length):\n",
|
| 1052 |
+
" stop_condition = True\n",
|
| 1053 |
+
"\n",
|
| 1054 |
+
" # Update the target sequence (of length 1).\n",
|
| 1055 |
+
" target_seq = np.zeros((1, 1, num_decoder_tokens))\n",
|
| 1056 |
+
" target_seq[0, 0, sampled_token_index] = 1.\n",
|
| 1057 |
+
"\n",
|
| 1058 |
+
" # Update states\n",
|
| 1059 |
+
" states_value = [h, c, h1, c1]\n",
|
| 1060 |
+
"\n",
|
| 1061 |
+
" return decoded_sentence"
|
| 1062 |
+
]
|
| 1063 |
+
},
|
| 1064 |
+
{
|
| 1065 |
+
"cell_type": "code",
|
| 1066 |
+
"execution_count": 25,
|
| 1067 |
+
"metadata": {
|
| 1068 |
+
"colab": {
|
| 1069 |
+
"base_uri": "https://localhost:8080/"
|
| 1070 |
+
},
|
| 1071 |
+
"executionInfo": {
|
| 1072 |
+
"elapsed": 2670,
|
| 1073 |
+
"status": "ok",
|
| 1074 |
+
"timestamp": 1691417217198,
|
| 1075 |
+
"user": {
|
| 1076 |
+
"displayName": "JOBANPREET SINGH",
|
| 1077 |
+
"userId": "15968293240343091979"
|
| 1078 |
+
},
|
| 1079 |
+
"user_tz": -330
|
| 1080 |
+
},
|
| 1081 |
+
"id": "xHrMZD5AwpNT",
|
| 1082 |
+
"outputId": "8c32457e-7a4d-4474-e267-85c622434aef"
|
| 1083 |
+
},
|
| 1084 |
+
"outputs": [
|
| 1085 |
+
{
|
| 1086 |
+
"name": "stdout",
|
| 1087 |
+
"output_type": "stream",
|
| 1088 |
+
"text": [
|
| 1089 |
+
"(3, 25, 27)\n",
|
| 1090 |
+
"1/1 [==============================] - 0s 25ms/step\n",
|
| 1091 |
+
"1/1 [==============================] - 0s 20ms/step\n",
|
| 1092 |
+
"1/1 [==============================] - 0s 19ms/step\n",
|
| 1093 |
+
"1/1 [==============================] - 0s 22ms/step\n",
|
| 1094 |
+
"1/1 [==============================] - 0s 21ms/step\n",
|
| 1095 |
+
"1/1 [==============================] - 0s 20ms/step\n",
|
| 1096 |
+
"1/1 [==============================] - 0s 21ms/step\n",
|
| 1097 |
+
"1/1 [==============================] - 0s 19ms/step\n",
|
| 1098 |
+
"1/1 [==============================] - 0s 19ms/step\n",
|
| 1099 |
+
"1/1 [==============================] - 0s 21ms/step\n",
|
| 1100 |
+
"1/1 [==============================] - 0s 21ms/step\n",
|
| 1101 |
+
"1/1 [==============================] - 0s 20ms/step\n",
|
| 1102 |
+
"1/1 [==============================] - 0s 20ms/step\n",
|
| 1103 |
+
"1/1 [==============================] - 0s 27ms/step\n"
|
| 1104 |
+
]
|
| 1105 |
+
},
|
| 1106 |
+
{
|
| 1107 |
+
"data": {
|
| 1108 |
+
"text/plain": [
|
| 1109 |
+
"['ਤੁਸੀ\\n', 'ਵੇ\\n', 'ਜਾ\\n']"
|
| 1110 |
+
]
|
| 1111 |
+
},
|
| 1112 |
+
"execution_count": 25,
|
| 1113 |
+
"metadata": {},
|
| 1114 |
+
"output_type": "execute_result"
|
| 1115 |
+
}
|
| 1116 |
+
],
|
| 1117 |
+
"source": [
|
| 1118 |
+
"s = [\"tusi\",'ve','ja']\n",
|
| 1119 |
+
"\n",
|
| 1120 |
+
"encoder_input_data = np.zeros(\n",
|
| 1121 |
+
" (len(s), max_encoder_seq_length, num_encoder_tokens), dtype=\"float32\"\n",
|
| 1122 |
+
")\n",
|
| 1123 |
+
"\n",
|
| 1124 |
+
"print(encoder_input_data.shape)\n",
|
| 1125 |
+
"\n",
|
| 1126 |
+
"for i, input_text in enumerate(s):\n",
|
| 1127 |
+
" for t, char in enumerate(input_text):\n",
|
| 1128 |
+
" encoder_input_data[i, t, input_token_index[char]] = 1.0\n",
|
| 1129 |
+
" encoder_input_data[i, t + 1 :, input_token_index[\" \"]] = 1.0\n",
|
| 1130 |
+
"\n",
|
| 1131 |
+
"decoded_sentences = []\n",
|
| 1132 |
+
"for input_data in encoder_input_data:\n",
|
| 1133 |
+
" decoded_sentence = decode_sequence(input_data[np.newaxis, :, :])\n",
|
| 1134 |
+
" decoded_sentences.append(decoded_sentence)\n",
|
| 1135 |
+
"decoded_sentences\n",
|
| 1136 |
+
"\n"
|
| 1137 |
+
]
|
| 1138 |
+
},
|
| 1139 |
+
{
|
| 1140 |
+
"cell_type": "code",
|
| 1141 |
+
"execution_count": null,
|
| 1142 |
+
"metadata": {
|
| 1143 |
+
"colab": {
|
| 1144 |
+
"base_uri": "https://localhost:8080/"
|
| 1145 |
+
},
|
| 1146 |
+
"id": "loiYIxj6wpS0",
|
| 1147 |
+
"outputId": "f17c8474-2202-4536-f10d-c962ff88c9a2"
|
| 1148 |
+
},
|
| 1149 |
+
"outputs": [
|
| 1150 |
+
{
|
| 1151 |
+
"name": "stdout",
|
| 1152 |
+
"output_type": "stream",
|
| 1153 |
+
"text": [
|
| 1154 |
+
"2.13.0\n"
|
| 1155 |
+
]
|
| 1156 |
+
}
|
| 1157 |
+
],
|
| 1158 |
+
"source": [
|
| 1159 |
+
"import tensorflow as tf\n",
|
| 1160 |
+
"print(tf.__version__)"
|
| 1161 |
+
]
|
| 1162 |
+
},
|
| 1163 |
+
{
|
| 1164 |
+
"cell_type": "code",
|
| 1165 |
+
"execution_count": null,
|
| 1166 |
+
"metadata": {
|
| 1167 |
+
"id": "j0YUpIcxLfbb"
|
| 1168 |
+
},
|
| 1169 |
+
"outputs": [],
|
| 1170 |
+
"source": []
|
| 1171 |
+
}
|
| 1172 |
+
],
|
| 1173 |
+
"metadata": {
|
| 1174 |
+
"accelerator": "GPU",
|
| 1175 |
+
"colab": {
|
| 1176 |
+
"gpuType": "T4",
|
| 1177 |
+
"provenance": []
|
| 1178 |
+
},
|
| 1179 |
+
"kernelspec": {
|
| 1180 |
+
"display_name": "Python 3 (ipykernel)",
|
| 1181 |
+
"language": "python",
|
| 1182 |
+
"name": "python3"
|
| 1183 |
+
},
|
| 1184 |
+
"language_info": {
|
| 1185 |
+
"codemirror_mode": {
|
| 1186 |
+
"name": "ipython",
|
| 1187 |
+
"version": 3
|
| 1188 |
+
},
|
| 1189 |
+
"file_extension": ".py",
|
| 1190 |
+
"mimetype": "text/x-python",
|
| 1191 |
+
"name": "python",
|
| 1192 |
+
"nbconvert_exporter": "python",
|
| 1193 |
+
"pygments_lexer": "ipython3",
|
| 1194 |
+
"version": "3.11.4"
|
| 1195 |
+
}
|
| 1196 |
+
},
|
| 1197 |
+
"nbformat": 4,
|
| 1198 |
+
"nbformat_minor": 1
|
| 1199 |
+
}
|
transliteration.csv
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ad0a5556d4fe7c6cf4ca1bbde4369aafd9e1edd176529fcaee1b503ecb3f75f8
|
| 3 |
+
size 16052186
|