Skip to content

Instantly share code, notes, and snippets.

@HarshCasper
Created January 12, 2020 16:11
Show Gist options
  • Save HarshCasper/4354c1089d4a3f206a9b292994c6be71 to your computer and use it in GitHub Desktop.
Save HarshCasper/4354c1089d4a3f206a9b292994c6be71 to your computer and use it in GitHub Desktop.
Using LSTM Neural Networks to generate poetry.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "BOwsuGQQY9OL"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
" from ._conv import register_converters as _register_converters\n"
]
}
],
"source": [
"from tensorflow.keras.preprocessing.sequence import pad_sequences\n",
"from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout, Bidirectional\n",
"from tensorflow.keras.preprocessing.text import Tokenizer\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.optimizers import Adam\n",
"from tensorflow.keras import regularizers\n",
"import tensorflow.keras.utils as ku \n",
"import numpy as np "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "PRnDnCW-Z7qv"
},
"outputs": [],
"source": [
"tokenizer = Tokenizer()\n",
"data = open('100dayschallenge.txt',encoding=\"utf8\").read()\n",
"\n",
"corpus = data.lower().split(\"\\n\")\n",
"\n",
"\n",
"tokenizer.fit_on_texts(corpus)\n",
"total_words = len(tokenizer.word_index) + 1\n",
"\n",
"input_sequences = []\n",
"for line in corpus:\n",
"\ttoken_list = tokenizer.texts_to_sequences([line])[0]\n",
"\tfor i in range(1, len(token_list)):\n",
"\t\tn_gram_sequence = token_list[:i+1]\n",
"\t\tinput_sequences.append(n_gram_sequence)\n",
"\n",
"\n",
"# pad sequences \n",
"max_sequence_len = max([len(x) for x in input_sequences])\n",
"input_sequences = np.array(pad_sequences(input_sequences, maxlen=max_sequence_len, padding='pre'))\n",
"\n",
"# create predictors and label\n",
"predictors, label = input_sequences[:,:-1],input_sequences[:,-1]\n",
"\n",
"label = ku.to_categorical(label, num_classes=total_words)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "w9vH8Y59ajYL"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"embedding_2 (Embedding) (None, 11, 100) 167400 \n",
"_________________________________________________________________\n",
"bidirectional_2 (Bidirection (None, 11, 300) 301200 \n",
"_________________________________________________________________\n",
"dropout_1 (Dropout) (None, 11, 300) 0 \n",
"_________________________________________________________________\n",
"lstm_5 (LSTM) (None, 100) 160400 \n",
"_________________________________________________________________\n",
"dense_4 (Dense) (None, 837) 84537 \n",
"_________________________________________________________________\n",
"dense_5 (Dense) (None, 1674) 1402812 \n",
"=================================================================\n",
"Total params: 2,116,349\n",
"Trainable params: 2,116,349\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n",
"None\n"
]
}
],
"source": [
"model = Sequential()\n",
"model.add(Embedding(total_words, 100, input_length=max_sequence_len-1))\n",
"model.add(Bidirectional(LSTM(150, return_sequences = True)))\n",
"model.add(Dropout(0.2))\n",
"model.add(LSTM(100))\n",
"model.add(Dense(total_words/2, activation='relu', kernel_regularizer=regularizers.l2(0.01)))\n",
"model.add(Dense(total_words, activation='softmax'))\n",
"model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
"print(model.summary())\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "AIg2f1HBxqof"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\ops\\gradients_impl.py:108: UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape. This may consume a large amount of memory.\n",
" \"Converting sparse IndexedSlices to a dense Tensor of unknown shape. \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/200\n",
"3866/3866 [==============================] - 12s 3ms/step - loss: 7.3252 - acc: 0.0533\n",
"Epoch 2/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 6.3740 - acc: 0.0561\n",
"Epoch 3/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 6.2002 - acc: 0.0561\n",
"Epoch 4/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 6.0498 - acc: 0.0592\n",
"Epoch 5/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 5.9309 - acc: 0.0579\n",
"Epoch 6/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 5.8526 - acc: 0.0616\n",
"Epoch 7/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 5.8007 - acc: 0.0644\n",
"Epoch 8/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 5.7304 - acc: 0.0696\n",
"Epoch 9/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 5.6508 - acc: 0.0781\n",
"Epoch 10/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.5705 - acc: 0.0802\n",
"Epoch 11/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.5013 - acc: 0.0792\n",
"Epoch 12/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.4368 - acc: 0.0843\n",
"Epoch 13/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.3662 - acc: 0.0921\n",
"Epoch 14/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.3052 - acc: 0.0934\n",
"Epoch 15/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.2518 - acc: 0.0939\n",
"Epoch 16/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.1981 - acc: 0.0983\n",
"Epoch 17/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.1438 - acc: 0.0991\n",
"Epoch 18/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.0915 - acc: 0.0998\n",
"Epoch 19/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 5.0494 - acc: 0.0993\n",
"Epoch 20/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.9947 - acc: 0.1017\n",
"Epoch 21/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.9370 - acc: 0.1063\n",
"Epoch 22/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.8918 - acc: 0.1071\n",
"Epoch 23/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.8405 - acc: 0.1050\n",
"Epoch 24/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.7958 - acc: 0.1110\n",
"Epoch 25/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.7430 - acc: 0.1110\n",
"Epoch 26/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.6967 - acc: 0.1167\n",
"Epoch 27/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.6416 - acc: 0.1190\n",
"Epoch 28/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.6007 - acc: 0.1203\n",
"Epoch 29/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.5728 - acc: 0.1247\n",
"Epoch 30/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.5067 - acc: 0.1229\n",
"Epoch 31/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.4521 - acc: 0.1296\n",
"Epoch 32/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.3920 - acc: 0.1386\n",
"Epoch 33/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.3412 - acc: 0.1441\n",
"Epoch 34/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.2990 - acc: 0.1482\n",
"Epoch 35/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.2544 - acc: 0.1549\n",
"Epoch 36/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.2090 - acc: 0.1570\n",
"Epoch 37/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.1612 - acc: 0.1586\n",
"Epoch 38/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.1174 - acc: 0.1583\n",
"Epoch 39/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.0712 - acc: 0.1655\n",
"Epoch 40/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 4.0212 - acc: 0.1679\n",
"Epoch 41/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.9667 - acc: 0.1764\n",
"Epoch 42/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.9245 - acc: 0.1878\n",
"Epoch 43/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.8889 - acc: 0.1844\n",
"Epoch 44/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.8397 - acc: 0.1961\n",
"Epoch 45/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.7961 - acc: 0.1956\n",
"Epoch 46/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.7412 - acc: 0.2062\n",
"Epoch 47/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.6998 - acc: 0.2142\n",
"Epoch 48/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.6599 - acc: 0.2118\n",
"Epoch 49/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 3.6169 - acc: 0.2271\n",
"Epoch 50/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.5770 - acc: 0.2310\n",
"Epoch 51/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.5339 - acc: 0.2431\n",
"Epoch 52/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.4891 - acc: 0.2530\n",
"Epoch 53/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.4532 - acc: 0.2558\n",
"Epoch 54/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.3966 - acc: 0.2675\n",
"Epoch 55/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.3619 - acc: 0.2726\n",
"Epoch 56/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.3233 - acc: 0.2830\n",
"Epoch 57/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.2660 - acc: 0.2946\n",
"Epoch 58/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.2149 - acc: 0.3008\n",
"Epoch 59/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.1743 - acc: 0.3270\n",
"Epoch 60/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.1493 - acc: 0.3179\n",
"Epoch 61/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.0949 - acc: 0.3365\n",
"Epoch 62/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 3.0551 - acc: 0.3443\n",
"Epoch 63/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 3.0119 - acc: 0.3570\n",
"Epoch 64/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.9738 - acc: 0.3676\n",
"Epoch 65/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.9319 - acc: 0.3787\n",
"Epoch 66/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.8916 - acc: 0.3808\n",
"Epoch 67/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.8416 - acc: 0.4053\n",
"Epoch 68/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.8083 - acc: 0.3983\n",
"Epoch 69/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.7714 - acc: 0.4154\n",
"Epoch 70/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.7284 - acc: 0.4250\n",
"Epoch 71/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.7079 - acc: 0.4327\n",
"Epoch 72/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.6466 - acc: 0.4509\n",
"Epoch 73/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.6065 - acc: 0.4591\n",
"Epoch 74/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.5940 - acc: 0.4607\n",
"Epoch 75/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.5525 - acc: 0.4803\n",
"Epoch 76/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.5233 - acc: 0.4860\n",
"Epoch 77/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.4794 - acc: 0.4977\n",
"Epoch 78/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.4404 - acc: 0.5044\n",
"Epoch 79/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.4025 - acc: 0.5096\n",
"Epoch 80/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.3794 - acc: 0.5173\n",
"Epoch 81/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.3522 - acc: 0.5230\n",
"Epoch 82/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.3174 - acc: 0.5380\n",
"Epoch 83/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.2933 - acc: 0.5429\n",
"Epoch 84/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.2620 - acc: 0.5432\n",
"Epoch 85/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.2430 - acc: 0.5535\n",
"Epoch 86/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.2070 - acc: 0.5644\n",
"Epoch 87/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.1759 - acc: 0.5683\n",
"Epoch 88/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.1568 - acc: 0.5755\n",
"Epoch 89/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.1343 - acc: 0.5763\n",
"Epoch 90/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.0942 - acc: 0.5921\n",
"Epoch 91/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.0648 - acc: 0.6004\n",
"Epoch 92/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.0423 - acc: 0.6035\n",
"Epoch 93/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 2.0139 - acc: 0.6102\n",
"Epoch 94/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.9887 - acc: 0.6187\n",
"Epoch 95/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.9692 - acc: 0.6216\n",
"Epoch 96/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.9422 - acc: 0.6309\n",
"Epoch 97/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.9524 - acc: 0.6265\n",
"Epoch 98/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.9303 - acc: 0.6332\n",
"Epoch 99/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.8984 - acc: 0.6433\n",
"Epoch 100/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.8831 - acc: 0.6412\n",
"Epoch 101/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.8366 - acc: 0.6593\n",
"Epoch 102/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.8244 - acc: 0.6614\n",
"Epoch 103/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.8001 - acc: 0.6697\n",
"Epoch 104/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.7877 - acc: 0.6611\n",
"Epoch 105/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.7540 - acc: 0.6769\n",
"Epoch 106/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.7396 - acc: 0.6844\n",
"Epoch 107/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.7325 - acc: 0.6826\n",
"Epoch 108/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.7154 - acc: 0.6922\n",
"Epoch 109/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.6989 - acc: 0.6865\n",
"Epoch 110/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.6787 - acc: 0.6901\n",
"Epoch 111/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.6598 - acc: 0.6956\n",
"Epoch 112/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.6534 - acc: 0.6937\n",
"Epoch 113/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.6246 - acc: 0.7023\n",
"Epoch 114/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.6236 - acc: 0.7087\n",
"Epoch 115/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.5920 - acc: 0.7100\n",
"Epoch 116/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.5865 - acc: 0.7106\n",
"Epoch 117/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.5614 - acc: 0.7181\n",
"Epoch 118/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.5600 - acc: 0.7173\n",
"Epoch 119/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.5519 - acc: 0.7134\n",
"Epoch 120/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.5274 - acc: 0.7209\n",
"Epoch 121/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.5269 - acc: 0.7201\n",
"Epoch 122/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.5115 - acc: 0.7201\n",
"Epoch 123/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.4856 - acc: 0.7297\n",
"Epoch 124/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.4670 - acc: 0.7364\n",
"Epoch 125/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.4629 - acc: 0.7297\n",
"Epoch 126/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.4466 - acc: 0.7375\n",
"Epoch 127/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.4495 - acc: 0.7426\n",
"Epoch 128/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.4315 - acc: 0.7380\n",
"Epoch 129/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.4252 - acc: 0.7310\n",
"Epoch 130/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.4085 - acc: 0.7437\n",
"Epoch 131/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.3915 - acc: 0.7504\n",
"Epoch 132/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.3831 - acc: 0.7475\n",
"Epoch 133/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.3474 - acc: 0.7587\n",
"Epoch 134/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.3395 - acc: 0.7615\n",
"Epoch 135/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.3547 - acc: 0.7499\n",
"Epoch 136/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.3396 - acc: 0.7594\n",
"Epoch 137/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.3118 - acc: 0.7592\n",
"Epoch 138/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.3121 - acc: 0.7651\n",
"Epoch 139/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.3022 - acc: 0.7618\n",
"Epoch 140/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.2895 - acc: 0.7613\n",
"Epoch 141/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.2834 - acc: 0.7690\n",
"Epoch 142/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.2626 - acc: 0.7703\n",
"Epoch 143/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.2791 - acc: 0.7623\n",
"Epoch 144/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.2679 - acc: 0.7667\n",
"Epoch 145/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.2505 - acc: 0.7711\n",
"Epoch 146/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.2323 - acc: 0.7747\n",
"Epoch 147/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.2281 - acc: 0.7747\n",
"Epoch 148/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.2255 - acc: 0.7711\n",
"Epoch 149/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.2083 - acc: 0.7742\n",
"Epoch 150/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.2135 - acc: 0.7744\n",
"Epoch 151/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.1972 - acc: 0.7827\n",
"Epoch 152/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.1932 - acc: 0.7807\n",
"Epoch 153/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.1878 - acc: 0.7765\n",
"Epoch 154/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.1703 - acc: 0.7812\n",
"Epoch 155/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.1531 - acc: 0.7819\n",
"Epoch 156/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.1634 - acc: 0.7775\n",
"Epoch 157/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.1764 - acc: 0.7747\n",
"Epoch 158/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.1645 - acc: 0.7786\n",
"Epoch 159/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.1601 - acc: 0.7819\n",
"Epoch 160/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.1449 - acc: 0.7845\n",
"Epoch 161/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.1242 - acc: 0.7892\n",
"Epoch 162/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.1164 - acc: 0.7856\n",
"Epoch 163/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.1175 - acc: 0.7850\n",
"Epoch 164/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.1129 - acc: 0.7861\n",
"Epoch 165/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.1139 - acc: 0.7840\n",
"Epoch 166/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.1010 - acc: 0.7910\n",
"Epoch 167/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0795 - acc: 0.7897\n",
"Epoch 168/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.0871 - acc: 0.7902\n",
"Epoch 169/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0893 - acc: 0.7882\n",
"Epoch 170/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0688 - acc: 0.7889\n",
"Epoch 171/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0731 - acc: 0.7933\n",
"Epoch 172/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0721 - acc: 0.7869\n",
"Epoch 173/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0544 - acc: 0.7964\n",
"Epoch 174/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.0644 - acc: 0.7902\n",
"Epoch 175/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0421 - acc: 0.7975\n",
"Epoch 176/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0507 - acc: 0.7907\n",
"Epoch 177/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0485 - acc: 0.7923\n",
"Epoch 178/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0284 - acc: 0.7975\n",
"Epoch 179/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0329 - acc: 0.7931\n",
"Epoch 180/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0222 - acc: 0.7964\n",
"Epoch 181/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0258 - acc: 0.7918\n",
"Epoch 182/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0194 - acc: 0.7946\n",
"Epoch 183/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0077 - acc: 0.7969\n",
"Epoch 184/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0089 - acc: 0.7975\n",
"Epoch 185/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0122 - acc: 0.7920\n",
"Epoch 186/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0103 - acc: 0.7957\n",
"Epoch 187/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9983 - acc: 0.7977\n",
"Epoch 188/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9798 - acc: 0.7972\n",
"Epoch 189/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9816 - acc: 0.7972\n",
"Epoch 190/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 1.0055 - acc: 0.7967\n",
"Epoch 191/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 1.0314 - acc: 0.7882\n",
"Epoch 192/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9859 - acc: 0.7977\n",
"Epoch 193/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9764 - acc: 0.7967\n",
"Epoch 194/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9658 - acc: 0.8003\n",
"Epoch 195/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9561 - acc: 0.7988\n",
"Epoch 196/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 0.9614 - acc: 0.7957\n",
"Epoch 197/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9524 - acc: 0.8019\n",
"Epoch 198/200\n",
"3866/3866 [==============================] - 8s 2ms/step - loss: 0.9580 - acc: 0.7972\n",
"Epoch 199/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9481 - acc: 0.7995\n",
"Epoch 200/200\n",
"3866/3866 [==============================] - 9s 2ms/step - loss: 0.9359 - acc: 0.8047\n"
]
}
],
"source": [
" history = model.fit(predictors, label, epochs=200, verbose=1)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "1fXTEO3GJ282"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"acc = history.history['acc']\n",
"loss = history.history['loss']\n",
"\n",
"epochs = range(len(acc))\n",
"\n",
"plt.plot(epochs, acc, 'b', label='Training accuracy')\n",
"plt.title('Training accuracy')\n",
"\n",
"plt.figure()\n",
"\n",
"plt.plot(epochs, loss, 'b', label='Training Loss')\n",
"plt.title('Training loss')\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "6Vc6PHgxa6Hm"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"What is this life converge in a late to depart blue years day a moon in little years putting putting i was blue without my victories day a ragtag bell without day a moon to our cache years the letters snaps blue day a moon day day they were never best friends into the\n"
]
}
],
"source": [
"seed_text = \"What is this life\"\n",
"next_words = 50\n",
" \n",
"for _ in range(next_words):\n",
"\ttoken_list = tokenizer.texts_to_sequences([seed_text])[0]\n",
"\ttoken_list = pad_sequences([token_list], maxlen=max_sequence_len-1, padding='pre')\n",
"\tpredicted = model.predict_classes(token_list, verbose=0)\n",
"\toutput_word = \"\"\n",
"\tfor word, index in tokenizer.word_index.items():\n",
"\t\tif index == predicted:\n",
"\t\t\toutput_word = word\n",
"\t\t\tbreak\n",
"\tseed_text += \" \" + output_word\n",
"print(seed_text)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "NLP_Week4_Exercise_Shakespeare_Answer.ipynb",
"provenance": [],
"version": "0.3.2"
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment