Skip to content

Instantly share code, notes, and snippets.

@shanecandoit
Created September 16, 2019 18:09
Show Gist options
  • Save shanecandoit/53d0841f425472425a48a8f7435c1baf to your computer and use it in GitHub Desktop.
Save shanecandoit/53d0841f425472425a48a8f7435c1baf to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# IMDB classify movie reviews"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"from keras.datasets import imdb"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(((25000,), (25000,)), ((25000,), (25000,)))"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10_000)\n",
"(train_data.shape, train_labels.shape), (test_data.shape, test_labels.shape)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1,\n",
" 14,\n",
" 22,\n",
" 16,\n",
" 43,\n",
" 530,\n",
" 973,\n",
" 1622,\n",
" 1385,\n",
" 65,\n",
" 458,\n",
" 4468,\n",
" 66,\n",
" 3941,\n",
" 4,\n",
" 173,\n",
" 36,\n",
" 256,\n",
" 5,\n",
" 25,\n",
" 100,\n",
" 43,\n",
" 838,\n",
" 112,\n",
" 50,\n",
" 670,\n",
" 2,\n",
" 9,\n",
" 35,\n",
" 480,\n",
" 284,\n",
" 5,\n",
" 150,\n",
" 4,\n",
" 172,\n",
" 112,\n",
" 167,\n",
" 2,\n",
" 336,\n",
" 385,\n",
" 39,\n",
" 4,\n",
" 172,\n",
" 4536,\n",
" 1111,\n",
" 17,\n",
" 546,\n",
" 38,\n",
" 13,\n",
" 447,\n",
" 4,\n",
" 192,\n",
" 50,\n",
" 16,\n",
" 6,\n",
" 147,\n",
" 2025,\n",
" 19,\n",
" 14,\n",
" 22,\n",
" 4,\n",
" 1920,\n",
" 4613,\n",
" 469,\n",
" 4,\n",
" 22,\n",
" 71,\n",
" 87,\n",
" 12,\n",
" 16,\n",
" 43,\n",
" 530,\n",
" 38,\n",
" 76,\n",
" 15,\n",
" 13,\n",
" 1247,\n",
" 4,\n",
" 22,\n",
" 17,\n",
" 515,\n",
" 17,\n",
" 12,\n",
" 16,\n",
" 626,\n",
" 18,\n",
" 2,\n",
" 5,\n",
" 62,\n",
" 386,\n",
" 12,\n",
" 8,\n",
" 316,\n",
" 8,\n",
" 106,\n",
" 5,\n",
" 4,\n",
" 2223,\n",
" 5244,\n",
" 16,\n",
" 480,\n",
" 66,\n",
" 3785,\n",
" 33,\n",
" 4,\n",
" 130,\n",
" 12,\n",
" 16,\n",
" 38,\n",
" 619,\n",
" 5,\n",
" 25,\n",
" 124,\n",
" 51,\n",
" 36,\n",
" 135,\n",
" 48,\n",
" 25,\n",
" 1415,\n",
" 33,\n",
" 6,\n",
" 22,\n",
" 12,\n",
" 215,\n",
" 28,\n",
" 77,\n",
" 52,\n",
" 5,\n",
" 14,\n",
" 407,\n",
" 16,\n",
" 82,\n",
" 2,\n",
" 8,\n",
" 4,\n",
" 107,\n",
" 117,\n",
" 5952,\n",
" 15,\n",
" 256,\n",
" 4,\n",
" 2,\n",
" 7,\n",
" 3766,\n",
" 5,\n",
" 723,\n",
" 36,\n",
" 71,\n",
" 43,\n",
" 530,\n",
" 476,\n",
" 26,\n",
" 400,\n",
" 317,\n",
" 46,\n",
" 7,\n",
" 4,\n",
" 2,\n",
" 1029,\n",
" 13,\n",
" 104,\n",
" 88,\n",
" 4,\n",
" 381,\n",
" 15,\n",
" 297,\n",
" 98,\n",
" 32,\n",
" 2071,\n",
" 56,\n",
" 26,\n",
" 141,\n",
" 6,\n",
" 194,\n",
" 7486,\n",
" 18,\n",
" 4,\n",
" 226,\n",
" 22,\n",
" 21,\n",
" 134,\n",
" 476,\n",
" 26,\n",
" 480,\n",
" 5,\n",
" 144,\n",
" 30,\n",
" 5535,\n",
" 18,\n",
" 51,\n",
" 36,\n",
" 28,\n",
" 224,\n",
" 92,\n",
" 25,\n",
" 104,\n",
" 4,\n",
" 226,\n",
" 65,\n",
" 16,\n",
" 38,\n",
" 1334,\n",
" 88,\n",
" 12,\n",
" 16,\n",
" 283,\n",
" 5,\n",
" 16,\n",
" 4472,\n",
" 113,\n",
" 103,\n",
" 32,\n",
" 15,\n",
" 16,\n",
" 5345,\n",
" 19,\n",
" 178,\n",
" 32]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data[0]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_labels[0]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"9999"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# top 10,000 most frequent words\n",
"\n",
"max([max(seq) for seq in train_data])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"#decode\n",
"word_index = imdb.get_word_index()\n",
"rev_word_index = dict([(val, key) for (key, val) in word_index.items()])\n",
"def decode(review_id):\n",
" rev = ' '.join([rev_word_index.get(i - 3, '?') for i in train_data[review_id]])\n",
" return rev"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 ? this film was just brilliant casting location scenery story direction everyone's really suited the part they played and you could just imagine being there robert ? is an amazing actor and now the same being director ? father came from the same scottish island as myself so i loved the fact there was a real connection with this film the witty remarks throughout the film were great it was just brilliant so much that i bought the film as soon as it was released for ? and would recommend it to everyone to watch and the fly fishing was amazing really cried at the end it was so sad and you know what they say if you cry at a film it must have been good and this definitely was also ? to the two little boy's that played the ? of norman and paul they were just brilliant children are often left out of the ? list i think because the stars that play them all grown up are such a big profile for the whole film but these children are amazing and should be praised for what they have done don't you think the whole story was so lovely because it was true and was someone's life after all that was shared with us all\n",
"1 ? big hair big boobs bad music and a giant safety pin these are the words to best describe this terrible movie i love cheesy horror movies and i've seen hundreds but this had got to be on of the worst ever made the plot is paper thin and ridiculous the acting is an abomination the script is completely laughable the best is the end showdown with the cop and how he worked out who the killer is it's just so damn terribly written the clothes are sickening and funny in equal ? the hair is big lots of boobs ? men wear those cut ? shirts that show off their ? sickening that men actually wore them and the music is just ? trash that plays over and over again in almost every scene there is trashy music boobs and ? taking away bodies and the gym still doesn't close for ? all joking aside this is a truly bad film whose only charm is to look back on the disaster that was the 80's and have a good old laugh at how bad everything was back then\n",
"2 ? this has to be one of the worst films of the 1990s when my friends i were watching this film being the target audience it was aimed at we just sat watched the first half an hour with our jaws touching the floor at how bad it really was the rest of the time everyone else in the theatre just started talking to each other leaving or generally crying into their popcorn that they actually paid money they had ? working to watch this feeble excuse for a film it must have looked like a great idea on paper but on film it looks like no one in the film has a clue what is going on crap acting crap costumes i can't get across how ? this is to watch save yourself an hour a bit of your life\n",
"3 ? the ? ? at storytelling the traditional sort many years after the event i can still see in my ? eye an elderly lady my friend's mother retelling the battle of ? she makes the characters come alive her passion is that of an eye witness one to the events on the ? heath a mile or so from where she lives br br of course it happened many years before she was born but you wouldn't guess from the way she tells it the same story is told in bars the length and ? of scotland as i discussed it with a friend one night in ? a local cut in to give his version the discussion continued to closing time br br stories passed down like this become part of our being who doesn't remember the stories our parents told us when we were children they become our invisible world and as we grow older they maybe still serve as inspiration or as an emotional ? fact and fiction blend with ? role models warning stories ? magic and mystery br br my name is ? like my grandfather and his grandfather before him our protagonist introduces himself to us and also introduces the story that stretches back through generations it produces stories within stories stories that evoke the ? wonder of scotland its rugged mountains ? in ? the stuff of legend yet ? is ? in reality this is what gives it its special charm it has a rough beauty and authenticity ? with some of the finest ? singing you will ever hear br br ? ? visits his grandfather in hospital shortly before his death he burns with frustration part of him ? to be in the twenty first century to hang out in ? but he is raised on the western ? among a ? speaking community br br yet there is a deeper conflict within him he ? to know the truth the truth behind his ? ancient stories where does fiction end and he wants to know the truth behind the death of his parents br br he is pulled to make a last ? journey to the ? of one of ? most ? mountains can the truth be told or is it all in stories br br in this story about stories we ? bloody battles ? lovers the ? of old and the sometimes more ? ? of accepted truth in doing so we each connect with ? as he lives the story of his own life br br ? the ? ? is probably the most honest ? and genuinely beautiful film of scotland ever made like ? i got slightly annoyed with the ? of hanging stories on more stories but also like ? i ? this once i saw the ? picture ' forget the box office ? of braveheart and its like you might even ? the ? famous ? of the wicker man to see a film that is true to scotland this one is probably unique if you maybe ? on it deeply enough you might even re ? the power of storytelling and the age old question of whether there are some truths that cannot be told but only experienced\n",
"4 ? worst mistake of my life br br i picked this movie up at target for 5 because i figured hey it's sandler i can get some cheap laughs i was wrong completely wrong mid way through the film all three of my friends were asleep and i was still suffering worst plot worst script worst movie i have ever seen i wanted to hit my head up against a wall for an hour then i'd stop and you know why because it felt damn good upon bashing my head in i stuck that damn movie in the ? and watched it burn and that felt better than anything else i've ever done it took american psycho army of darkness and kill bill just to get over that crap i hate you sandler for actually going through with this and ruining a whole day of my life\n"
]
}
],
"source": [
"for i in range(5):\n",
" print(i, decode(i))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# prepare variable length review into a one hot encoding to feed to nueral network"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"def vectorize_sequences(seqs, dims=10_000):\n",
" results = np.zeros((len(seqs), dims))\n",
" for i, seq in enumerate(seqs):\n",
" results[i, seq] = 1.\n",
" return results"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"x_train, x_test = vectorize_sequences(train_data), vectorize_sequences(test_data)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((25000, 10000), (25000, 10000))"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_train.shape, x_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0., 1., 1., ..., 0., 0., 0.])"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_train[0]"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"y_train = np.asarray(train_labels).astype('float32')\n",
"y_test = np.asarray(test_labels).astype('float32')"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# model"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"from keras import models\n",
"from keras import layers"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
"model = models.Sequential()\n",
"model.add(layers.Dense(16, activation='relu', input_shape=(10_000,)))\n",
"model.add(layers.Dense(64, activation='relu'))\n",
"model.add(layers.Dense(32, activation='relu'))\n",
"model.add(layers.Dense(1, activation='sigmoid'))"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"model.compile(optimizer='adam',\n",
" loss='binary_crossentropy',\n",
" metrics=['acc'])"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
"x_val = x_train[:10_000]\n",
"partial_x_train = x_train[10_000:]"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"y_val = y_train[:10_000]\n",
"partial_y_train = y_train[10_000:]"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 15000 samples, validate on 10000 samples\n",
"Epoch 1/4\n",
"15000/15000 [==============================] - 3s 203us/step - loss: 0.5285 - acc: 0.7785 - val_loss: 0.3335 - val_acc: 0.8691\n",
"Epoch 2/4\n",
"15000/15000 [==============================] - 1s 97us/step - loss: 0.2328 - acc: 0.9113 - val_loss: 0.2960 - val_acc: 0.8821\n",
"Epoch 3/4\n",
"15000/15000 [==============================] - 1s 95us/step - loss: 0.1396 - acc: 0.9525 - val_loss: 0.3189 - val_acc: 0.8796\n",
"Epoch 4/4\n",
"15000/15000 [==============================] - 1s 96us/step - loss: 0.0904 - acc: 0.9715 - val_loss: 0.3630 - val_acc: 0.8775\n"
]
}
],
"source": [
"history = model.fit(partial_x_train,\n",
" partial_y_train,\n",
" epochs= 4, # 20,\n",
" batch_size=512,\n",
" validation_data=(x_val, y_val))"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['val_loss', 'val_acc', 'loss', 'acc'])"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# val_loss: 0.6899 - val_acc: 0.8686\n",
"\n",
"history_dict = history.history\n",
"history_dict.keys()"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
"# plot"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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95viqkNERFIX55XCWGCdu69394+BhcDFMb6eiIg0U5yhMATYnDBdHs6r64tmVmZmz5jZcck2ZGYzzKzEzEoqKiriqFVERIg3FJIN6l33VqffADnunge8CDyZbEPuPtfdC929cNCgQS1cpoiIVIszFMqBxHf+2cDWxBXcfYe77w8nHwPGxFiPiLRDEydO/MQH0ebMmcONN97Y4PN69eoFwNatW7nsssvq3XZjt7jPmTOHyoQBnS644AJ27dqVSukNuuuuu3jwwQebvZ2WFmcoLAdOMrPhZtYNmAIsTlzBzI5NmJwMrI2xHhFph6ZOncrChQtrzVu4cCFTp05N6fmDBw/mmWeeOezXrxsKS5YsoV+/foe9vbYutlBw9yrgJuAFgpP90+6+2szuNrPJ4Wo3m9lqM1sF3AxMj6seEWmfLrvsMp577jn27w8aFTZu3MjWrVs544wz2Lt3L2eddRYFBQWceuqp/PrXv/7E8zdu3Ehubi4A+/btY8qUKeTl5XHllVeyb9++aL0bbrghGnb7u9/9LgAPP/wwW7duZdKkSdHw2Dk5Obz//vsAPPTQQ+Tm5pKbm8ucOXOi1zvllFP4yle+wsiRIzn33HNrvU4ypaWljBs3jry8PC655BJ27twZvf6IESPIy8uLBuV7+eWXoy8ZGj16NB988MFh/22TiXWYC3dfAiypM+/OhMffAr4VZw0i0nJuvRVKS1t2m/n5EJ5PkxowYABjx47ld7/7HRdffDELFy7kyiuvxMzo0aMHixYtok+fPrz//vuMGzeOyZMn1/s9xT/+8Y/JysqirKyMsrIyCgoKomX33XcfRx55JAcPHuSss86irKyMm2++mYceeoilS5cycODAWttasWIF8+bNY9myZbg7n/70p5kwYQL9+/fn7bffZsGCBTz22GNcccUV/OpXv+Kqq66qdx+nTZvGI488woQJE7jzzjuZPXs2c+bM4f7772fDhg107949arJ68MEHefTRRxk/fjx79+5t8ZFY9YlmEWnzEpuQEpuO3J1vf/vb5OXlcfbZZ7Nlyxbee++9erfzyiuvRCfnvLw88vLyomVPP/00BQUFjB49mtWrVycddjvRq6++yiWXXELPnj3p1asXl156aTSs9vDhw8nPzwcaH5579+7d7Nq1iwkTJgBwzTXXRKOr5uXlUVRUxPz58+naNXgPP378eG6/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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"loss_values = history_dict['loss']\n",
"val_loss_values = history_dict['val_loss']\n",
"\n",
"acc = history_dict['acc']\n",
"epochs = range(1,len(acc) + 1)\n",
"\n",
"plt.plot(epochs, loss_values, 'bo', label='Train loss')\n",
"plt.plot(epochs, val_loss_values, 'b', label='Validation loss')\n",
"plt.title('Train, Validation loss')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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FJI5h3LNlPSvwMMk6y2829rK1dbW0rt3b8rLy0kXjbN2JCJ44403qK2tpaKi2IUMzawtlPIeSaFv5/z5WL4OHC3pGZIFe1aTrHqXFCDtC4wCHsw55zKSSeMOJllV7hsFLy5Nl1Qjqaaurm6r4++88w4DBgxwEGmnJDFgwAD3GM22Q3U1lJdDp07Je3V1aa9XykBSS7KwTYMyktlRG0XEmoiYHBHjgMvTtPU5WT4H3J1Oid1wztp0FbZ3SWZdHV/o4hExKyKqIqJq0KDCj0E7iLRv/nzMWq+6GqZPh5dfhojkffr00gaTUgaS+cABkiokdSMZopqbm0HSQEkNdbiMZO3qXFOBO/LO2Td9F8n61s+WoO5mZh3S5ZfDprw7yps2JemlUrJAkq5FcBHJsNTzwJyIWCrpakknp9kmAC9IehH4CDkLAqVTew8hWUchV7WkJcASkqU+v1WqNpTSG2+8wdixYxk7diz77LMPgwcPbtx/7733iirjC1/4Ai+88EKzeW644QaqS92vNbN2Y9Wq1qXvCLvFNPJVVVWR/8v2559/noMOOqjoMqqrk4i+ahUMHQozZ8K0aTumfldddRW9evXi61//epP0iCAi6NRp9/3daGs/J7PdXXl5MpyVb9gwWLmydWVJWhARVS3l232/oVphZ445Llu2jJEjR/LFL36RyspK1q5dy/Tp06mqqmLEiBFcffXVjXmPOOIIFi5cSH19Pf369WPGjBmMGTOGww47jNdeew2AK664guuvv74x/4wZMxg/fjwf//jH+dOfkoX83n77bU477TTGjBnD1KlTqaqqYuHChVvV7corr+Tggw9urF/DP0JefPFFjj32WMaMGUNlZSUr0/9av/3tbzNq1CjGjBnD5aXsV5tZo5kzoWfPpmk9eybppeJAUoSdPeb43HPPcd555/HMM88wePBgrrnmGmpqali0aBG///3vee6557Y6Z/369Rx99NEsWrSIww47jFtuyb/dlIgInnrqKb773e82BqUf/ehH7LPPPixatIgZM2bwzDPPFDz3K1/5CvPnz2fJkiWsX7+eBx54AICpU6dyySWXsGjRIv70pz+x9957c++993L//ffz1FNPsWjRIr72ta/toL+OmTVn2jSYNSvpgUjJ+6xZO24EpRAHkiLs7DHHj370oxx88MGN+3fccQeVlZVUVlby/PPPFwwke+yxByeeeCIAn/jEJxp7BfkmT568VZ7HHnuMKVOmADBmzBhGjBhR8NyHH36Y8ePHM2bMGB599FGWLl3KunXreP311/nMZz4DJD8i7NmzJw899BDnnnsue+yxBwB77bVX6/8QZrZdpk1LhrG2bEneSxlEYDeZ/TeroUMLjzkOHVqa6+25556N2y+99BI/+MEPeOqpp+jXrx9nnnlmwd9WdOvWrXG7c+fO1NfXb5UHoHv37lvlKeY+2aZNm7jooot4+umnGTx4MFdccUVjPQo9phsRfnzXbDfhHkkR2mLMscFbb71F79696dOnD2vXruXBBx9s+aRWOuKII5gzZw4AS5YsKdjj2bx5M506dWLgwIFs2LCBu+66C4D+/fszcOBA7r33XiD5oeemTZs44YQT+NnPfsbmzZsB+Otf/7rD621m7YMDSRHaYsyxQWVlJcOHD2fkyJFccMEFHH744Tv8GhdffDGrV69m9OjRXHvttYwcOZK+ffs2yTNgwADOPvtsRo4cyamnnsohh3w42011dTXXXnsto0eP5ogjjqCuro5Pf/rTTJw4kaqqKsaOHcv3v//9HV5vM2sf/PivUV9fT319PT169OCll17ihBNO4KWXXqJLl7Yf+fTnZNZ2in38t+2/KazNbdy4keOOO476+noigp/+9KftIoiYWcfgbwujX79+LFiwoK2rYWYdlO+RmJlZJg4kZmaWiQOJmZll4kBiZmaZOJC0kQkTJmz148Lrr7+eL33pS82e16tXLwDWrFnD6aefvs2y8x93znf99dezKWcCsZNOOok333yzmKqbmTXhQNJGpk6dyuzZs5ukzZ49m6lTpxZ1/n777cedd9653dfPDyT33Xcf/fr12+7yzGz35UDSRk4//XR++9vf8u677wKwcuVK1qxZwxFHHNH4u47KykpGjRrFPffcs9X5K1euZOTIkUAyfcmUKVMYPXo0Z5xxRuO0JAAXXnhh4xT0V155JQA//OEPWbNmDccccwzHHHMMAOXl5bz++usAXHfddYwcOZKRI0c2TkG/cuVKDjroIC644AJGjBjBCSec0OQ6De69914OOeQQxo0bx/HHH8+rr74KJL9V+cIXvsCoUaMYPXp04xQrDzzwAJWVlYwZM4bjjjtuh/xtbefa2euDW/vj35EAX/0qFFh+I5OxYyH9Di5owIABjB8/ngceeIBJ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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.clf()\n",
"\n",
"acc_values = acc\n",
"val_acc_values = history_dict['val_acc']\n",
"\n",
"plt.plot(epochs, acc, 'bo', label='Training acc')\n",
"plt.plot(epochs, val_acc_values, 'b', label='Validation acc')\n",
"plt.title('Train, Validation acc')\n",
"plt.xlabel('epochs')\n",
"plt.ylabel('acc')\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"25000/25000 [==============================] - 2s 67us/step\n"
]
}
],
"source": [
"results = model.evaluate(x_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0.3916580714178085, 0.86696]"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"results"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# [0.7482284175515175, 0.85512]"
]
}
],
"metadata": {
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@shanecandoit
Copy link
Author

Validation Accuracy peaks at 87.75%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment