Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save skilfoy/7ca21eef17768abd18562534c3bc0110 to your computer and use it in GitHub Desktop.
Save skilfoy/7ca21eef17768abd18562534c3bc0110 to your computer and use it in GitHub Desktop.
project-6-english-to-german-translation-with-rnn.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"machine_shape": "hm",
"gpuType": "A100",
"mount_file_id": "1zCUsb8d_kgngWoqOo4mgUvqMgEpg2NCN",
"authorship_tag": "ABX9TyOm6Gogu3BXC49jXrnpSnin",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/skilfoy/7ca21eef17768abd18562534c3bc0110/project-6-english-to-german-translation-with-rnn.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# Project 6 - Natural Language Processing\n",
"\n",
"In this notebook, I'll create a sequence-to-sequence NLP model using RNN to translate English to German."
],
"metadata": {
"id": "ly-alOU65QY9"
}
},
{
"cell_type": "markdown",
"source": [
"## Notebook Preparation"
],
"metadata": {
"id": "ZlHRmZ-R9RKh"
}
},
{
"cell_type": "markdown",
"source": [
"Import libraries."
],
"metadata": {
"id": "SgcvYq_Y7C5W"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "eG4FjVgZ5Gl9"
},
"outputs": [],
"source": [
"import os\n",
"import random\n",
"import numpy as np\n",
"from tabulate import tabulate\n",
"import matplotlib.pyplot as plt\n",
"import textwrap\n",
"from sklearn.model_selection import train_test_split\n",
"import tensorflow as tf\n",
"from tensorflow.keras.models import Model\n",
"from tensorflow.keras.layers import Input, LSTM, Dense\n",
"from tensorflow.keras.callbacks import EarlyStopping"
]
},
{
"cell_type": "markdown",
"source": [
"Set seeds for reproducibility."
],
"metadata": {
"id": "LpwRK8u7l21j"
}
},
{
"cell_type": "code",
"source": [
"os.environ['PYTHONHASHSEED']='7'\n",
"random.seed(7)\n",
"np.random.seed(7)\n",
"tf.random.set_seed(7)\n",
"tf.keras.utils.set_random_seed(7)"
],
"metadata": {
"id": "ei17a5oImHaI"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Data Preparation"
],
"metadata": {
"id": "GQ7mHbg09TmH"
}
},
{
"cell_type": "markdown",
"source": [
"Set the hyperparameters."
],
"metadata": {
"id": "wMatu-gq_RzG"
}
},
{
"cell_type": "code",
"source": [
"batch_size = 64\n",
"epochs = 100\n",
"latent_dim = 256\n",
"num_samples = 10000"
],
"metadata": {
"id": "-SXXxw7I_Tdn"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Load the data."
],
"metadata": {
"id": "rdl7F0zF9yJP"
}
},
{
"cell_type": "code",
"source": [
"with open('/content/drive/MyDrive/Colab Notebooks/DSCI619/Project 6/deu-eng.txt', 'r', encoding='utf-8') as f:\n",
" lines = f.read().split('\\n')"
],
"metadata": {
"id": "AJdETeoG8Qt-"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Prepare the data."
],
"metadata": {
"id": "hn0nVdMM90NI"
}
},
{
"cell_type": "code",
"source": [
"input_texts = []\n",
"target_texts = []\n",
"input_characters = set()\n",
"target_characters = set()"
],
"metadata": {
"id": "VVreZMz491co"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"for line in lines[: min(num_samples, len(lines) - 1)]:\n",
" input_text, target_text, _ = line.split('\\t')\n",
" target_text = \"\\t\" + target_text + \"\\n\"\n",
" input_texts.append(input_text)\n",
" target_texts.append(target_text)\n",
" for char in input_text:\n",
" if char not in input_characters:\n",
" input_characters.add(char)\n",
" for char in target_text:\n",
" if char not in target_characters:\n",
" target_characters.add(char)"
],
"metadata": {
"id": "hcZfVH1892qi"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Sort the input and output characters to get encoder and decoder token lengths and obtain maximum input and output text sizes."
],
"metadata": {
"id": "GP0cBxtj-AIp"
}
},
{
"cell_type": "code",
"source": [
"input_characters = sorted(list(input_characters))\n",
"target_characters = sorted(list(target_characters))\n",
"num_encoder_tokens = len(input_characters)\n",
"num_decoder_tokens = len(target_characters)\n",
"max_encoder_seq_length = max([len(txt) for txt in input_texts])\n",
"max_decoder_seq_length = max([len(txt) for txt in target_texts])"
],
"metadata": {
"id": "3zNAZnXtBqy2"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"table_data = [\n",
" [\"Number of samples\", len(input_texts)],\n",
" [\"Number of unique input tokens\", num_encoder_tokens],\n",
" [\"Number of unique output tokens\", num_decoder_tokens],\n",
" [\"Max sequence length for inputs\", max_encoder_seq_length],\n",
" [\"Max sequence length for outputs\", max_decoder_seq_length]]\n",
"print(tabulate(table_data, headers=[\"Metric\", \"Value\"], tablefmt=\"fancy_grid\"))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Rsl2egalYFy3",
"outputId": "be9ea10e-d130-4897-ae32-5ac63bae1b4d"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"╒═════════════════════════════════╤═════════╕\n",
"│ Metric │ Value │\n",
"╞═════════════════════════════════╪═════════╡\n",
"│ Number of samples │ 10000 │\n",
"├─────────────────────────────────┼─────────┤\n",
"│ Number of unique input tokens │ 71 │\n",
"├─────────────────────────────────┼─────────┤\n",
"│ Number of unique output tokens │ 85 │\n",
"├─────────────────────────────────┼─────────┤\n",
"│ Max sequence length for inputs │ 15 │\n",
"├─────────────────────────────────┼─────────┤\n",
"│ Max sequence length for outputs │ 45 │\n",
"╘═════════════════════════════════╧═════════╛\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Map input and target characters to numbers."
],
"metadata": {
"id": "VNRZO2YEEko3"
}
},
{
"cell_type": "markdown",
"source": [
"Create dictionaries to map characters to numbers\n"
],
"metadata": {
"id": "pPJwrHzcEwiq"
}
},
{
"cell_type": "code",
"source": [
"input_token_index = dict([(char, i) for i, char in enumerate(input_characters)])\n",
"target_token_index = dict([(char, i) for i, char in enumerate(target_characters)])"
],
"metadata": {
"id": "ObMFqoy0CZ4F"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Print the mapping dictionaries"
],
"metadata": {
"id": "Im9MZiEjEzOC"
}
},
{
"cell_type": "code",
"source": [
"table_data = [\n",
" [\"Input token index\", input_token_index],\n",
" [\"Target token index\", target_token_index],]\n",
"wrapped_table_data = [[item[0], textwrap.fill(str(item[1]), width=40)] for item in table_data]\n",
"print(tabulate(wrapped_table_data, headers=[\"Index\", \"Contents\"], tablefmt=\"fancy_grid\"))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "u6ChG_KhEy3r",
"outputId": "e8b0ca00-9d7b-44ac-a0ee-b69251b598ca"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"╒════════════════════╤══════════════════════════════════════════╕\n",
"│ Index │ Contents │\n",
"╞════════════════════╪══════════════════════════════════════════╡\n",
"│ Input token index │ {' ': 0, '!': 1, '\"': 2, '$': 3, '%': 4, │\n",
"│ │ \"'\": 5, ',': 6, '-': 7, '.': 8, '0': 9, │\n",
"│ │ '1': 10, '2': 11, '3': 12, '4': 13, '5': │\n",
"│ │ 14, '6': 15, '7': 16, '8': 17, '9': 18, │\n",
"│ │ ':': 19, '?': 20, 'A': 21, 'B': 22, 'C': │\n",
"│ │ 23, 'D': 24, 'E': 25, 'F': 26, 'G': 27, │\n",
"│ │ 'H': 28, 'I': 29, 'J': 30, 'K': 31, 'L': │\n",
"│ │ 32, 'M': 33, 'N': 34, 'O': 35, 'P': 36, │\n",
"│ │ 'Q': 37, 'R': 38, 'S': 39, 'T': 40, 'U': │\n",
"│ │ 41, 'V': 42, 'W': 43, 'Y': 44, 'a': 45, │\n",
"│ │ 'b': 46, 'c': 47, 'd': 48, 'e': 49, 'f': │\n",
"│ │ 50, 'g': 51, 'h': 52, 'i': 53, 'j': 54, │\n",
"│ │ 'k': 55, 'l': 56, 'm': 57, 'n': 58, 'o': │\n",
"│ │ 59, 'p': 60, 'q': 61, 'r': 62, 's': 63, │\n",
"│ │ 't': 64, 'u': 65, 'v': 66, 'w': 67, 'x': │\n",
"│ │ 68, 'y': 69, 'z': 70} │\n",
"├────────────────────┼──────────────────────────────────────────┤\n",
"│ Target token index │ {'\\t': 0, '\\n': 1, ' ': 2, '!': 3, '$': │\n",
"│ │ 4, '%': 5, \"'\": 6, ',': 7, '-': 8, '.': │\n",
"│ │ 9, '0': 10, '1': 11, '2': 12, '3': 13, │\n",
"│ │ '4': 14, '5': 15, '6': 16, '7': 17, '8': │\n",
"│ │ 18, '9': 19, ':': 20, '?': 21, 'A': 22, │\n",
"│ │ 'B': 23, 'C': 24, 'D': 25, 'E': 26, 'F': │\n",
"│ │ 27, 'G': 28, 'H': 29, 'I': 30, 'J': 31, │\n",
"│ │ 'K': 32, 'L': 33, 'M': 34, 'N': 35, 'O': │\n",
"│ │ 36, 'P': 37, 'Q': 38, 'R': 39, 'S': 40, │\n",
"│ │ 'T': 41, 'U': 42, 'V': 43, 'W': 44, 'Y': │\n",
"│ │ 45, 'Z': 46, 'a': 47, 'b': 48, 'c': 49, │\n",
"│ │ 'd': 50, 'e': 51, 'f': 52, 'g': 53, 'h': │\n",
"│ │ 54, 'i': 55, 'j': 56, 'k': 57, 'l': 58, │\n",
"│ │ 'm': 59, 'n': 60, 'o': 61, 'p': 62, 'q': │\n",
"│ │ 63, 'r': 64, 's': 65, 't': 66, 'u': 67, │\n",
"│ │ 'v': 68, 'w': 69, 'x': 70, 'y': 71, 'z': │\n",
"│ │ 72, '\\xa0': 73, 'Ä': 74, 'Ö': 75, 'Ü': │\n",
"│ │ 76, 'ß': 77, 'ä': 78, 'ö': 79, 'ü': 80, │\n",
"│ │ '’': 81, '“': 82, '„': 83, '\\u202f': 84} │\n",
"╘════════════════════╧══════════════════════════════════════════╛\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Convert the input and target texts to numerical values and pad the remaining characters with spaces mapped to 1."
],
"metadata": {
"id": "LMTEieaCG2rn"
}
},
{
"cell_type": "code",
"source": [
"encoder_input_data = np.zeros((len(input_texts),\n",
" max_encoder_seq_length,\n",
" num_encoder_tokens),\n",
" dtype=\"float32\")\n",
"decoder_input_data = np.zeros((len(input_texts),\n",
" max_decoder_seq_length,\n",
" num_decoder_tokens),\n",
" dtype=\"float32\")\n",
"decoder_target_data = np.zeros((len(input_texts),\n",
" max_decoder_seq_length,\n",
" num_decoder_tokens),\n",
" dtype=\"float32\")"
],
"metadata": {
"id": "ZYkvR97gE0xi"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"for i, (input_text, target_text) in enumerate(zip(input_texts, target_texts)):\n",
" for t, char in enumerate(input_text):\n",
" encoder_input_data[i, t, input_token_index[char]] = 1.0\n",
" encoder_input_data[i, t + 1:, input_token_index[' ']] = 1.0\n",
" for t, char in enumerate(target_text):\n",
" decoder_input_data[i, t, target_token_index[char]] = 1.0\n",
" if t > 0:\n",
" decoder_target_data[i, t - 1, target_token_index[char]] = 1.0\n",
" decoder_input_data[i, t + 1:, target_token_index[' ']] = 1.0\n",
" decoder_target_data[i, t:, target_token_index[' ']] = 1.0"
],
"metadata": {
"id": "SdOdM1-XX45j"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"table_data = [\n",
" [\"Encoder Input Shape\", encoder_input_data.shape],\n",
" [\"Decoder Input Shape\", decoder_input_data.shape],\n",
" [\"Decoder Target Shape\", decoder_target_data.shape]]\n",
"print(tabulate(table_data, headers=[\"Shape\", \"Data\"], tablefmt=\"fancy_grid\"))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Xjj2Ju_3G7uS",
"outputId": "8114d129-f654-4545-a5e6-f6ce83e26895"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"╒══════════════════════╤═════════════════╕\n",
"│ Shape │ Data │\n",
"╞══════════════════════╪═════════════════╡\n",
"│ Encoder Input Shape │ (10000, 15, 71) │\n",
"├──────────────────────┼─────────────────┤\n",
"│ Decoder Input Shape │ (10000, 45, 85) │\n",
"├──────────────────────┼─────────────────┤\n",
"│ Decoder Target Shape │ (10000, 45, 85) │\n",
"╘══════════════════════╧═════════════════╛\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"table_data = [\n",
" [\"Encoder Input Data\", encoder_input_data],\n",
" [\"Decoder Input Data\", decoder_input_data],\n",
" [\"Decoder Target Data\", decoder_target_data]]\n",
"print(tabulate(table_data, headers=[\"Data\", \"Matix\"], tablefmt=\"fancy_grid\"))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "6FIaEpzxHE5U",
"outputId": "ebf373db-7fe6-492a-f8d6-589450804b1a"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"╒═════════════════════╤═════════════════════════════╕\n",
"│ Data │ Matix │\n",
"╞═════════════════════╪═════════════════════════════╡\n",
"│ Encoder Input Data │ [[[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [1. 0. 0. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [1. 0. 0. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [1. 0. 0. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ ... │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 1. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 1. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.]]] │\n",
"├─────────────────────┼─────────────────────────────┤\n",
"│ Decoder Input Data │ [[[1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ ... │\n",
"│ │ │\n",
"│ │ [[1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[1. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]]] │\n",
"├─────────────────────┼─────────────────────────────┤\n",
"│ Decoder Target Data │ [[[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ ... │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]] │\n",
"│ │ │\n",
"│ │ [[0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 0. ... 0. 0. 0.] │\n",
"│ │ ... │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.] │\n",
"│ │ [0. 0. 1. ... 0. 0. 0.]]] │\n",
"╘═════════════════════╧═════════════════════════════╛\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"## Develop the RNN Model"
],
"metadata": {
"id": "meKl5CB3KVSf"
}
},
{
"cell_type": "markdown",
"source": [
"Build the LSTM encoder layer."
],
"metadata": {
"id": "a40dZROoKYR5"
}
},
{
"cell_type": "code",
"source": [
"encoder_inputs = Input(shape=(None, num_encoder_tokens))\n",
"encoder_lstm = LSTM(latent_dim, return_state=True, name=\"encoder_lstm\")\n",
"encoder_outputs, state_h, state_c = encoder_lstm(encoder_inputs)\n",
"encoder_states = [state_h, state_c]"
],
"metadata": {
"id": "g0AiQ4aJHQTd"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Build the LSTM decoder layer."
],
"metadata": {
"id": "LYkDtmvQLBE6"
}
},
{
"cell_type": "code",
"source": [
"decoder_inputs = Input(shape=(None, num_decoder_tokens))\n",
"decoder_lstm = LSTM(latent_dim, return_sequences=True, return_state=True, name=\"decoder_lstm\")\n",
"decoder_outputs, _, _ = decoder_lstm(decoder_inputs, initial_state=encoder_states)\n",
"decoder_dense = Dense(num_decoder_tokens, activation='softmax', name=\"decoder_dense\")\n",
"decoder_outputs = decoder_dense(decoder_outputs)"
],
"metadata": {
"id": "pY8EakwbLAcd"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Define the model."
],
"metadata": {
"id": "18IbRkpgMXIH"
}
},
{
"cell_type": "code",
"source": [
"model = Model([encoder_inputs, decoder_inputs], decoder_outputs)"
],
"metadata": {
"id": "klNuabLQMYLH"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Compile the model."
],
"metadata": {
"id": "NcHOp0VwMcYO"
}
},
{
"cell_type": "code",
"source": [
"model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=[\"accuracy\"])"
],
"metadata": {
"id": "WuPoufAIMbjM"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Summarize the model."
],
"metadata": {
"id": "9778hlaXMp0F"
}
},
{
"cell_type": "code",
"source": [
"model.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "e-nMyth2MpbJ",
"outputId": "228cdbb3-e5d8-451c-f4f9-9971bc4ddb9f"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"model\"\n",
"__________________________________________________________________________________________________\n",
" Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
" input_1 (InputLayer) [(None, None, 71)] 0 [] \n",
" \n",
" input_2 (InputLayer) [(None, None, 85)] 0 [] \n",
" \n",
" encoder_lstm (LSTM) [(None, 256), 335872 ['input_1[0][0]'] \n",
" (None, 256), \n",
" (None, 256)] \n",
" \n",
" decoder_lstm (LSTM) [(None, None, 256), 350208 ['input_2[0][0]', \n",
" (None, 256), 'encoder_lstm[0][1]', \n",
" (None, 256)] 'encoder_lstm[0][2]'] \n",
" \n",
" decoder_dense (Dense) (None, None, 85) 21845 ['decoder_lstm[0][0]'] \n",
" \n",
"==================================================================================================\n",
"Total params: 707,925\n",
"Trainable params: 707,925\n",
"Non-trainable params: 0\n",
"__________________________________________________________________________________________________\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Split the data into training and validation sets.\n"
],
"metadata": {
"id": "P09ZqtzYNok9"
}
},
{
"cell_type": "code",
"source": [
"input_texts_train, input_texts_val, target_texts_train, target_texts_val = train_test_split(\n",
" input_texts, target_texts, test_size=0.2, random_state=7)"
],
"metadata": {
"id": "nop2J7sMNsDB"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Initialize early stopping callback."
],
"metadata": {
"id": "ayi2dkSXNzNq"
}
},
{
"cell_type": "code",
"source": [
"early_stopping = EarlyStopping(\n",
" monitor='val_accuracy',\n",
" patience=5,\n",
" min_delta=0.001,\n",
" mode='max')"
],
"metadata": {
"id": "-xR-kgusN22x"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Train the model."
],
"metadata": {
"id": "CCH6UxTqNaY_"
}
},
{
"cell_type": "code",
"source": [
"history = model.fit(\n",
" [encoder_input_data, decoder_input_data],\n",
" decoder_target_data,\n",
" batch_size=batch_size,\n",
" epochs=epochs,\n",
" validation_split=0.2,\n",
" callbacks=[early_stopping])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "oCnslXilM6VU",
"outputId": "e516514c-6cfd-47b1-f6ca-d47b9d44eef5"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/100\n",
"125/125 [==============================] - 7s 14ms/step - loss: 1.5749 - accuracy: 0.6371 - val_loss: 1.5269 - val_accuracy: 0.6051\n",
"Epoch 2/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 1.2227 - accuracy: 0.6634 - val_loss: 1.2634 - val_accuracy: 0.6515\n",
"Epoch 3/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 1.0311 - accuracy: 0.7203 - val_loss: 1.0527 - val_accuracy: 0.7112\n",
"Epoch 4/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 0.8904 - accuracy: 0.7529 - val_loss: 0.9391 - val_accuracy: 0.7452\n",
"Epoch 5/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 0.8093 - accuracy: 0.7709 - val_loss: 0.8919 - val_accuracy: 0.7567\n",
"Epoch 6/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 0.7911 - accuracy: 0.7789 - val_loss: 0.8478 - val_accuracy: 0.7631\n",
"Epoch 7/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.7291 - accuracy: 0.7903 - val_loss: 0.8158 - val_accuracy: 0.7701\n",
"Epoch 8/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.6994 - accuracy: 0.7982 - val_loss: 0.8031 - val_accuracy: 0.7699\n",
"Epoch 9/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.6747 - accuracy: 0.8054 - val_loss: 0.7669 - val_accuracy: 0.7834\n",
"Epoch 10/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.6677 - accuracy: 0.8092 - val_loss: 0.7593 - val_accuracy: 0.7832\n",
"Epoch 11/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.6366 - accuracy: 0.8160 - val_loss: 0.7421 - val_accuracy: 0.7887\n",
"Epoch 12/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 0.6197 - accuracy: 0.8208 - val_loss: 0.7237 - val_accuracy: 0.7940\n",
"Epoch 13/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.6028 - accuracy: 0.8256 - val_loss: 0.7091 - val_accuracy: 0.7974\n",
"Epoch 14/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.5897 - accuracy: 0.8292 - val_loss: 0.7029 - val_accuracy: 0.7999\n",
"Epoch 15/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.5756 - accuracy: 0.8329 - val_loss: 0.6925 - val_accuracy: 0.8025\n",
"Epoch 16/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.5629 - accuracy: 0.8367 - val_loss: 0.6795 - val_accuracy: 0.8041\n",
"Epoch 17/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.5515 - accuracy: 0.8392 - val_loss: 0.6739 - val_accuracy: 0.8055\n",
"Epoch 18/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.5409 - accuracy: 0.8425 - val_loss: 0.6634 - val_accuracy: 0.8100\n",
"Epoch 19/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.5304 - accuracy: 0.8454 - val_loss: 0.6580 - val_accuracy: 0.8109\n",
"Epoch 20/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.5205 - accuracy: 0.8480 - val_loss: 0.6440 - val_accuracy: 0.8162\n",
"Epoch 21/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.5110 - accuracy: 0.8509 - val_loss: 0.6436 - val_accuracy: 0.8161\n",
"Epoch 22/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.5021 - accuracy: 0.8534 - val_loss: 0.6334 - val_accuracy: 0.8187\n",
"Epoch 23/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4939 - accuracy: 0.8559 - val_loss: 0.6311 - val_accuracy: 0.8185\n",
"Epoch 24/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4856 - accuracy: 0.8582 - val_loss: 0.6253 - val_accuracy: 0.8211\n",
"Epoch 25/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4777 - accuracy: 0.8609 - val_loss: 0.6219 - val_accuracy: 0.8223\n",
"Epoch 26/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4700 - accuracy: 0.8626 - val_loss: 0.6189 - val_accuracy: 0.8235\n",
"Epoch 27/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4626 - accuracy: 0.8652 - val_loss: 0.6145 - val_accuracy: 0.8254\n",
"Epoch 28/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 0.4551 - accuracy: 0.8674 - val_loss: 0.6056 - val_accuracy: 0.8279\n",
"Epoch 29/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 0.4485 - accuracy: 0.8693 - val_loss: 0.6024 - val_accuracy: 0.8286\n",
"Epoch 30/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4412 - accuracy: 0.8714 - val_loss: 0.6027 - val_accuracy: 0.8289\n",
"Epoch 31/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4348 - accuracy: 0.8732 - val_loss: 0.6036 - val_accuracy: 0.8285\n",
"Epoch 32/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4287 - accuracy: 0.8752 - val_loss: 0.5943 - val_accuracy: 0.8309\n",
"Epoch 33/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4225 - accuracy: 0.8767 - val_loss: 0.5935 - val_accuracy: 0.8325\n",
"Epoch 34/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4159 - accuracy: 0.8787 - val_loss: 0.5931 - val_accuracy: 0.8322\n",
"Epoch 35/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4101 - accuracy: 0.8810 - val_loss: 0.5883 - val_accuracy: 0.8340\n",
"Epoch 36/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.4043 - accuracy: 0.8823 - val_loss: 0.5945 - val_accuracy: 0.8323\n",
"Epoch 37/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3982 - accuracy: 0.8840 - val_loss: 0.5832 - val_accuracy: 0.8365\n",
"Epoch 38/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3929 - accuracy: 0.8858 - val_loss: 0.5858 - val_accuracy: 0.8343\n",
"Epoch 39/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3872 - accuracy: 0.8875 - val_loss: 0.5854 - val_accuracy: 0.8362\n",
"Epoch 40/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3815 - accuracy: 0.8891 - val_loss: 0.5845 - val_accuracy: 0.8363\n",
"Epoch 41/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3761 - accuracy: 0.8908 - val_loss: 0.5826 - val_accuracy: 0.8372\n",
"Epoch 42/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3710 - accuracy: 0.8922 - val_loss: 0.5799 - val_accuracy: 0.8389\n",
"Epoch 43/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 0.3656 - accuracy: 0.8937 - val_loss: 0.5790 - val_accuracy: 0.8387\n",
"Epoch 44/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3606 - accuracy: 0.8954 - val_loss: 0.5810 - val_accuracy: 0.8388\n",
"Epoch 45/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3556 - accuracy: 0.8963 - val_loss: 0.5789 - val_accuracy: 0.8387\n",
"Epoch 46/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3497 - accuracy: 0.8986 - val_loss: 0.5872 - val_accuracy: 0.8361\n",
"Epoch 47/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3452 - accuracy: 0.8994 - val_loss: 0.5784 - val_accuracy: 0.8404\n",
"Epoch 48/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3406 - accuracy: 0.9013 - val_loss: 0.5810 - val_accuracy: 0.8411\n",
"Epoch 49/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3357 - accuracy: 0.9025 - val_loss: 0.5799 - val_accuracy: 0.8410\n",
"Epoch 50/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3312 - accuracy: 0.9040 - val_loss: 0.5778 - val_accuracy: 0.8417\n",
"Epoch 51/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3262 - accuracy: 0.9054 - val_loss: 0.5831 - val_accuracy: 0.8412\n",
"Epoch 52/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3216 - accuracy: 0.9072 - val_loss: 0.5829 - val_accuracy: 0.8402\n",
"Epoch 53/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3173 - accuracy: 0.9083 - val_loss: 0.5804 - val_accuracy: 0.8424\n",
"Epoch 54/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.3129 - accuracy: 0.9091 - val_loss: 0.5837 - val_accuracy: 0.8424\n",
"Epoch 55/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 0.3088 - accuracy: 0.9106 - val_loss: 0.5808 - val_accuracy: 0.8436\n",
"Epoch 56/100\n",
"125/125 [==============================] - 1s 8ms/step - loss: 0.3039 - accuracy: 0.9119 - val_loss: 0.5817 - val_accuracy: 0.8443\n",
"Epoch 57/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.2995 - accuracy: 0.9134 - val_loss: 0.5849 - val_accuracy: 0.8433\n",
"Epoch 58/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.2956 - accuracy: 0.9143 - val_loss: 0.5859 - val_accuracy: 0.8436\n",
"Epoch 59/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.2913 - accuracy: 0.9152 - val_loss: 0.5893 - val_accuracy: 0.8430\n",
"Epoch 60/100\n",
"125/125 [==============================] - 1s 7ms/step - loss: 0.2873 - accuracy: 0.9168 - val_loss: 0.5906 - val_accuracy: 0.8432\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Save the model.\n"
],
"metadata": {
"id": "p6WPzt_AOQFs"
}
},
{
"cell_type": "code",
"source": [
"model.save(\"model-save\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vUQeBdLLOREr",
"outputId": "a38f1194-e3c9-4eab-958b-a926d395f6e5"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:absl:Found untraced functions such as lstm_cell_layer_call_fn, lstm_cell_layer_call_and_return_conditional_losses, lstm_cell_1_layer_call_fn, lstm_cell_1_layer_call_and_return_conditional_losses while saving (showing 4 of 4). These functions will not be directly callable after loading.\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"## Evaluate the Model"
],
"metadata": {
"id": "u5Cikot4bJsq"
}
},
{
"cell_type": "code",
"source": [
"scores = model.evaluate([encoder_input_data, decoder_input_data], decoder_target_data, verbose=0)\n",
"print(\"Model Evaluation:\")\n",
"print(\"Loss: %.2f\" % scores[0])\n",
"print(\"Accuracy: %.2f%%\" % (scores[1] * 100))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vljum8yQgYfg",
"outputId": "16c76550-36d8-42d1-ff00-9443c558be7b"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model Evaluation:\n",
"Loss: 0.34\n",
"Accuracy: 90.58%\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Plot the in-sample and out-of-sample fits."
],
"metadata": {
"id": "Lp_wDI6UbKzd"
}
},
{
"cell_type": "code",
"source": [
"loss = history.history['loss']\n",
"val_loss = history.history['val_loss']\n",
"epochs = range(1, len(loss) + 1)\n",
"accuracy = history.history['accuracy']\n",
"val_accuracy = history.history['val_accuracy']"
],
"metadata": {
"id": "dr4sB7kCcHVb"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"fig, axs = plt.subplots(1, 2, figsize=(12, 6))\n",
"fig.suptitle('Training and Validation Metrics', fontsize=18)\n",
"axs[0].plot(epochs, loss, 'b', label='Training loss')\n",
"axs[0].plot(epochs, val_loss, 'r', label='Validation loss')\n",
"axs[0].set_title('Loss')\n",
"axs[0].set_xlabel('Epochs')\n",
"axs[0].set_ylabel('Loss')\n",
"axs[0].legend()\n",
"axs[1].plot(epochs, accuracy, 'b', label='Training accuracy')\n",
"axs[1].plot(epochs, val_accuracy, 'r', label='Validation accuracy')\n",
"axs[1].set_title('Accuracy')\n",
"axs[1].set_xlabel('Epochs')\n",
"axs[1].set_ylabel('Accuracy')\n",
"axs[1].legend()\n",
"plt.tight_layout()\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 439
},
"id": "D5fNPrHfbKKO",
"outputId": "7992bb51-0b00-496c-e015-b361f87102bd"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x600 with 2 Axes>"
],
"image/png": "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iiFkjvishYWF2ZM0K1asSLPdr7/+mur6xJjBFBRPTXoxX1tYPDM9eqpXr24/xvLly9NslxhDlSpV7IkSR0vsKRcTE8Pdd99NjRo1MrRfYg288PBwe420m5F4vbK715qLiwu1a9cGYP78+bd8vPz58/Pkk0/ywQcfAPDPP/+oELqIiNwyJaVERCRX8/PzA0xNnNTqtxw9epRx48bldFjZqmrVqvbC6++//36qv7xOmTIl0z01Eq/p7t27uXr1aortmzZtYtq0aZk69o3cfffdVKhQAYB3332XhISEFG0mTJiQZQW5E4fwnThxgrfffts+5Oj6oXvgmM+azWajc+fOAIwfP95er+pa27dvZ9asWanunxgzwObNm1Nsv3TpEu+8806a5/f19bU/v7aOVkb5+/vTokULAEaNGpXqDJWbN2/mxx9/BKBr1643fY7s8vjjj/Piiy/y4osv8v7772d4vyZNmtjvzxdeeCHdHn+Qsjh74jXPzPW+WYmf/4ULF7Jw4cIM7XNtnbnUXNurMrXZEkVERG6G/icREZFcrX79+uTLlw/LsujcubO9NlB8fDyLFy+mcePG2VZ7yVFsNhsjRowAzHTyPXr0sBdXvnr1Kt9++y1PPvkkAQEBmTr+/fffj5OTE+fOnePRRx+1Dw2LiYnh+++/5/7770+3iPmtevfddwHTM6hbt272BNTVq1cZP348AwYMsA+7u1XVq1enatWqALz99tsAFCpUyD674LUc9VkbMmQIPj4+nDlzhubNm9t731iWxZIlS2jVqlWaPdoqVKhA8eLFAZNo27Bhg33b2rVrady4cbqzBJYtW9ZeTP+bb77JVO+dd955B1dXV/bu3UuLFi3sib+EhAQWLlxI69atiYuLo1SpUjz55JM3ffzsEhQUxOjRoxk9ejStWrXK8H4uLi6MHz8eFxcX/vjjDxo2bMjy5cuTFWHfv38/48ePp1atWnz++efJ9r/rrrsAiIiI4Pvvv8+aN5OGxx9/nPr162NZFg899BCjRo1Klvg8fvw4H3/8Ma+88op93YwZM6hXrx5ffvkl+/fvt69PvA9effVVAO69995M/wwSERFJpKSUiIjkan5+fowePRqAVatWUa5cOXx8fPD29qZly5ZcvHjRPiTrdtKtWzcGDhwIwHfffUfRokUJDAzE19eXPn36cO+99/LUU08BZpjazShTpgwvvfQSALNnz6Zo0aL4+/vj7e1Nly5d8Pb2ztbeZx06dOD1118HYObMmRQrVozAwEB8fHzo378/tWvXpn///ll2vsTeIom9snr06JFq8WhHfdaKFy/O9OnTcXd3Z9OmTdSqVQtfX1/y5ctHixYtiI2NZcyYManu6+TkxGeffYaLiwvbtm2jZs2a5MuXj3z58lG3bl127drFzJkz0zy3l5cXjz/+OAAvv/wy3t7elChRgtDQUAYPHpyh+KtXr853332Hm5sbf/zxB3fffTd+fn7ky5ePNm3acPz4cYoVK8b8+fPx9va++QuUCzVt2pQffvgBHx8f1q1bR7NmzciXLx8FChTAw8ODUqVK0b9/f9avX58ikVm6dGmaNm0KQJcuXfD19SU0NJTQ0FB7faus4uLiwpw5c2jQoAFXr17l5ZdfpmDBggQEBODj40ORIkUYNGgQu3btsu9jWRZr1qzhqaeeolSpUnh4eFCgQAHc3Nxo2bIlR48epXDhwvY6bSIiIrdCSSkREcn1nnrqKRYsWEDjxo3x9vYmLi6OIkWK8Oyzz7J582YqV67s6BCzxccff8zs2bNp3LgxPj4+REdHU6FCBUaNGsXixYuJiooCyFSvovfff5/JkydTu3ZtPD09iY2NpXTp0rz22mv8888/FC5cOIvfTXLvvPMOP//8M/fddx++vr729/b++++zfPlye++drPDoo48mS9ylNnQvkaM+a23atGHjxo088sgjFCxYkJiYGIKDgxkwYAD//PMPYWFhae77wAMPsGrVKtq0aYO/vz9xcXEUKFCAXr16sWHDBnsCJC2fffYZw4cPt7+3w4cPc+jQoVSHEqalS5cubNu2jSeffJJSpUoRHR2Ni4sLVatWZcSIEWzdutU+bPN20b59e/bu3cuwYcOoXbs23t7eXLhwAXd3d6pUqUKfPn2YM2eOPQF8rVmzZvHCCy9QtmxZYmNjOXToEIcOHcqWIX0FChRg5cqVTJkyhVatWhEUFERUVBReXl7UqFGDV199lffee8/e/sEHH2Ty5Mn06tWLKlWq4Ofnx8WLF/Hx8aF27dq8/fbbbNu2jfLly2d5rCIicuexWZobWEREJE+qV68ea9as4a233mLo0KGODkdERERE5Kaop5SIiEge9Ntvv9ln5mvZsqWDoxERERERuXlKSomIiORSzzzzDJMmTSI8PNxegPrChQt8+eWXtGvXDoD77ruPWrVqOTJMEREREZFM0fA9ERGRXKpq1aps3rwZAHd3d7y8vLhw4YI9QVWxYkWWLFlCkSJFHBmmiIiIiEimKCklIiKSS82bN4+5c+eybt06Tp48ycWLF/H19aVSpUp07NiRfv364eXl5egwRUREREQyRUkpERERERERERHJcaopJSIiIiIiIiIiOU5JKRERERERERERyXFKSomIiIiIiIiISI5TUkpERERERERERHKcklIiIiIiIiIiIpLjlJQSEREREREREZEcp6SUiIiIiIiIiIjkOCWlREREREREREQkxykpJSIiIiIiIiIiOU5JKRERERERERERyXFKSomIiIiIiIiISI5TUkpERERERERERHKcklIiIiIiIiIiIpLjlJQSEREREREREZEcp6SUiIiIiIiIiIjkOCWlREREREREREQkxykpJSIiIiIiIiIiOU5JKRERERERERERyXFKSolInjdp0iRsNhvr1693dCgiIiIiOe7zzz/HZrNRp04dR4ciInJTlJQSERERERHJw6ZOnUpoaCh//fUXe/fudXQ4IiIZpqSUiIiIiIhIHnXgwAHWrFnDmDFjCAoKYurUqY4OKVVRUVGODkFEciElpUTkjvDPP//QqlUrfH198fb2pmnTpvz555/J2sTGxjJixAjKlCmDh4cH+fPnp379+ixdutTeJjw8nF69elG0aFHc3d0pVKgQ7dq14+DBgzn8jkRERERML6mAgADatGnDww8/nGpS6sKFC7zwwguEhobi7u5O0aJF6d69O2fOnLG3uXr1KsOHD6ds2bJ4eHhQqFAhOnbsyL59+wBYuXIlNpuNlStXJjv2wYMHsdlsTJo0yb6uZ8+eeHt7s2/fPlq3bo2Pjw+PPvooAL///judOnWiePHiuLu7U6xYMV544QWuXLmSIu6dO3fSuXNngoKC8PT0pFy5crz++usArFixApvNxpw5c1LsN23aNGw2G2vXrr3p6ykiOcvF0QGIiGS3bdu20aBBA3x9fXn55ZdxdXXlyy+/pHHjxvz222/2+gvDhw9n5MiR9OnTh9q1axMREcH69evZuHEjzZs3B+Chhx5i27ZtPPvss4SGhnLq1CmWLl3K4cOHCQ0NdeC7FBERkTvR1KlT6dixI25ubnTt2pUvvviCv//+m1q1agEQGRlJgwYN2LFj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GxsLwKRJkxgxYgSbN2/GZrNhs9nsMV8/BOjff//lvvvuw9PTk/z589OvXz8iIyPt23v27En79u0ZPXo0hQoVIn/+/DzzzDP2c2VEQkICb731FkWLFsXd3Z2qVasm67ESExPDgAEDKFSoEB4eHpQoUYKRI0cCYFkWw4cPp3jx4ri7u1O4cGGee+65DJ9bcoCj7t0M3regezej9+6+ffto164dwcHBeHt7U6tWLZYtW5asTXR0NK+88grFihXD3d2d0qVL8+2339q3b9u2jQceeABfX198fHxo0KAB+/btA1IOfwRo3749PXv2THZN3377bbp3746vry/9+vW74XVLNH/+fGrVqoWHhwcFChSgQ4cOALz11lvcddddKd5v1apVGTp0aJrXQ0RyxtWrsGIFDB0K9eqZ+s3NmpnhecuWmR/5fn7QujW89x6sWgVnz8KcOdCrlxJSuZV6SmW1kBDYvJlgTiopJSKSHS5fBm9vx5w7MjKpcGA6XFxc6N69O5MmTeL111/H9l/f8B9++IH4+Hi6du1KZGQkNWrU4JVXXsHX15cFCxbw+OOPU6pUKWrXrn3DcyQkJNCxY0eCg4NZt24dFy9eTPFLHICPjw+TJk2icOHC/Pvvv/Tt2xcfHx9efvllunTpwtatW1m0aJH9F0o/P78Ux4iKiqJFixbce++9/P3335w6dYo+ffowYMCAZL+8r1ixgkKFCrFixQr27t1Lly5dqFq1Kn379r3h+wH45JNP+Oijj/jyyy+pVq0aEyZM4MEHH2Tbtm2UKVOGcePGMW/ePL7//nuKFy/OkSNHOHLkCAA//vgjH3/8MTNmzKBSpUqEh4ezefPmDJ1Xcoij7t0M3regezej925kZCStW7fm3Xffxd3dncmTJ9O2bVt27dpF8eLFAejevTtr165l3LhxVKlShQMHDnDmzBkAjh07RsOGDWncuDG//vorvr6+rF69mri4uBtev2uNHj2aN998k2HDhmXougEsWLCADh068PrrrzN58mRiYmJYuHAhAL1792bEiBH8/fff1KpVC4B//vmHLVu2MHv27JuKTURuXWwsrF9vipL/+qup+3R9cfLixaF+/aSlUiVwUtebvMW6w1y8eNECrIsXL2bPCbp3tyywXuZ96+23s+cUIiJ3iitXrljbt2+3rly5krQyMtKyTN+HnF8iIzMc+44dOyzA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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"View the model architecture."
],
"metadata": {
"id": "GogTobL3gl_g"
}
},
{
"cell_type": "code",
"source": [
"tf.keras.utils.plot_model(model, show_shapes=True)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 405
},
"id": "loq01zAlgi4E",
"outputId": "80a6e89b-44a0-4ea5-d099-7a2ecb0a9f34"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"execution_count": 27
}
]
},
{
"cell_type": "code",
"source": [
"model.layers"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "GMkP4Eb2gzG1",
"outputId": "9cf8a1ce-bc14-4e65-98c7-a945aeb26c11"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<keras.engine.input_layer.InputLayer at 0x7f8272362f80>,\n",
" <keras.engine.input_layer.InputLayer at 0x7f8259ac84c0>,\n",
" <keras.layers.rnn.lstm.LSTM at 0x7f8272360f40>,\n",
" <keras.layers.rnn.lstm.LSTM at 0x7f8259ac8070>,\n",
" <keras.layers.core.dense.Dense at 0x7f82723637c0>]"
]
},
"metadata": {},
"execution_count": 28
}
]
},
{
"cell_type": "code",
"source": [
"model.input"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "d9hQa2J5g3lV",
"outputId": "72ff223d-480c-4ac4-e552-f6873920cbdd"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<KerasTensor: shape=(None, None, 71) dtype=float32 (created by layer 'input_1')>,\n",
" <KerasTensor: shape=(None, None, 85) dtype=float32 (created by layer 'input_2')>]"
]
},
"metadata": {},
"execution_count": 29
}
]
},
{
"cell_type": "markdown",
"source": [
"## Run the Inference"
],
"metadata": {
"id": "2oTB6RF8g8yy"
}
},
{
"cell_type": "markdown",
"source": [
"Create the inference model."
],
"metadata": {
"id": "NcA6mQMGhC6b"
}
},
{
"cell_type": "code",
"source": [
"model = tf.keras.models.load_model(\"model-save\")\n",
"\n",
"encoder_inputs = model.input[0]\n",
"encoder_outputs, state_h_enc, state_c_enc = model.get_layer('encoder_lstm').output\n",
"encoder_states = [state_h_enc, state_c_enc]\n",
"encoder_model = tf.keras.Model(encoder_inputs, encoder_states)\n",
"\n",
"decoder_inputs = model.input[1]\n",
"decoder_state_input_h = tf.keras.Input(shape=(latent_dim,), name=\"input_3\")\n",
"decoder_state_input_c = tf.keras.Input(shape=(latent_dim,), name=\"input_4\")\n",
"decoder_states_inputs = [decoder_state_input_h, decoder_state_input_c]\n",
"decoder_lstm = model.get_layer('decoder_lstm')\n",
"decoder_outputs, state_h_dec, state_c_dec = decoder_lstm(\n",
" decoder_inputs, initial_state=decoder_states_inputs)\n",
"decoder_states = [state_h_dec, state_c_dec]\n",
"decoder_dense = model.get_layer('decoder_dense')\n",
"decoder_outputs = decoder_dense(decoder_outputs)\n",
"\n",
"decoder_model = tf.keras.Model(\n",
" [decoder_inputs] + decoder_states_inputs, [decoder_outputs] + decoder_states)"
],
"metadata": {
"id": "GgOuS9gJh1xG"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Inverse transformation mapping indices to corresponding characters:"
],
"metadata": {
"id": "CluCtVdxiErs"
}
},
{
"cell_type": "code",
"source": [
"reverse_input_char_index = dict(\n",
" (i, char) for char, i in input_token_index.items())\n",
"reverse_target_char_index = dict(\n",
" (i, char) for char, i in target_token_index.items())"
],
"metadata": {
"id": "iB11jv9AiAMf"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"def decode_sequence(input_seq):\n",
" states_value = encoder_model.predict(input_seq)\n",
" target_seq = np.zeros((1, 1, num_decoder_tokens))\n",
" target_seq[0, 0, target_token_index['\\t']] = 1.\n",
" stop_condition = False\n",
" decoded_sentence = ''\n",
" while not stop_condition:\n",
" output_tokens, h, c = decoder_model.predict(\n",
" [target_seq] + states_value)\n",
" sampled_token_index = np.argmax(output_tokens[0, -1, :])\n",
" sampled_char = reverse_target_char_index[sampled_token_index]\n",
" decoded_sentence += sampled_char\n",
" if (sampled_char == '\\n' or\n",
" len(decoded_sentence) > max_decoder_seq_length):\n",
" stop_condition = True\n",
" target_seq = np.zeros((1, 1, num_decoder_tokens))\n",
" target_seq[0, 0, sampled_token_index] = 1.\n",
" states_value = [h, c]\n",
" return decoded_sentence"
],
"metadata": {
"id": "8wa9ElUfg5R3"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"for seq_index in range(100):\n",
" input_seq = encoder_input_data[seq_index: seq_index + 1]\n",
" decoded_sentence = decode_sequence(input_seq)\n",
" print('-')\n",
" print('Input sentence:', input_texts[seq_index])\n",
" print('Decoded sentence:', decoded_sentence)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "BGFg8MvwiR_B",
"outputId": "da1be46e-d9bf-4b76-c52c-c6653d4cd4e9"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1/1 [==============================] - 0s 403ms/step\n",
"1/1 [==============================] - 0s 372ms/step\n",
"1/1 [==============================] - 0s 27ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"-\n",
"Input sentence: Go.\n",
"Decoded sentence: Mach dich fort!\n",
"\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Hi.\n",
"Decoded sentence: Hallo!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Hi.\n",
"Decoded sentence: Hallo!\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"-\n",
"Input sentence: Run!\n",
"Decoded sentence: Serzt ihn auf.\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Run.\n",
"Decoded sentence: Setzt ein!\n",
"\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 27ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"-\n",
"Input sentence: Wow!\n",
"Decoded sentence: Worbleide!\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Wow!\n",
"Decoded sentence: Worbleide!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Fire!\n",
"Decoded sentence: Sehen Sie auf!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Help!\n",
"Decoded sentence: Halte Tom!\n",
"\n",
"1/1 [==============================] - 0s 18ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Help!\n",
"Decoded sentence: Halte Tom!\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Stop!\n",
"Decoded sentence: Schauen Sie auf.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Stop!\n",
"Decoded sentence: Schauen Sie auf.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Wait!\n",
"Decoded sentence: Wartet!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"-\n",
"Input sentence: Wait.\n",
"Decoded sentence: Wartet auf!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Begin.\n",
"Decoded sentence: Mach dich fort!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Go on.\n",
"Decoded sentence: Mach die Sause!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Hello!\n",
"Decoded sentence: Hallo!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Hello!\n",
"Decoded sentence: Hallo!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Hurry!\n",
"Decoded sentence: Stehen Sie auf!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Hurry!\n",
"Decoded sentence: Stehen Sie auf!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: I hid.\n",
"Decoded sentence: Ich habe eine Arbeit.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I hid.\n",
"Decoded sentence: Ich habe eine Arbeit.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I ran.\n",
"Decoded sentence: Ich habe einen gefunden.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I see.\n",
"Decoded sentence: Ich habe eine Arbeit.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: I see.\n",
"Decoded sentence: Ich habe eine Arbeit.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: I try.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: I won!\n",
"Decoded sentence: Ich will einen Hund.\n",
"\n",
"1/1 [==============================] - 0s 18ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: I won!\n",
"Decoded sentence: Ich will einen Hund.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Relax.\n",
"Decoded sentence: Lassen Sie auf!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Shoot!\n",
"Decoded sentence: Scher dich weg!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Shoot!\n",
"Decoded sentence: Scher dich weg!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Smile.\n",
"Decoded sentence: Fangen Sie Tom.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Ask me.\n",
"Decoded sentence: Fragen Sie Tom!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Ask me.\n",
"Decoded sentence: Fragen Sie Tom!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Ask me.\n",
"Decoded sentence: Fragen Sie Tom!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Attack!\n",
"Decoded sentence: Fange alle.\n",
"\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Attack!\n",
"Decoded sentence: Fange alle.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Cheers!\n",
"Decoded sentence: Namm mich.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Eat it.\n",
"Decoded sentence: Fangen Sie Tom.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 34ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Eat up.\n",
"Decoded sentence: Fangen Sie Tom.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Eat up.\n",
"Decoded sentence: Fangen Sie Tom.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Freeze!\n",
"Decoded sentence: Beeil dich!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Freeze!\n",
"Decoded sentence: Beeil dich!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Go now.\n",
"Decoded sentence: Geh weg!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Got it!\n",
"Decoded sentence: Verzusste dich!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Got it!\n",
"Decoded sentence: Verzusste dich!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Got it!\n",
"Decoded sentence: Verzusste dich!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Got it?\n",
"Decoded sentence: Verzusste dich!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Got it?\n",
"Decoded sentence: Verzusste dich!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Got it?\n",
"Decoded sentence: Verzusste dich!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: He ran.\n",
"Decoded sentence: Er ist gerade.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: He ran.\n",
"Decoded sentence: Er ist gerade.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Hop in.\n",
"Decoded sentence: Set nicht!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Hop in.\n",
"Decoded sentence: Set nicht!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Hug me.\n",
"Decoded sentence: Umarme mich!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Hug me.\n",
"Decoded sentence: Umarme mich!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Hug me.\n",
"Decoded sentence: Umarme mich!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I care.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: I fell.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I fell.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I fell.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 27ms/step\n",
"-\n",
"Input sentence: I fell.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"-\n",
"Input sentence: I fell.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 34ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 33ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 33ms/step\n",
"1/1 [==============================] - 0s 34ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 34ms/step\n",
"1/1 [==============================] - 0s 33ms/step\n",
"-\n",
"Input sentence: I fled.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 34ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 33ms/step\n",
"1/1 [==============================] - 0s 33ms/step\n",
"1/1 [==============================] - 0s 33ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 35ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"-\n",
"Input sentence: I fled.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 33ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 33ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"-\n",
"Input sentence: I know.\n",
"Decoded sentence: Ich komme zurecht.\n",
"\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 31ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 28ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 27ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"-\n",
"Input sentence: I lied.\n",
"Decoded sentence: Ich liebe das.\n",
"\n",
"1/1 [==============================] - 0s 27ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 27ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: I lost.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I paid.\n",
"Decoded sentence: Ich habe eine Arbeit.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I paid.\n",
"Decoded sentence: Ich habe eine Arbeit.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I sang.\n",
"Decoded sentence: Ich habe eine gesurben.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I spit.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I spit.\n",
"Decoded sentence: Ich habe es gebaut.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I swim.\n",
"Decoded sentence: Ich habe eine geschlagen.\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: I wept.\n",
"Decoded sentence: Ich werde nicht gehen.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: I wept.\n",
"Decoded sentence: Ich werde nicht gehen.\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: I'm 19.\n",
"Decoded sentence: Ich bin schwecht.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"-\n",
"Input sentence: I'm 19.\n",
"Decoded sentence: Ich bin schwecht.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I'm OK.\n",
"Decoded sentence: Ich bin schwecht.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: I'm OK.\n",
"Decoded sentence: Ich bin schwecht.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: I'm up.\n",
"Decoded sentence: Ich bin schwecht.\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: I'm up.\n",
"Decoded sentence: Ich bin schwecht.\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 33ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Listen.\n",
"Decoded sentence: Sehen Sie auf!\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 27ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 30ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 27ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"-\n",
"Input sentence: No way!\n",
"Decoded sentence: Das kann nicht schwarzen.\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 27ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: No way!\n",
"Decoded sentence: Das kann nicht schwarzen.\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: No way!\n",
"Decoded sentence: Das kann nicht schwarzen.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: No way!\n",
"Decoded sentence: Das kann nicht schwarzen.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: No way!\n",
"Decoded sentence: Das kann nicht schwarzen.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Really?\n",
"Decoded sentence: Tut sin!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Really?\n",
"Decoded sentence: Tut sin!\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 25ms/step\n",
"1/1 [==============================] - 0s 34ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 26ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Really?\n",
"Decoded sentence: Tut sin!\n",
"\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Thanks.\n",
"Decoded sentence: Necht Tom!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Try it.\n",
"Decoded sentence: Probier das!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: We try.\n",
"Decoded sentence: Wir haben es geschafft.\n",
"\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: We won.\n",
"Decoded sentence: Wir wollen uns berachen.\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Why me?\n",
"Decoded sentence: Warum ich?\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"-\n",
"Input sentence: Ask Tom.\n",
"Decoded sentence: Fragen Sie Tom!\n",
"\n",
"1/1 [==============================] - 0s 19ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"-\n",
"Input sentence: Ask Tom.\n",
"Decoded sentence: Fragen Sie Tom!\n",
"\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Ask Tom.\n",
"Decoded sentence: Fragen Sie Tom!\n",
"\n",
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 32ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 29ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 27ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"-\n",
"Input sentence: Awesome!\n",
"Decoded sentence: Fangen Sie Tom.\n",
"\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"## Forecast on New Inputs - Translation"
],
"metadata": {
"id": "Q6duf1ZolBXf"
}
},
{
"cell_type": "markdown",
"source": [
"Define a function to perform translation task."
],
"metadata": {
"id": "V2EgYMm5xVlw"
}
},
{
"cell_type": "code",
"source": [
"def decode_input_text(input_text, max_encoder_seq_length=100):\n",
" max_encoder_seq_length = max(max_encoder_seq_length, len(input_text))\n",
" encoder_input_data = np.zeros(\n",
" (1, max_encoder_seq_length, num_encoder_tokens), dtype=\"float32\")\n",
"\n",
" for t, char in enumerate(input_text):\n",
" if char in input_token_index:\n",
" encoder_input_data[0, t, input_token_index[char]] = 1.0\n",
" encoder_input_data[0, t + 1 :, input_token_index.get(\" \", 0)] = 1.0\n",
"\n",
" decoded_sentence = decode_sequence(encoder_input_data)\n",
"\n",
" print(\"Input text:\", input_text)\n",
" print(\"Translated result:\", decoded_sentence)"
],
"metadata": {
"id": "pOeGD1Sdsslt"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Decode inputs."
],
"metadata": {
"id": "s1R5ndBrxdvG"
}
},
{
"cell_type": "code",
"source": [
"input_text = \"Go!\"\n",
"decode_input_text(input_text)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "FuQJE0qDs5sJ",
"outputId": "5f822f8c-6023-476d-efc1-cd04565ae84c"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1/1 [==============================] - 0s 351ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"Input text: Go!\n",
"Translated result: Ich holf meine es gehen.\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"input_text = \"Hello\"\n",
"decode_input_text(input_text)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "lwkcQQm_tzPA",
"outputId": "f1105e95-84ed-4c00-8a24-bcbead973be7"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1/1 [==============================] - 0s 20ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"Input text: Hello\n",
"Translated result: Ich stamme mie.\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"input_text = \"What is your name?\"\n",
"decode_input_text(input_text)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "3acnmzrBlOc7",
"outputId": "6cf81e4a-2f1a-43f3-9e6a-dfd73a42dfc8"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 23ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 24ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 21ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"1/1 [==============================] - 0s 22ms/step\n",
"Input text: What is your name?\n",
"Translated result: Ich hol mocht eine Sie eine Katte.\n",
"\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"## Conclusion"
],
"metadata": {
"id": "omBQyi3axhqL"
}
},
{
"cell_type": "markdown",
"source": [
"As we can see, the functional accurary of this model is very poor. From the German I know, I can tell the translations are all completely incorrect. I would recommend using a pre-built model published online, such as any of the major cloud providers, GitHub, or HuggingFace."
],
"metadata": {
"id": "8GLJWwjPwtx7"
}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment