Skip to content

Instantly share code, notes, and snippets.

@manisnesan
Created December 7, 2019 18:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save manisnesan/cf010a8f078c18a128c2e357ec535753 to your computer and use it in GitHub Desktop.
Save manisnesan/cf010a8f078c18a128c2e357ec535753 to your computer and use it in GitHub Desktop.
Copy of lesson3-imdb.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"colab": {
"name": "Copy of lesson3-imdb.ipynb",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/manisnesan/cf010a8f078c18a128c2e357ec535753/copy-of-lesson3-imdb.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "PjYwhc4yHhxi",
"colab_type": "text"
},
"source": [
"# IMDB"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lpLm9ZaJBhXU",
"colab_type": "text"
},
"source": [
"This notebook is based on the tutorial from [fastai.text](https://docs.fast.ai/tutorial.data.html#Text) for IMDB reviews sentiment classification."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "J9vARHx4CK1m",
"colab_type": "text"
},
"source": [
"Following cell snippet is based on the [instructions](https://colab.research.google.com/github/jcatanza/Fastai-Deep-Learning-From-the-Foundations-TWiML-Study-Group/blob/master/initialize_fastai_dl2_colab_jcat.ipynb) shared by jcatanza from TWIML Study Group to run the notebooks on Google Colab "
]
},
{
"cell_type": "code",
"metadata": {
"id": "VVLVRBpJnSue",
"colab_type": "code",
"outputId": "97a5c9d4-e11e-4e24-9953-013b0a483ed7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 156
}
},
"source": [
"# make your Google Drive accessible\n",
"from google.colab import drive\n",
"drive.mount('/content/gdrive', force_remount=True)\n",
"root_dir = \"/content/gdrive/My Drive/\"\n",
"base_dir = root_dir + 'fastai-v3/course-v3/nbs/dl1/'\n",
"colab_data = f\"{root_dir}/Colab Notebooks/data\"\n",
"\n",
"# navigate to the notebooks directory for dl2\n",
"import os\n",
"os.chdir(base_dir)\n",
"\n",
"# update fastai, according to instructions at https://course.fast.ai/start_colab.html\n",
"!curl -s https://course.fast.ai/setup/colab | bash\n",
" \n",
"# install fire\n",
"!pip install fire > /dev/null\n",
"!pip install nbconvert > /dev/null"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly\n",
"\n",
"Enter your authorization code:\n",
"··········\n",
"Mounted at /content/gdrive\n",
"Updating fastai...\n",
"Done.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "CTQWonJgHhxm",
"colab_type": "code",
"colab": {}
},
"source": [
"%reload_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "FjVfvcOCHhxs",
"colab_type": "code",
"colab": {}
},
"source": [
"import fastai\n",
"from fastai.text import *"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "BnBnZxCEjQzj",
"colab_type": "code",
"outputId": "a04156e5-0ab7-40c0-d4bd-77d5ec84a390",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
}
},
"source": [
"import torch\n",
"print(torch.cuda.current_device())\n",
"print(torch.cuda.device(0))\n",
"print(torch.cuda.device_count())\n",
"print(torch.cuda.get_device_name(0))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"0\n",
"<torch.cuda.device object at 0x7f165729a2b0>\n",
"1\n",
"Tesla K80\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "yzI0CJfCp4FS",
"colab_type": "code",
"colab": {}
},
"source": [
"def copy(src: Path, dest: Path, is_directory: bool=False):\n",
" if is_directory:\n",
" shutil.copytree(str(src), str(dest))\n",
" else:\n",
" shutil.copyfile(str(src), str(dest))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "BWdfMxQN7v4d",
"colab_type": "code",
"colab": {}
},
"source": [
"gdrive_imdb = Path(colab_data)/'imdb'\n",
"local_imdb = Config.data_path()/'imdb'"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "gK2l51XDHhxx",
"colab_type": "text"
},
"source": [
"## Preparing the data"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "dV0RsrsaHhxy",
"colab_type": "text"
},
"source": [
"First let's download the dataset we are going to study. The [dataset](http://ai.stanford.edu/~amaas/data/sentiment/) has been curated by Andrew Maas et al. and contains a total of 100,000 reviews on IMDB. 25,000 of them are labelled as positive and negative for training, another 25,000 are labelled for testing (in both cases they are highly polarized). The remaning 50,000 is an additional unlabelled data (but we will find a use for it nonetheless).\n",
"\n",
"We'll begin with a sample we've prepared for you, so that things run quickly before going over the full dataset."
]
},
{
"cell_type": "code",
"metadata": {
"id": "27ptxD2zHhx0",
"colab_type": "code",
"outputId": "e2690cef-f652-4168-d8c5-87cee5fc1971",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
}
},
"source": [
"path = untar_data(URLs.IMDB_SAMPLE)\n",
"path.ls()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading http://files.fast.ai/data/examples/imdb_sample\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[PosixPath('/root/.fastai/data/imdb_sample/texts.csv')]"
]
},
"metadata": {
"tags": []
},
"execution_count": 12
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sckUgCKUHhx9",
"colab_type": "text"
},
"source": [
"It only contains one csv file, let's have a look at it."
]
},
{
"cell_type": "code",
"metadata": {
"id": "dAgqbmHSHhx_",
"colab_type": "code",
"outputId": "7cc82769-de26-4dc6-a913-482c67f7bbd4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"df = pd.read_csv(path/'texts.csv')\n",
"df.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>label</th>\n",
" <th>text</th>\n",
" <th>is_valid</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>negative</td>\n",
" <td>Un-bleeping-believable! Meg Ryan doesn't even ...</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>positive</td>\n",
" <td>This is a extremely well-made film. The acting...</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>negative</td>\n",
" <td>Every once in a long while a movie will come a...</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>positive</td>\n",
" <td>Name just says it all. I watched this movie wi...</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>negative</td>\n",
" <td>This movie succeeds at being one of the most u...</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" label text is_valid\n",
"0 negative Un-bleeping-believable! Meg Ryan doesn't even ... False\n",
"1 positive This is a extremely well-made film. The acting... False\n",
"2 negative Every once in a long while a movie will come a... False\n",
"3 positive Name just says it all. I watched this movie wi... False\n",
"4 negative This movie succeeds at being one of the most u... False"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Z-sS55auH7wV",
"colab_type": "code",
"outputId": "c75a1337-b27b-4cb4-b457-5913d1f08520",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"df.iloc[0]['text']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"\"Un-bleeping-believable! Meg Ryan doesn't even look her usual pert lovable self in this, which normally makes me forgive her shallow ticky acting schtick. Hard to believe she was the producer on this dog. Plus Kevin Kline: what kind of suicide trip has his career been on? Whoosh... Banzai!!! Finally this was directed by the guy who did Big Chill? Must be a replay of Jonestown - hollywood style. Wooofff!\""
]
},
"metadata": {
"tags": []
},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Jv1AbTRnHhyF",
"colab_type": "code",
"outputId": "dfa4105a-9959-461f-f2a9-05e4dee7b500",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"df['text'][1]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'This is a extremely well-made film. The acting, script and camera-work are all first-rate. The music is good, too, though it is mostly early in the film, when things are still relatively cheery. There are no really superstars in the cast, though several faces will be familiar. The entire cast does an excellent job with the script.<br /><br />But it is hard to watch, because there is no good end to a situation like the one presented. It is now fashionable to blame the British for setting Hindus and Muslims against each other, and then cruelly separating them into two countries. There is some merit in this view, but it\\'s also true that no one forced Hindus and Muslims in the region to mistreat each other as they did around the time of partition. It seems more likely that the British simply saw the tensions between the religions and were clever enough to exploit them to their own ends.<br /><br />The result is that there is much cruelty and inhumanity in the situation and this is very unpleasant to remember and to see on the screen. But it is never painted as a black-and-white case. There is baseness and nobility on both sides, and also the hope for change in the younger generation.<br /><br />There is redemption of a sort, in the end, when Puro has to make a hard choice between a man who has ruined her life, but also truly loved her, and her family which has disowned her, then later come looking for her. But by that point, she has no option that is without great pain for her.<br /><br />This film carries the message that both Muslims and Hindus have their grave faults, and also that both can be dignified and caring people. The reality of partition makes that realisation all the more wrenching, since there can never be real reconciliation across the India/Pakistan border. In that sense, it is similar to \"Mr & Mrs Iyer\".<br /><br />In the end, we were glad to have seen the film, even though the resolution was heartbreaking. If the UK and US could deal with their own histories of racism with this kind of frankness, they would certainly be better off.'"
]
},
"metadata": {
"tags": []
},
"execution_count": 15
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xylPuiO3HhyM",
"colab_type": "text"
},
"source": [
"It contains one line per review, with the label ('negative' or 'positive'), the text and a flag to determine if it should be part of the validation set or the training set. If we ignore this flag, we can create a DataBunch containing this data in one line of code:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "shpIMzWJHhyO",
"colab_type": "code",
"outputId": "57ff19b8-9a0f-4155-fe24-3d4c8c9675ca",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 17
}
},
"source": [
"data_lm = TextDataBunch.from_csv(path, 'texts.csv')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BL5il4YjHhyW",
"colab_type": "text"
},
"source": [
"By executing this line a process was launched that took a bit of time. Let's dig a bit into it. Images could be fed (almost) directly into a model because they're just a big array of pixel values that are floats between 0 and 1. A text is composed of words, and we can't apply mathematical functions to them directly. We first have to convert them to numbers. This is done in two differents steps: tokenization and numericalization. A `TextDataBunch` does all of that behind the scenes for you.\n",
"\n",
"Before we delve into the explanations, let's take the time to save the things that were calculated."
]
},
{
"cell_type": "code",
"metadata": {
"id": "u6mO94JnHhyY",
"colab_type": "code",
"colab": {}
},
"source": [
"data_lm.save()"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "dQNIrd5oHhyc",
"colab_type": "text"
},
"source": [
"Next time we launch this notebook, we can skip the cell above that took a bit of time (and that will take a lot more when you get to the full dataset) and load those results like this:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "GwwvsDH9Hhye",
"colab_type": "code",
"colab": {}
},
"source": [
"data = load_data(path)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "ebvVq_AsHhyi",
"colab_type": "text"
},
"source": [
"### Tokenization"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ybb_ErB9Hhyk",
"colab_type": "text"
},
"source": [
"The first step of processing we make the texts go through is to split the raw sentences into words, or more exactly tokens. The easiest way to do this would be to split the string on spaces, but we can be smarter:\n",
"\n",
"- we need to take care of punctuation\n",
"- some words are contractions of two different words, like isn't or don't\n",
"- we may need to clean some parts of our texts, if there's HTML code for instance\n",
"\n",
"To see what the tokenizer had done behind the scenes, let's have a look at a few texts in a batch."
]
},
{
"cell_type": "code",
"metadata": {
"id": "TL8ZHxI0Hhyl",
"colab_type": "code",
"outputId": "6224a6e5-7aa0-48a2-db22-deb1650e5e00",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 289
}
},
"source": [
"data = TextClasDataBunch.from_csv(path, 'texts.csv')\n",
"data.show_batch()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>text</th>\n",
" <th>target</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>xxbos xxup the xxup shop xxup around xxup the xxup corner is one of the sweetest and most feel - good romantic comedies ever made . xxmaj there 's just no getting around that , and it 's hard to actually put one 's feeling for this film into words . xxmaj it 's not one of those films that tries too hard , nor does it come up with</td>\n",
" <td>positive</td>\n",
" </tr>\n",
" <tr>\n",
" <td>xxbos xxmaj now that xxmaj che(2008 ) has finished its relatively short xxmaj australian cinema run ( extremely limited xxunk screen in xxmaj sydney , after xxunk ) , i can xxunk join both xxunk of \" xxmaj at xxmaj the xxmaj movies \" in taking xxmaj steven xxmaj soderbergh to task . \\n \\n xxmaj it 's usually satisfying to watch a film director change his style /</td>\n",
" <td>negative</td>\n",
" </tr>\n",
" <tr>\n",
" <td>xxbos xxmaj this film sat on my xxmaj tivo for weeks before i watched it . i dreaded a self - indulgent xxunk flick about relationships gone bad . i was wrong ; this was an xxunk xxunk into the screwed - up xxunk of xxmaj new xxmaj yorkers . \\n \\n xxmaj the format is the same as xxmaj max xxmaj xxunk ' \" xxmaj la xxmaj ronde</td>\n",
" <td>positive</td>\n",
" </tr>\n",
" <tr>\n",
" <td>xxbos xxmaj many neglect that this is n't just a classic due to the fact that it 's the first xxup 3d game , or even the first xxunk - up . xxmaj it 's also one of the first stealth games , one of the xxunk definitely the first ) truly claustrophobic games , and just a pretty well - rounded gaming experience in general . xxmaj with graphics</td>\n",
" <td>positive</td>\n",
" </tr>\n",
" <tr>\n",
" <td>xxbos i really wanted to love this show . i truly , honestly did . \\n \\n xxmaj for the first time , gay viewers get their own version of the \" xxmaj the xxmaj bachelor \" . xxmaj with the help of his obligatory \" hag \" xxmaj xxunk , xxmaj james , a good looking , well - to - do thirty - something has the chance</td>\n",
" <td>negative</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AbN4nUyYHhyp",
"colab_type": "text"
},
"source": [
"The texts are truncated at 100 tokens for more readability. We can see that it did more than just split on space and punctuation symbols: \n",
"- the \"'s\" are grouped together in one token\n",
"- the contractions are separated like this: \"did\", \"n't\"\n",
"- content has been cleaned for any HTML symbol and lower cased\n",
"- there are several special tokens (all those that begin by xx), to replace unknown tokens (see below) or to introduce different text fields (here we only have one)."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nFeEztluHhyq",
"colab_type": "text"
},
"source": [
"### Numericalization"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7yyjTB91Hhyr",
"colab_type": "text"
},
"source": [
"Once we have extracted tokens from our texts, we convert to integers by creating a list of all the words used. We only keep the ones that appear at least twice with a maximum vocabulary size of 60,000 (by default) and replace the ones that don't make the cut by the unknown token `UNK`.\n",
"\n",
"The correspondance from ids to tokens is stored in the `vocab` attribute of our datasets, in a dictionary called `itos` (for int to string)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "-Q9I3kYTHhys",
"colab_type": "code",
"outputId": "f7802cef-2d47-4c12-fd64-04072ff10c41",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 187
}
},
"source": [
"data.vocab.itos[:10]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"['xxunk',\n",
" 'xxpad',\n",
" 'xxbos',\n",
" 'xxeos',\n",
" 'xxfld',\n",
" 'xxmaj',\n",
" 'xxup',\n",
" 'xxrep',\n",
" 'xxwrep',\n",
" 'the']"
]
},
"metadata": {
"tags": []
},
"execution_count": 22
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Mnzuq5MSHhyx",
"colab_type": "text"
},
"source": [
"And if we look at what a what's in our datasets, we'll see the tokenized text as a representation:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "efjbYRnJHhyy",
"colab_type": "code",
"outputId": "7fb2484d-27be-48f5-f703-772e3dea8fda",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 190
}
},
"source": [
"data.train_ds[0][0]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text xxbos xxmaj this is the last of four xxunk from xxmaj france i 've scheduled for viewing during this xxmaj christmas season : the others ( in order of viewing ) were the uninspired xxup the xxup black xxup tulip ( 1964 ; from the same director as this one but not nearly as good ) , the surprisingly effective xxup lady xxmaj oscar ( 1979 ; which had xxunk as a xxmaj japanese manga ! ) and the splendid xxup cartouche ( 1962 ) . xxmaj actually , i had watched this one not too long ago on late - night xxmaj italian xxup tv and recall not being especially xxunk over by it , so that i was genuinely surprised by how much i enjoyed it this time around ( also bearing in mind the xxunk lack of enthusiasm shown towards the film here and elsewhere when it was first announced as an upcoming xxup dvd release from xxmaj criterion ) . \n",
" \n",
" xxmaj incidentally , xxup fanfan xxup la xxup tulipe has quite a bit in common with the xxunk - mentioned xxup cartouche : not just cast and crew members ( producers xxmaj georges xxmaj xxunk and xxmaj xxunk xxmaj xxunk , cinematographer xxmaj christian xxmaj xxunk , actor xxmaj xxunk xxmaj roquevert ) but plot - wise as well – in fact , the hero is a womanizing soldier ( xxmaj jean - xxmaj paul xxmaj xxunk 's xxmaj cartouche had also had a brief military spell ) who 's loved by a fiery girl ( in this case , gypsy xxmaj gina xxmaj lollobrigida ) while he 's himself obsessed by an impossible love ( here , it 's none other than the king 's daughter ) ! xxmaj as in the later film , too , xxmaj fanfan ( an ideally cast xxmaj gerard xxmaj philipe who , ironically , is so full of life here that one finds it hard to believe that he would be xxunk down by cancer within 7 years ' time ) is xxunk by two fun - loving yet xxunk men ( one of them is actually his superior officer and the heroine 's own father ) and opposed by an xxunk figure within his own ranks ( the xxunk xxmaj roquevert , with whom the hero eventually xxunk in a rooftop duel since he too has xxunk designs on the gypsy girl ) ! ; for the record , xxmaj lollobrigida will xxunk xxmaj philippe in her next film , xxmaj xxunk xxmaj clair 's delightful romantic fantasy xxup xxunk xxup xxunk xxup de xxup xxunk ( xxunk ) . \n",
" \n",
" xxup fanfan proved to be a big box - office hit on its home - ground and even xxunk a surprising ( but well - deserved ) xxmaj best xxmaj direction award at xxmaj xxunk over more renowned films like xxup an xxmaj american xxup in xxmaj paris ( 1951 ) , xxup detective xxup story ( 1951 ) , xxup othello , xxup xxunk xxup xxunk and xxup viva xxup xxunk ! xxmaj in fact , its popularity xxunk its re - release in a computer - colored version ( presumably for the benefit of viewers who would n't touch a black - and - white product with a ten - foot pole ) and the xxmaj criterion xxup dvd itself contains a sample from this xxunk ; being obviously a foreign - language title , there 's also the dubious choice of an xxmaj english - dubbed soundtrack but , even if these proved not especially painful to sit through considering , when all is said and done , there 's simply no substitute for the original ! \n",
" \n",
" xxup fanfan xxup la xxup tulipe ( a xxunk given the hero by a young xxmaj xxunk xxmaj page as the celebrated xxmaj xxunk xxmaj de xxmaj pompadour ) contains about as much comedy as ( the expected ) action and romance ; while some may find this overwhelming , i do n't agree myself as i enjoyed the sharply satirical narration and , on the whole , this combination is comparable with xxmaj xxunk xxmaj xxunk 's equally xxunk xxup the xxup adventures xxup of xxup gerard ( 1970 ) . xxmaj that said , the swordfights here are remarkably xxunk for an essentially lighthearted enterprise ( particularly a xxunk in the woods and the xxunk at a convent ) and the film itself rather adult at times ( with numerous xxunk to sexuality as well as xxunk language adopted throughout ) when viewed back - to - back with xxunk xxmaj hollywood fare as i did now ; the climax , then is quite ingenious : the enemy forces ( who , amusingly , are made to speak in xxunk - up gibberish ! ) are xxunk by our heroic trio alone , much to the king 's xxunk who , as portrayed by xxmaj marcel xxmaj xxunk – best - known for his role of leader of the xxmaj parisian xxunk in xxmaj marcel xxmaj xxunk ' 's xxup children xxup of xxup paradise ( 1945 ) – is himself something of a xxunk . \n",
" \n",
" xxup p.s. xxmaj an xxmaj italian xxup tv channel has been threatening to screen xxmaj christian - xxmaj xxunk 's promising xxup champagne xxup for xxup xxunk ( 1964 ) for months now but , despite programming it three times already ( with a tentative fourth one xxunk for next week ) , they have yet to show it ; even so , i do have three more films of his in my xxunk xxup vhs pile ( equally culled from late - night xxmaj italian xxup tv screenings ) : the three - hour epic xxup la xxup xxunk xxup de xxup xxunk ( 1948 ; also starring xxmaj gerard xxmaj philippe ) , xxup the xxup second xxup twin ( xxunk ) and xxup the xxup legend xxup of xxup xxunk xxup king ( 1971 ; with xxmaj xxunk xxmaj bardot and xxmaj claudia xxmaj xxunk ) ."
]
},
"metadata": {
"tags": []
},
"execution_count": 23
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "zx5TK3-_OrlT",
"colab_type": "code",
"outputId": "f1ab4648-8212-4e92-b776-b013b1441008",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 190
}
},
"source": [
"data.train_ds[0][0]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text xxbos xxmaj this is the last of four xxunk from xxmaj france i 've scheduled for viewing during this xxmaj christmas season : the others ( in order of viewing ) were the uninspired xxup the xxup black xxup tulip ( 1964 ; from the same director as this one but not nearly as good ) , the surprisingly effective xxup lady xxmaj oscar ( 1979 ; which had xxunk as a xxmaj japanese manga ! ) and the splendid xxup cartouche ( 1962 ) . xxmaj actually , i had watched this one not too long ago on late - night xxmaj italian xxup tv and recall not being especially xxunk over by it , so that i was genuinely surprised by how much i enjoyed it this time around ( also bearing in mind the xxunk lack of enthusiasm shown towards the film here and elsewhere when it was first announced as an upcoming xxup dvd release from xxmaj criterion ) . \n",
" \n",
" xxmaj incidentally , xxup fanfan xxup la xxup tulipe has quite a bit in common with the xxunk - mentioned xxup cartouche : not just cast and crew members ( producers xxmaj georges xxmaj xxunk and xxmaj xxunk xxmaj xxunk , cinematographer xxmaj christian xxmaj xxunk , actor xxmaj xxunk xxmaj roquevert ) but plot - wise as well – in fact , the hero is a womanizing soldier ( xxmaj jean - xxmaj paul xxmaj xxunk 's xxmaj cartouche had also had a brief military spell ) who 's loved by a fiery girl ( in this case , gypsy xxmaj gina xxmaj lollobrigida ) while he 's himself obsessed by an impossible love ( here , it 's none other than the king 's daughter ) ! xxmaj as in the later film , too , xxmaj fanfan ( an ideally cast xxmaj gerard xxmaj philipe who , ironically , is so full of life here that one finds it hard to believe that he would be xxunk down by cancer within 7 years ' time ) is xxunk by two fun - loving yet xxunk men ( one of them is actually his superior officer and the heroine 's own father ) and opposed by an xxunk figure within his own ranks ( the xxunk xxmaj roquevert , with whom the hero eventually xxunk in a rooftop duel since he too has xxunk designs on the gypsy girl ) ! ; for the record , xxmaj lollobrigida will xxunk xxmaj philippe in her next film , xxmaj xxunk xxmaj clair 's delightful romantic fantasy xxup xxunk xxup xxunk xxup de xxup xxunk ( xxunk ) . \n",
" \n",
" xxup fanfan proved to be a big box - office hit on its home - ground and even xxunk a surprising ( but well - deserved ) xxmaj best xxmaj direction award at xxmaj xxunk over more renowned films like xxup an xxmaj american xxup in xxmaj paris ( 1951 ) , xxup detective xxup story ( 1951 ) , xxup othello , xxup xxunk xxup xxunk and xxup viva xxup xxunk ! xxmaj in fact , its popularity xxunk its re - release in a computer - colored version ( presumably for the benefit of viewers who would n't touch a black - and - white product with a ten - foot pole ) and the xxmaj criterion xxup dvd itself contains a sample from this xxunk ; being obviously a foreign - language title , there 's also the dubious choice of an xxmaj english - dubbed soundtrack but , even if these proved not especially painful to sit through considering , when all is said and done , there 's simply no substitute for the original ! \n",
" \n",
" xxup fanfan xxup la xxup tulipe ( a xxunk given the hero by a young xxmaj xxunk xxmaj page as the celebrated xxmaj xxunk xxmaj de xxmaj pompadour ) contains about as much comedy as ( the expected ) action and romance ; while some may find this overwhelming , i do n't agree myself as i enjoyed the sharply satirical narration and , on the whole , this combination is comparable with xxmaj xxunk xxmaj xxunk 's equally xxunk xxup the xxup adventures xxup of xxup gerard ( 1970 ) . xxmaj that said , the swordfights here are remarkably xxunk for an essentially lighthearted enterprise ( particularly a xxunk in the woods and the xxunk at a convent ) and the film itself rather adult at times ( with numerous xxunk to sexuality as well as xxunk language adopted throughout ) when viewed back - to - back with xxunk xxmaj hollywood fare as i did now ; the climax , then is quite ingenious : the enemy forces ( who , amusingly , are made to speak in xxunk - up gibberish ! ) are xxunk by our heroic trio alone , much to the king 's xxunk who , as portrayed by xxmaj marcel xxmaj xxunk – best - known for his role of leader of the xxmaj parisian xxunk in xxmaj marcel xxmaj xxunk ' 's xxup children xxup of xxup paradise ( 1945 ) – is himself something of a xxunk . \n",
" \n",
" xxup p.s. xxmaj an xxmaj italian xxup tv channel has been threatening to screen xxmaj christian - xxmaj xxunk 's promising xxup champagne xxup for xxup xxunk ( 1964 ) for months now but , despite programming it three times already ( with a tentative fourth one xxunk for next week ) , they have yet to show it ; even so , i do have three more films of his in my xxunk xxup vhs pile ( equally culled from late - night xxmaj italian xxup tv screenings ) : the three - hour epic xxup la xxup xxunk xxup de xxup xxunk ( 1948 ; also starring xxmaj gerard xxmaj philippe ) , xxup the xxup second xxup twin ( xxunk ) and xxup the xxup legend xxup of xxup xxunk xxup king ( 1971 ; with xxmaj xxunk xxmaj bardot and xxmaj claudia xxmaj xxunk ) ."
]
},
"metadata": {
"tags": []
},
"execution_count": 24
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tdALkClSHhy3",
"colab_type": "text"
},
"source": [
"But the underlying data is all numbers"
]
},
{
"cell_type": "code",
"metadata": {
"id": "xPuWHVmwHhy5",
"colab_type": "code",
"outputId": "09ce4990-d875-415a-9b17-5cefc48ebf8c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"data.train_ds[0][0].data[:10]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([ 2, 5, 20, 16, 9, 250, 14, 614, 0, 51])"
]
},
"metadata": {
"tags": []
},
"execution_count": 25
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TUwy9tmfHhy-",
"colab_type": "text"
},
"source": [
"### With the data block API"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "B5xKvSShHhzA",
"colab_type": "text"
},
"source": [
"We can use the data block API with NLP and have a lot more flexibility than what the default factory methods offer. In the previous example for instance, the data was randomly split between train and validation instead of reading the third column of the csv.\n",
"\n",
"With the data block API though, we have to manually call the tokenize and numericalize steps. This allows more flexibility, and if you're not using the defaults from fastai, the various arguments to pass will appear in the step they're revelant, so it'll be more readable."
]
},
{
"cell_type": "code",
"metadata": {
"id": "Mxo_n3pEHhzC",
"colab_type": "code",
"outputId": "61878a30-25c9-44d9-cf41-cd0ee84cb0b0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 17
}
},
"source": [
"data = (TextList.from_csv(path, 'texts.csv', cols='text')\n",
" .split_from_df(col=2)\n",
" .label_from_df(cols=0)\n",
" .databunch())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TBArvlXkHhzG",
"colab_type": "text"
},
"source": [
"## Language model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xRoRSqeFHhzJ",
"colab_type": "text"
},
"source": [
"Note that language models can use a lot of GPU, so you may need to decrease batchsize here."
]
},
{
"cell_type": "code",
"metadata": {
"id": "QUcFqn67HhzM",
"colab_type": "code",
"colab": {}
},
"source": [
"bs=36"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZeWczm4NHhzR",
"colab_type": "text"
},
"source": [
"Now let's grab the full dataset for what follows."
]
},
{
"cell_type": "code",
"metadata": {
"id": "MQzwIgDgHhzT",
"colab_type": "code",
"outputId": "a98557c5-bb34-4187-a1ab-4b2dab239011",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 153
}
},
"source": [
"path = untar_data(URLs.IMDB)\n",
"path.ls()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading https://s3.amazonaws.com/fast-ai-nlp/imdb\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[PosixPath('/root/.fastai/data/imdb/tmp_clas'),\n",
" PosixPath('/root/.fastai/data/imdb/test'),\n",
" PosixPath('/root/.fastai/data/imdb/tmp_lm'),\n",
" PosixPath('/root/.fastai/data/imdb/unsup'),\n",
" PosixPath('/root/.fastai/data/imdb/imdb.vocab'),\n",
" PosixPath('/root/.fastai/data/imdb/train'),\n",
" PosixPath('/root/.fastai/data/imdb/README')]"
]
},
"metadata": {
"tags": []
},
"execution_count": 8
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "mIn1uw7O1xHI",
"colab_type": "code",
"outputId": "21a127c0-e0e6-49fd-963a-b0aee8451ada",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 170
}
},
"source": [
"path.ls()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[PosixPath('/root/.fastai/data/imdb/models'),\n",
" PosixPath('/root/.fastai/data/imdb/train'),\n",
" PosixPath('/root/.fastai/data/imdb/tmp_clas'),\n",
" PosixPath('/root/.fastai/data/imdb/imdb.vocab'),\n",
" PosixPath('/root/.fastai/data/imdb/unsup'),\n",
" PosixPath('/root/.fastai/data/imdb/data_lm.pkl'),\n",
" PosixPath('/root/.fastai/data/imdb/tmp_lm'),\n",
" PosixPath('/root/.fastai/data/imdb/test'),\n",
" PosixPath('/root/.fastai/data/imdb/README')]"
]
},
"metadata": {
"tags": []
},
"execution_count": 24
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5wn_H5iGHhzk",
"colab_type": "text"
},
"source": [
"The reviews are in a training and test set following an imagenet structure. The only difference is that there is an `unsup` folder on top of `train` and `test` that contains the unlabelled data.\n",
"\n",
"We're not going to train a model that classifies the reviews from scratch. Like in computer vision, we'll use a model pretrained on a bigger dataset (a cleaned subset of wikipedia called [wikitext-103](https://einstein.ai/research/blog/the-wikitext-long-term-dependency-language-modeling-dataset)). That model has been trained to guess what the next word is, its input being all the previous words. It has a recurrent structure and a hidden state that is updated each time it sees a new word. This hidden state thus contains information about the sentence up to that point.\n",
"\n",
"We are going to use that 'knowledge' of the English language to build our classifier, but first, like for computer vision, we need to fine-tune the pretrained model to our particular dataset. Because the English of the reviews left by people on IMDB isn't the same as the English of wikipedia, we'll need to adjust the parameters of our model by a little bit. Plus there might be some words that would be extremely common in the reviews dataset but would be barely present in wikipedia, and therefore might not be part of the vocabulary the model was trained on."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "M5rdx6d-Hhzl",
"colab_type": "text"
},
"source": [
"This is where the unlabelled data is going to be useful to us, as we can use it to fine-tune our model. Let's create our data object with the data block API (next line takes a few minutes)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "gSFeY5MCHhzm",
"colab_type": "code",
"outputId": "e92964d3-d2fc-4e60-de51-95ee7a54b2e8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
}
},
"source": [
"%time\n",
"data_lm = (TextList.from_folder(path)\n",
" #Inputs: all the text files in path\n",
" .filter_by_folder(include=['train', 'test', 'unsup']) \n",
" #We may have other temp folders that contain text files so we only keep what's in train and test\n",
" .split_by_rand_pct(0.1)\n",
" #We randomly split and keep 10% (10,000 reviews) for validation\n",
" .label_for_lm() \n",
" #We want to do a language model so we label accordingly\n",
" .databunch(bs=bs))\n",
"data_lm.save('data_lm.pkl')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"CPU times: user 1 µs, sys: 0 ns, total: 1 µs\n",
"Wall time: 4.29 µs\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "pWjrGEf2Hhzq",
"colab_type": "code",
"colab": {}
},
"source": [
"data_lm = load_data(path, 'data_lm.pkl', bs=bs)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "33jXObncHhzv",
"colab_type": "code",
"outputId": "ff044998-b816-430f-8cb8-bd9bb787a5e8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 374
}
},
"source": [
"data_lm.show_batch()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>idx</th>\n",
" <th>text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>russo , and they join forces , and bodies , in the search for the villain who has done away with their spouses . xxmaj also starring xxmaj richard xxmaj belzer , this movie has its moments especially if you like car chases , but its really not a good movie for the most part , check it out if you 're really bored and have already seen xxmaj the</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>xxmaj gas ! \" but did n't quite get there . xxmaj neither one of those films even got close to the success of xxup m*a*s*h. \\n \\n xxmaj what 's wrong with \" xxmaj gas ! \" ? xxmaj what is n't ? xxmaj no one comes close to really acting at a level above junior high school theatrics . xxmaj the production values stink . xxmaj someone</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>xxup don't xxup waste xxup you're xxup precious xxup time xxup on xxup such a xxup ridiculous xxup and xxup stupid xxup movie . \\n \\n i was wondering when it was going to end , even though it is a short movie . xxmaj in the beginning we thought it would get better ; but it gets worse . xxmaj stupid , all the way to the end</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>? ) confusion . xxmaj oddly , xxmaj the xxmaj horror xxmaj show is also xxup aka xxmaj horror xxmaj house , and xxmaj la xxmaj casa 5 is also xxup aka xxmaj horror xxmaj house 2 . xxmaj does your head hurt yet ? xxbos xxmaj this film describes the experiences of a couple of hit men ( one of them xxmaj burt xxmaj reynolds ) , a prostitute</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>is a film that if made in xxmaj australia would have easily been a comedy . xxmaj sadly and annoyingly , here it is , flaccid and cheesy and overbaked from xxmaj lala land . xxmaj how did the di - xxunk get it so wrong ? xxmaj well , mainly by being serious about a job so hilariously startling that nobody in their right mind could take seriously .</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "t5ujwQQSHhzz",
"colab_type": "text"
},
"source": [
"We can then put this in a learner object very easily with a model loaded with the pretrained weights. They'll be downloaded the first time you'll execute the following line and stored in `~/.fastai/models/` (or elsewhere if you specified different paths in your config file)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "KbrMB-LsHhz0",
"colab_type": "code",
"colab": {}
},
"source": [
"learn = language_model_learner(data_lm, AWD_LSTM, drop_mult=0.3)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "C0RpHnmqHhz3",
"colab_type": "code",
"outputId": "f0a58230-9f5d-44d3-8b91-faebff7dbaae",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
}
},
"source": [
"%%time\n",
"learn.lr_find()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n",
"CPU times: user 22.8 s, sys: 14.7 s, total: 37.4 s\n",
"Wall time: 38 s\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "OQ7dNluAHhz7",
"colab_type": "code",
"outputId": "e65f4b82-7e78-41a0-e3ce-4c6375c064fb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"source": [
"learn.recorder.plot(skip_end=15)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "3vP0aDjnHhz-",
"colab_type": "code",
"outputId": "86e88515-779b-496b-affa-af16f6b68911",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 114
}
},
"source": [
"%%time\n",
"learn.fit_one_cycle(1, 1e-2, moms=(0.8,0.7))\n",
"learn.save('fit_head')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>4.164058</td>\n",
" <td>4.026455</td>\n",
" <td>0.295525</td>\n",
" <td>54:21</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"CPU times: user 32min 46s, sys: 21min 3s, total: 53min 49s\n",
"Wall time: 54min 22s\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qGC_DFkc2dX-",
"colab_type": "text"
},
"source": [
"### Save the language model in drive"
]
},
{
"cell_type": "code",
"metadata": {
"id": "zyuVb4_114Ea",
"colab_type": "code",
"colab": {}
},
"source": [
"cp -rf /root/.fastai/data/imdb/models/* /content/gdrive/My\\ Drive/Colab\\ Notebooks/data/imdb/models/"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ZkRcgxpNHh0I",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.load('fit_head');"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "8JF1w19vHh0N",
"colab_type": "text"
},
"source": [
"To complete the fine-tuning, we can then unfeeze and launch a new training."
]
},
{
"cell_type": "code",
"metadata": {
"id": "QhoxwewZHh0O",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.unfreeze()"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "G-rPayIw6635",
"colab_type": "code",
"outputId": "45b200a5-7cd3-4844-ec06-97e4bde05e6f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
}
},
"source": [
"%%time\n",
"learn.lr_find()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n",
"CPU times: user 19.8 s, sys: 13.5 s, total: 33.4 s\n",
"Wall time: 33.6 s\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "7PZ1W8cq8dD6",
"colab_type": "code",
"outputId": "cea26a32-0570-4855-a78e-662e4fed4783",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"source": [
"learn.recorder.plot(skip_end=15)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n5x8n5lXDAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "sQS08HkF6vLj",
"colab_type": "code",
"outputId": "140512cc-0e9b-460d-ab22-5d46f6a2f734",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 114
}
},
"source": [
"%%time\n",
"learn.fit_one_cycle(1, 1e-3, moms=(0.8,0.7))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>3.809935</td>\n",
" <td>3.761191</td>\n",
" <td>0.329125</td>\n",
" <td>1:07:18</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"CPU times: user 39min 48s, sys: 26min 55s, total: 1h 6min 44s\n",
"Wall time: 1h 7min 18s\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "gOlnyCa3Hh0T",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.save('fine_tuned')"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "MQ7KF9VuHh0X",
"colab_type": "text"
},
"source": [
"How good is our model? Well let's try to see what it predicts after a few given words."
]
},
{
"cell_type": "code",
"metadata": {
"id": "PlM58nGRHh0Y",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.load('fine_tuned');"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "BIuvXDOuHh0b",
"colab_type": "code",
"colab": {}
},
"source": [
"TEXT = \"I liked this movie because\"\n",
"N_WORDS = 40\n",
"N_SENTENCES = 5"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ShtkykSXHh0f",
"colab_type": "code",
"outputId": "9a592f23-f960-406a-dba7-0ac2caec13ad",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 136
}
},
"source": [
"print(\"\\n\".join(learn.predict(TEXT, N_WORDS, temperature=0.75) for _ in range(N_SENTENCES)))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"I liked this movie because of its positive reviews . The story of these people i understand is very well told . The main movie is \" The Day the Earth Stood Still \" by a young\n",
"I liked this movie because it was so clever . It always tries to make a whole meaning of life and then allows it to end . The movie did not get boring until the end . i was not impressed by the\n",
"I liked this movie because it 's much more than a movie which you 're given a chance to watch . The actors were n't very good either either , their actor was very good and Freeman and Assignments are great .\n",
"I liked this movie because it was a very good movie that i like in the early 90 's and i figured it would have been better . However , the actors were good . The production quality is great and the actors\n",
"I liked this movie because it was so amazing that i loved it . It was good to see a movie with a lot of races and a great story . \n",
" \n",
" The plot was all that good and i did n't like\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1SfsFgPTHh0j",
"colab_type": "text"
},
"source": [
"We have to save not only the model, but also its encoder, the part that's responsible for creating and updating the hidden state. For the next part, we don't care about the part that tries to guess the next word."
]
},
{
"cell_type": "code",
"metadata": {
"id": "f_ugQVowHh0k",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.save_encoder('fine_tuned_enc')"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "l8iF2o8qN2Cd",
"colab_type": "code",
"colab": {}
},
"source": [
"# Save the fine_tuned model and encoder in drive\n",
"# cp -rf /root/.fastai/data/imdb/models /content/gdrive/My\\ Drive/Colab\\ Notebooks/data/imdb/"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "sQVdjeuXHh0m",
"colab_type": "text"
},
"source": [
"## Classifier"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KHm7hCUTHh0m",
"colab_type": "text"
},
"source": [
"Now, we'll create a new data object that only grabs the labelled data and keeps those labels. Again, this line takes a bit of time."
]
},
{
"cell_type": "code",
"metadata": {
"id": "wJF6c1m0Hh0n",
"colab_type": "code",
"outputId": "40582064-ab72-42d0-ed0e-6426a3e481b0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"path = untar_data(URLs.IMDB)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading https://s3.amazonaws.com/fast-ai-nlp/imdb\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "CWaaXeyitfdG",
"colab_type": "code",
"outputId": "a7a1fc29-fda4-4ed5-9c22-0e099a1ae430",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 187
}
},
"source": [
"path.ls()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[PosixPath('/root/.fastai/data/imdb/models'),\n",
" PosixPath('/root/.fastai/data/imdb/tmp_clas'),\n",
" PosixPath('/root/.fastai/data/imdb/test'),\n",
" PosixPath('/root/.fastai/data/imdb/tmp_lm'),\n",
" PosixPath('/root/.fastai/data/imdb/data_clas.pkl'),\n",
" PosixPath('/root/.fastai/data/imdb/unsup'),\n",
" PosixPath('/root/.fastai/data/imdb/imdb.vocab'),\n",
" PosixPath('/root/.fastai/data/imdb/data_lm.pkl'),\n",
" PosixPath('/root/.fastai/data/imdb/train'),\n",
" PosixPath('/root/.fastai/data/imdb/README')]"
]
},
"metadata": {
"tags": []
},
"execution_count": 15
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "lnF8Vs6jtk7s",
"colab_type": "code",
"outputId": "c36967f4-f3f4-426a-b082-51e90bc77086",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"src = gdrive_imdb/'data_lm.pkl'\n",
"dest = path/'data_lm.pkl'\n",
"shutil.copyfile(str(src), str(dest))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'/root/.fastai/data/imdb/data_lm.pkl'"
]
},
"metadata": {
"tags": []
},
"execution_count": 26
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bBIn85QDf87j",
"colab_type": "code",
"outputId": "acf3f473-eb6e-4665-b099-028e178f3322",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"src = gdrive_imdb/'data_clas.pkl'\n",
"dest = path/'data_clas.pkl'\n",
"shutil.copyfile(str(src), str(dest))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'/root/.fastai/data/imdb/data_clas.pkl'"
]
},
"metadata": {
"tags": []
},
"execution_count": 27
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bq2dfU1NuieN",
"colab_type": "code",
"outputId": "1f305067-3dcf-4c9c-ec82-bef1a7ea62ca",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"src = gdrive_imdb/'models'\n",
"dest = path/'models'\n",
"shutil.copytree(str(src), str(dest))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'/root/.fastai/data/imdb/models'"
]
},
"metadata": {
"tags": []
},
"execution_count": 18
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "uIPkp59rvCgT",
"colab_type": "code",
"outputId": "9aa7f329-1381-4d55-ef6f-e76acdb76351",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 136
}
},
"source": [
"(path/'models').ls()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[PosixPath('/root/.fastai/data/imdb/models/fit_head.pth'),\n",
" PosixPath('/root/.fastai/data/imdb/models/fine_tuned.pth'),\n",
" PosixPath('/root/.fastai/data/imdb/models/tmp.pth'),\n",
" PosixPath('/root/.fastai/data/imdb/models/first.pth'),\n",
" PosixPath('/root/.fastai/data/imdb/models/fine_tuned_enc.pth'),\n",
" PosixPath('/root/.fastai/data/imdb/models/third.pth'),\n",
" PosixPath('/root/.fastai/data/imdb/models/second.pth')]"
]
},
"metadata": {
"tags": []
},
"execution_count": 29
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "eRTD1HwjHh0p",
"colab_type": "code",
"outputId": "6d6e8981-e7c6-4cfb-fa40-ffbb80629de4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
}
},
"source": [
"%%time\n",
"data_clas = (TextList.from_folder(path, vocab=data_lm.vocab)\n",
" #grab all the text files in path\n",
" .split_by_folder(valid='test')\n",
" #split by train and valid folder (that only keeps 'train' and 'test' so no need to filter)\n",
" .label_from_folder(classes=['neg', 'pos'])\n",
" #label them all with their folders\n",
" .databunch(bs=bs))\n",
"\n",
"data_clas.save('data_clas.pkl')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"CPU times: user 13.2 s, sys: 3.18 s, total: 16.3 s\n",
"Wall time: 2min 15s\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6A_98oOjrru4",
"colab_type": "text"
},
"source": [
"**Save the classifier databunch to google drive for restore**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "hMPE56m0rXKP",
"colab_type": "code",
"outputId": "b09d1763-ebfa-4857-be01-983f8201e1af",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"src = path/'data_clas.pkl'\n",
"dest = gdrive_imdb/'data_clas.pkl'\n",
"shutil.copyfile(src, dest)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"PosixPath('/content/gdrive/My Drive/Colab Notebooks/data/imdb/data_clas.pkl')"
]
},
"metadata": {
"tags": []
},
"execution_count": 15
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ybHDcOJbHh0t",
"colab_type": "code",
"colab": {}
},
"source": [
"data_clas = load_data(path, 'data_clas.pkl', bs=bs)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ZBPxfwlcHh0x",
"colab_type": "code",
"outputId": "ae094756-d504-4ab9-f433-65ba21c608e2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 289
}
},
"source": [
"data_clas.show_batch()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>text</th>\n",
" <th>target</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>xxbos xxmaj match 1 : xxmaj tag xxmaj team xxmaj table xxmaj match xxmaj bubba xxmaj ray and xxmaj spike xxmaj dudley vs xxmaj eddie xxmaj guerrero and xxmaj chris xxmaj benoit xxmaj bubba xxmaj ray and xxmaj spike xxmaj dudley started things off with a xxmaj tag xxmaj team xxmaj table xxmaj match against xxmaj eddie xxmaj guerrero and xxmaj chris xxmaj benoit . xxmaj according to the rules</td>\n",
" <td>pos</td>\n",
" </tr>\n",
" <tr>\n",
" <td>xxbos xxup the xxup shop xxup around xxup the xxup corner is one of the sweetest and most feel - good romantic comedies ever made . xxmaj there 's just no getting around that , and it 's hard to actually put one 's feeling for this film into words . xxmaj it 's not one of those films that tries too hard , nor does it come up with</td>\n",
" <td>pos</td>\n",
" </tr>\n",
" <tr>\n",
" <td>xxbos xxmaj the freedom of having your own xxmaj sea xxmaj going xxmaj power xxmaj boat , the excitement of going on underwater adventures a rugged , an 's man of an adventurer and xxunk so well endowed ! ) assistants in fine xxmaj bikinis were all definite selling points for \" xxup sea xxup xxunk - 61 ) . \\n \\n xxmaj just what was the reason for</td>\n",
" <td>pos</td>\n",
" </tr>\n",
" <tr>\n",
" <td>xxbos xxmaj the vigilante has long held a fascination for audiences , inasmuch as it evokes a sense of swift , sure justice ; good triumphs over evil and the bad guy gets his deserts . xxmaj it is , in fact , one of the things that has made the character of xxmaj dirty xxmaj harry xxmaj callahan ( as played by xxmaj clint xxmaj eastwood ) so popular</td>\n",
" <td>pos</td>\n",
" </tr>\n",
" <tr>\n",
" <td>xxbos xxmaj office work , especially in this era of computers , multi - functional copy machines , e - mail , voice mail , snail mail and ` temps , ' is territory ripe with satirical possibilities , a vein previously tapped in such films as ` xxmaj clockwatchers ' and ` xxmaj office xxmaj space , ' and very successfully . xxmaj this latest addition to the temp</td>\n",
" <td>neg</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qrUXOYV4Hh00",
"colab_type": "text"
},
"source": [
"We can then create a model to classify those reviews and load the encoder we saved before.\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "2jeQcZMRHh02",
"colab_type": "code",
"outputId": "307a51b9-e2b3-41be-e417-792c7d79394b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"learn = text_classifier_learner(data_clas, AWD_LSTM, drop_mult=0.5)\n",
"learn.load_encoder('fine_tuned_enc')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading https://s3.amazonaws.com/fast-ai-modelzoo/wt103-fwd\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"RNNLearner(data=TextClasDataBunch;\n",
"\n",
"Train: LabelList (25000 items)\n",
"x: TextList\n",
"xxbos xxmaj waitress : xxmaj honey , here 's them eggs you ordered . xxmaj honey , like bee , get it ? xxmaj that 's called pointless foreshadowing . \n",
" \n",
" xxmaj edward xxmaj basket : xxmaj huh ? ( xxmaj on the road ) xxmaj basket : xxmaj here 's your doll back , little girl . xxmaj you really should n't be so careless with your belongings . \n",
" \n",
" xxmaj little girl : xxmaj yeah , whatever . \n",
" \n",
" xxmaj crash ! xxmaj boom ! xxmaj whoosh ! xxmaj crackle \n",
" xxmaj basket : i think that something bad is about to happen . \n",
" \n",
" ( xxmaj later ) xxmaj basket : xxmaj mmmm . xxmaj vicodin ! xxmaj what the \n",
" ? ( xxmaj tears open letter . ) xxmaj wow ! xxmaj my ex - girl 's handwriting has really improved . xxmaj and look , her missing daughter looks kinda like the girl with the doll i accidentally was sort of responsible for getting killed , in a way . xxmaj and she kind of has my hairline . i wonder , should i torture myself and go find her ? xxmaj let 's see what my friends at the precinct think . \n",
" \n",
" xxmaj basket 's fellow male cop : xxup hahaha . xxmaj willow 's a funny name . \n",
" \n",
" xxmaj basket : i think that something bad is about to happen . \n",
" \n",
" ( xxmaj on the island ) xxmaj basket : xxmaj what 's in the sack ? xxup ahhh . \n",
" \n",
" xxmaj tree - named crone : xxmaj it 's not her daughter , though . \n",
" \n",
" ( xxmaj in the tavern ) xxmaj basket : xxmaj can you swing that ? xxmaj big - boned , tree - named tavern wench : xxmaj huh ? xxmaj basket : ( smashes a bee ) . xxmaj everything is xxup ok . \n",
" \n",
" xxmaj sensually pretty , formerly promising actress playing a lusty tavern scullery maid : xxmaj that 's good . xxmaj honey 's not a plant , though . \n",
" \n",
" ( xxmaj on the xxunk ) xxmaj willow : xxmaj oh , yeah , and i forgot , you are the father my child , xxmaj conan , er , i mean xxmaj xxunk . ( xxmaj yawns . ) i could have stayed and had a life with you . xxmaj but i did n't . i wanted to be princess of the beehive , instead . i mean , never mind . ( xxmaj nods off , jerks awake , widens eyes to anime proportions ) . xxmaj xxunk , kiss - kiss . xxmaj love ya ! xxmaj what were we talking about ? xxmaj basket : xxmaj who burned it ? xxmaj who burned it ? xxmaj who burned it ? xxmaj who burned it ? xxmaj who burned it ? xxmaj willow : xxmaj edward . xxmaj sniff . xxmaj blink . xxmaj why . xxmaj are . xxmaj you . xxmaj yelling . xxmaj at . xxmaj me ? xxmaj is it because i jacked your xxmaj vicodin ? xxmaj sniff . xxmaj snore . xxmaj what were we talking about ? xxmaj basket : i think something bad is about to happen . \n",
" \n",
" xxmaj willow : xxmaj my lips hurt . \n",
" \n",
" ( xxmaj in the schoolroom ) xxmaj rose : xxmaj what is man ? xxmaj xxunk twins , in unison : xxmaj phallic symbol , phallic symbol . \n",
" \n",
" xxmaj rose : xxmaj echo ? xxmaj echo ? xxmaj basket : xxmaj step away from the bike . \n",
" \n",
" xxmaj rose : xxmaj and i 'm the good twin . \n",
" \n",
" xxmaj basket : i think something bad is about to happen . \n",
" \n",
" ( xxmaj at the xxunk ) xxmaj basket : xxmaj hmmm . xxmaj xxunk ? xxmaj ow , ow , ow , oh bother . xxmaj silly old bear . xxmaj snore . \n",
" \n",
" ( xxmaj at the xxmaj queen xxmaj bee 's mansion ) xxmaj sister xxmaj summersisle : xxmaj you have so much potential . xxmaj what are you doing here ? xxmaj were n't you the stud xxmaj cher slapped in the face in xxmaj moonstruck ? ( xxmaj licks lips . ) xxmaj basket : i was about to ask you the same thing . xxmaj where 's the girl ? xxmaj sister xxmaj summersisle : xxmaj how you drone on . xxmaj let 's talk about the significance of my superfluous \" s. \" xxmaj basket : xxmaj look out for that semi - truck barreling toward us ! a xxrep 4 a h ! xxmaj oh . xxmaj never mind . xxmaj goddammit ! ( xxmaj pops another pill . ) xxmaj mmmm . xxmaj thorazine . \n",
" \n",
" ( xxmaj back at the tavern ) xxmaj big - boned , supercilious tavern wench : i 've tried xxmaj xxunk , xxmaj jenny xxmaj craig , xxmaj south xxmaj beech , and i still went up a bear - suit size since last year . \n",
" \n",
" xxmaj tree - named crone : xxup hahaha . xxmaj all the better to roast that nosy cop in , my dear . \n",
" \n",
" xxmaj big - boned wench : xxmaj totally . \n",
" \n",
" xxmaj basket : xxmaj that was the last straw that broke the xxmaj basket xxmaj case 's back ! xxmaj take that , wench ! ( xxmaj slugs her . ) ( xxmaj edward xxmaj basket is mysteriously attacked from behind ) xxmaj voluptuous tavern wench : xxrep 4 e ! xxmaj snap out of it ! xxmaj leave the island already and take me with you ! xxmaj do i have to tackle you or what ? xxmaj snap out of it , i say ! xxrep 4 e ! xxmaj basket : xxmaj take that , wench ! ( xxmaj courageously kicks her in the face . xxmaj her eyes roll back in her head and become cartoon xxmaj xxunk . ) xxmaj voluptuous wench : xxmaj snore \n",
" ( xxmaj at the xxmaj nicolas xxmaj cage roast ) xxmaj ellen xxmaj burstyn : xxmaj and who can forget the part where xxmaj basket 's cell phone rings in the middle of his bear suit scene and then the call gets dropped . xxmaj it 's like a wireless ad : xxmaj help me ! xxmaj can you hear me now ? xxmaj hahaha . \n",
" \n",
" xxmaj kate xxmaj xxunk : xxmaj and remember when i produced the bullets i jacked from xxmaj basket 's gun ? xxmaj he looked so surprised . xxmaj you should be more careful with your belongings , xxmaj nick . xxmaj hahaha . xxmaj and your movie choices . \n",
" \n",
" xxmaj all : xxmaj the drone must die ! xxmaj basket : ( screaming ) xxmaj oh , yeah , you bitches ? xxmaj well , roasting me is n't gon na help your goddamn honey ! xxmaj aaah . xxmaj my legs ! xxmaj honey , ( honey , get it ? ) put down that torch and step away from the xxmaj basket xxmaj case . xxmaj honey ! xxmaj smokey bear says do n't play with matches . xxmaj hahaha . xxmaj what the \n",
" ? xxmaj look out for that hurtling semi - truck ! xxmaj ahh ! xxmaj oh . xxmaj goddammit , these flashbacks from my drug experimentation phase in the seventies are getting old ! xxmaj where 's my heroin ? xxmaj ouch . xxmaj ouch . xxmaj my watch is n't xxunk . xxmaj ouch . i think something bad is about to happen . xxmaj can you hear me now ? i 'm ready for my close up . xxmaj goddammit ! ( xxmaj six months later ) xxmaj voluptuous wench in modern - day slutty attire : i told that eponymous xxmaj basket xxmaj case to take me with him . \n",
" \n",
" xxmaj innocent young drone : i like to help people . \n",
" \n",
" xxmaj xxunk wench : xxmaj then get me out of my contract for the sequel ! i think something bad is about to happen . xxrep 5 e !,xxbos xxmaj arthur xxmaj askey 's great skill as a comic was in the way he communicated with his public . xxmaj his juvenile jokes , silly songs and daft dances went down well because he was able to engage folk and draw them into his off the wall world . a lack of a live audience was a distinct disadvantage to him , and he was never completely comfortable in films . xxmaj he has his moments in xxmaj the xxmaj ghost xxmaj train , and his character , xxmaj tommy xxmaj gander , has been tailored to make the most of his talents , but xxmaj askey the performer needed to be seen to be appreciated . \n",
" \n",
" xxmaj askey 's support in the film is not strong , it includes regular co - star xxmaj richard xxmaj murdoch ; xxmaj betty xxmaj jardine and xxmaj stuart xxmaj latham as a dopey honeymoon couple ; xxmaj linden xxmaj travers going over the top as a ' mad woman ' . xxmaj also on board are xxmaj peter xxmaj murray - xxmaj hill , who off - screen married xxmaj phyllis xxmaj calvert , as the nominal leading man , giving a totally bland reading of the part , and leading lady xxmaj carol xxmaj lynne , who turns in an equally insipid performance . xxmaj it is left to character actress xxmaj kathleen xxmaj harrison to effortlessly steal the film as a parrot loving single woman who gets smashed on xxmaj dr xxmaj morland xxmaj graham 's brandy .,xxbos xxmaj beverly garland was born in the wrong time . xxmaj she was an actress ahead of her time , bringing power and grace to even such lame flicks as the xxmaj corman films she starred in . xxmaj in xxmaj gunslinger , she 's the town sheriff 's wife . xxmaj he gets offed , so she takes over his job to pursue his killers . xxmaj she 's better than the material she 's working with , by far . xxmaj the movie is gray , stilted , and mostly boring . xxmaj there 's xxunk with the tire tracks everywhere , people running behind one building to emerge suddenly in front of another ( i 've heard of false fronts , but this is ridiculous ! ) , and the truly stupid plot line of the newly widowed sheriff falling in love with the guy hired to kill her . xxmaj even if she had n't loved her husband , it had only been something like a week or two since he 'd died ! xxmaj and she ends up shooting the guy to death in the end , anyway . xxmaj no luck with men , this one . \n",
" \n",
" xxmaj the villain of the piece is another woman , the saloon owner . xxmaj she 's scheming to buy up a bunch of land just in case the railroad goes through and makes her rich . xxmaj her plan of action if it does n't is pretty lame - xxunk just steal as much from the town as she can and xxunk . xxmaj hell , it 's just her and her hired gun at the end against an entire town . xxmaj are you telling me these people are n't armed ? xxmaj look what happened in real towns of the xxmaj old xxmaj west when bank robbers came in to rob the bank , then were cut down in a hail of bullets by the armed and dangerous town folk . \n",
" \n",
" xxmaj xxunk a lot of pointless talking and riding around , interspersed with a few lame shoot outs . xxmaj the ending is as grim as usual in a xxmaj corman flick , although thank goodness it lacks the moral proselytizing at the end that was in xxmaj it xxmaj conquered the xxmaj world . xxmaj the sheriff turns over her badge to xxmaj sam xxmaj bass and rides off into the sunset , although the movie was so gray that you never saw the sun .,xxbos i too like xxmaj dafoe as an actor but i wasted a few hours of my life actually watching this film , i still ca nt believe i managed to watch it in its entirety . xxmaj was there actually a point to the film ? , and the ending , well , i m glad i never paid to see this awful pointless piece of pathetic excuse of a film ! \n",
" \n",
" i m not sure without hunting the facts out but is xxmaj dafoe married or seeing the awful actress in this film in real life , if so was it an attempt to kick start her career ? , if so i m afraid it must have failed .. \n",
" \n",
" i post this in the hope i can actually put someone off watching this film , even if 1 person takes heed of my comments and decides they would much rather watch paint drying i will feel i have made some good in the world , if only i had had the same advice ...,xxbos xxmaj small college town coed xxup od 's ? ( xxmaj why do we care ? ) xxmaj acting sheriff investigates the incident . ( xxmaj why do we care ? ) xxmaj the interviews show us the comatose subject ( xxmaj kirshner ) as different as the opinions of the subjects being interviewed . ( xxmaj why do we care ? ) xxmaj result ? a mess of flashbacks in this mess of a movie featuring a handful of one - hit wonders and b - flick divas which begs the question ... xxmaj why do we care ?\n",
"y: CategoryList\n",
"neg,neg,neg,neg,neg\n",
"Path: /root/.fastai/data/imdb;\n",
"\n",
"Valid: LabelList (25000 items)\n",
"x: TextList\n",
"xxbos i have always been a fan of xxmaj bottom , grabbing as many videos as i could find of the series here in the states . xxmaj the chemistry between xxmaj rik and xxmaj ade is always genius , and the combination of smart writing and utterly stupid humor seems to work without fail . i thus sat down to watch this movie with great eagerness ... and was utterly disappointed by the end . \n",
" \n",
" xxmaj the first 3 / 4 of the movie can best be described as uninspired and poorly directed ( sorry , xxmaj ade ! ) , but with some utterly brilliant moments . xxmaj unfortunately , these laugh - out - loud moments make you realize how less - than - brilliant the rest of the movie is . xxmaj the slapstick starts off funny but eventually becomes a bit boring , with only the perverted sex jokes to keep things humorous . \n",
" \n",
" xxmaj the end of the movie ( the ' green ' scenes , for those of you who 've seen it ) was ... perhaps the worst ending i 've seen in the past decade . xxmaj honestly . xxmaj it was one joke repeated about thirty times , followed by an abrupt ending that made no sense ( which did n't bother me ) and was n't funny ( which did ) . \n",
" \n",
" xxmaj to sum up , i was sorely disappointed by this movie . i shall cling to the few brilliant moments in it , to retain the fondest memories that i can ... but i have to warn you , if you 're about to xxunk for your xxup ntsc conversion tape from the local importer , do n't . xxmaj there are far better things to spend your money on .,xxbos xxmaj this film actually starts out pretty interesting but for my taste it degenerated far too quickly into a dull and predictable melodrama . xxmaj none of the performances are particularly interesting and the camera work is just standard xxup tv movie stuff , so there 's really no reason for anyone to see this movie unless they are as big of a xxmaj jeff xxmaj bridges fan as i am i guess . \n",
" \n",
" xxmaj bridges plays xxmaj mike xxmaj olson , a young man who announces at a family picnic that he is quitting college to go on the road . xxmaj his parents believe he is \" just acting out \" and talk about how \" he has no plan \" . xxmaj he assures them he does have a plan , and that he needs to discover his true self and his place in the world . xxmaj so much so in fact that he invites them to go on the road with him and purchases an antique bus to travel in , which he and his father repair in true xxup tv movie father - son bonding fashion . xxmaj up until about this point in the film i was somewhat interested in the plot and characters and i wanted to see how his stuck - up mother ( xxmaj vera xxmaj miles ) was going to react to life on the road . xxmaj there 's a funny scene early on where the father and son have to convince her to take the trip with them . xxmaj they show her the inside of the bus and she gradually becomes more and more interested , finally departing in a huff with some kind of talk about curtains versus blinds on the windows . xxmaj bridges marvels to his dad ( xxmaj carl xxmaj xxunk , equipped with radio announcer voice ) that she has changed her mind . xxmaj dad assures him \" electric oven ... works every time ! \" . \n",
" \n",
" xxmaj but the movie goes downhill almost as soon as they hit the road . xxmaj it turns out that xxmaj mike 's only \" plan \" is to introduce them to some \" friends \" of his who turn out to be random people who they meet at a hippie rock festival . xxmaj as soon as i saw the rock festival i was a bit disappointed ... particularly as it became obvious that the entire rest of the film would take place at the festival campground and not actually on the road . xxmaj but at least i thought there might be a decent band like , well , if they could n't afford xxmaj hendrix or the xxmaj stones maybe they would at least have xxmaj canned xxmaj heat or xxmaj little xxmaj feat or something like that . xxmaj no dice -- apparently the only music at this festival is some horrible choral group with orchestra that sounded like a poor imitation of the xxmaj fifth xxmaj dimension , coupled with an annoying announcer who 's supposed to be humorous . \n",
" \n",
" xxmaj also we are introduced to a set of hippy xxunk and their various medical melodramas . xxmaj kathy ( xxmaj renne xxmaj jarrett ) is a pretty blonde girl with existentialism and nature on her mind , who falls in love with xxmaj mike before revealing the fact that she needs kidney xxunk to live and has run off to the festival to die . xxmaj and 2 other campers are determined to have a baby in their crude tent , introducing the struggle between modern medicine and hippy ignorance ( or something like that ) . xxmaj all in all the longer this goes on the more painful the film becomes for anyone hoping for any element of surprise or real drama . \n",
" \n",
" xxmaj basically this movie is a waste of time , although it would probably amuse anyone who is really into the period of time in the late 60s , early 70s and the films from that time . i 'd be just as happy if i never see it again though .,xxbos xxmaj lame b - horror that takes itself too damn seriously considering its subject matter concerns an aging old dear who has been turned into a creature of the night by a lodger who has come to rent a room from her . xxmaj when said lodger is killed off , xxmaj mom has to go out to feed on her own and that causes some family strain and also garners some attention from the authorities . \n",
" \n",
" xxmaj my main complaint is that this film should have brought xxup the xxup funny . xxmaj it failed to do so although it did have some mild gore and schlocky creature makeup effects to keep the b - movie crowd happy . i 've seen worse but i would n't give this one a xxunk / 10 .,xxbos xxmaj this movie was a total yawnfest that took forever to get going , but never really did . xxmaj it was simply boring to watch , so much in fact i could just never really get into it . xxmaj this movie is not a horror movie by an stretch of the imagination , the cover of the videotape made it out to be one . xxmaj instead it is a thriller type movie with a few elements of horror thrown in as to make the movie more interesting . xxmaj of course , it does not help this movie at all . xxmaj mostly all i remember is that this movie was kind of like a movie from the 1970 's called \" xxmaj the xxmaj deep \" . xxmaj bunch of looking for treasure , rival groups that sort of thing . xxmaj there are supernatural twists in it too , but to tell you the truth i was so bored when watching this movie that i kind of zoned out so i can not really tell you what the supernatural elements were . i kind of remember footprints on the bottom of the sea so maybe it was some sort of walking dead , or that may be me thinking of xxmaj lucio xxmaj xxunk 's \" xxmaj zombie \" movie instead as that one was a horror movie that was set in a tropical island and as outlandish as that one was it was a lot more entertaining than this movie . xxmaj that day we learned a valuable lesson , never rent a movie based on its cover art .,xxbos xxmaj this is a piece of xxmaj hollywood product that should have never left a film can . xxmaj dialogue without a plausible thought , plot without a point , staging without skill , directing without direction , and acting without the worth of some backwater high school 's freshman class play . xxmaj the entire cast should have been arrested for over acting . \n",
" \n",
" xxmaj but otherwise , okay !\n",
"y: CategoryList\n",
"neg,neg,neg,neg,neg\n",
"Path: /root/.fastai/data/imdb;\n",
"\n",
"Test: None, model=SequentialRNN(\n",
" (0): MultiBatchEncoder(\n",
" (module): AWD_LSTM(\n",
" (encoder): Embedding(60000, 400, padding_idx=1)\n",
" (encoder_dp): EmbeddingDropout(\n",
" (emb): Embedding(60000, 400, padding_idx=1)\n",
" )\n",
" (rnns): ModuleList(\n",
" (0): WeightDropout(\n",
" (module): LSTM(400, 1152, batch_first=True)\n",
" )\n",
" (1): WeightDropout(\n",
" (module): LSTM(1152, 1152, batch_first=True)\n",
" )\n",
" (2): WeightDropout(\n",
" (module): LSTM(1152, 400, batch_first=True)\n",
" )\n",
" )\n",
" (input_dp): RNNDropout()\n",
" (hidden_dps): ModuleList(\n",
" (0): RNNDropout()\n",
" (1): RNNDropout()\n",
" (2): RNNDropout()\n",
" )\n",
" )\n",
" )\n",
" (1): PoolingLinearClassifier(\n",
" (layers): Sequential(\n",
" (0): BatchNorm1d(1200, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (1): Dropout(p=0.2, inplace=False)\n",
" (2): Linear(in_features=1200, out_features=50, bias=True)\n",
" (3): ReLU(inplace=True)\n",
" (4): BatchNorm1d(50, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (5): Dropout(p=0.1, inplace=False)\n",
" (6): Linear(in_features=50, out_features=2, bias=True)\n",
" )\n",
" )\n",
"), opt_func=functools.partial(<class 'torch.optim.adam.Adam'>, betas=(0.9, 0.99)), loss_func=FlattenedLoss of CrossEntropyLoss(), metrics=[<function accuracy at 0x7f3cc8740510>], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('/root/.fastai/data/imdb'), model_dir='models', callback_fns=[functools.partial(<class 'fastai.basic_train.Recorder'>, add_time=True, silent=False)], callbacks=[RNNTrainer\n",
"learn: RNNLearner(data=TextClasDataBunch;\n",
"\n",
"Train: LabelList (25000 items)\n",
"x: TextList\n",
"xxbos xxmaj waitress : xxmaj honey , here 's them eggs you ordered . xxmaj honey , like bee , get it ? xxmaj that 's called pointless foreshadowing . \n",
" \n",
" xxmaj edward xxmaj basket : xxmaj huh ? ( xxmaj on the road ) xxmaj basket : xxmaj here 's your doll back , little girl . xxmaj you really should n't be so careless with your belongings . \n",
" \n",
" xxmaj little girl : xxmaj yeah , whatever . \n",
" \n",
" xxmaj crash ! xxmaj boom ! xxmaj whoosh ! xxmaj crackle \n",
" xxmaj basket : i think that something bad is about to happen . \n",
" \n",
" ( xxmaj later ) xxmaj basket : xxmaj mmmm . xxmaj vicodin ! xxmaj what the \n",
" ? ( xxmaj tears open letter . ) xxmaj wow ! xxmaj my ex - girl 's handwriting has really improved . xxmaj and look , her missing daughter looks kinda like the girl with the doll i accidentally was sort of responsible for getting killed , in a way . xxmaj and she kind of has my hairline . i wonder , should i torture myself and go find her ? xxmaj let 's see what my friends at the precinct think . \n",
" \n",
" xxmaj basket 's fellow male cop : xxup hahaha . xxmaj willow 's a funny name . \n",
" \n",
" xxmaj basket : i think that something bad is about to happen . \n",
" \n",
" ( xxmaj on the island ) xxmaj basket : xxmaj what 's in the sack ? xxup ahhh . \n",
" \n",
" xxmaj tree - named crone : xxmaj it 's not her daughter , though . \n",
" \n",
" ( xxmaj in the tavern ) xxmaj basket : xxmaj can you swing that ? xxmaj big - boned , tree - named tavern wench : xxmaj huh ? xxmaj basket : ( smashes a bee ) . xxmaj everything is xxup ok . \n",
" \n",
" xxmaj sensually pretty , formerly promising actress playing a lusty tavern scullery maid : xxmaj that 's good . xxmaj honey 's not a plant , though . \n",
" \n",
" ( xxmaj on the xxunk ) xxmaj willow : xxmaj oh , yeah , and i forgot , you are the father my child , xxmaj conan , er , i mean xxmaj xxunk . ( xxmaj yawns . ) i could have stayed and had a life with you . xxmaj but i did n't . i wanted to be princess of the beehive , instead . i mean , never mind . ( xxmaj nods off , jerks awake , widens eyes to anime proportions ) . xxmaj xxunk , kiss - kiss . xxmaj love ya ! xxmaj what were we talking about ? xxmaj basket : xxmaj who burned it ? xxmaj who burned it ? xxmaj who burned it ? xxmaj who burned it ? xxmaj who burned it ? xxmaj willow : xxmaj edward . xxmaj sniff . xxmaj blink . xxmaj why . xxmaj are . xxmaj you . xxmaj yelling . xxmaj at . xxmaj me ? xxmaj is it because i jacked your xxmaj vicodin ? xxmaj sniff . xxmaj snore . xxmaj what were we talking about ? xxmaj basket : i think something bad is about to happen . \n",
" \n",
" xxmaj willow : xxmaj my lips hurt . \n",
" \n",
" ( xxmaj in the schoolroom ) xxmaj rose : xxmaj what is man ? xxmaj xxunk twins , in unison : xxmaj phallic symbol , phallic symbol . \n",
" \n",
" xxmaj rose : xxmaj echo ? xxmaj echo ? xxmaj basket : xxmaj step away from the bike . \n",
" \n",
" xxmaj rose : xxmaj and i 'm the good twin . \n",
" \n",
" xxmaj basket : i think something bad is about to happen . \n",
" \n",
" ( xxmaj at the xxunk ) xxmaj basket : xxmaj hmmm . xxmaj xxunk ? xxmaj ow , ow , ow , oh bother . xxmaj silly old bear . xxmaj snore . \n",
" \n",
" ( xxmaj at the xxmaj queen xxmaj bee 's mansion ) xxmaj sister xxmaj summersisle : xxmaj you have so much potential . xxmaj what are you doing here ? xxmaj were n't you the stud xxmaj cher slapped in the face in xxmaj moonstruck ? ( xxmaj licks lips . ) xxmaj basket : i was about to ask you the same thing . xxmaj where 's the girl ? xxmaj sister xxmaj summersisle : xxmaj how you drone on . xxmaj let 's talk about the significance of my superfluous \" s. \" xxmaj basket : xxmaj look out for that semi - truck barreling toward us ! a xxrep 4 a h ! xxmaj oh . xxmaj never mind . xxmaj goddammit ! ( xxmaj pops another pill . ) xxmaj mmmm . xxmaj thorazine . \n",
" \n",
" ( xxmaj back at the tavern ) xxmaj big - boned , supercilious tavern wench : i 've tried xxmaj xxunk , xxmaj jenny xxmaj craig , xxmaj south xxmaj beech , and i still went up a bear - suit size since last year . \n",
" \n",
" xxmaj tree - named crone : xxup hahaha . xxmaj all the better to roast that nosy cop in , my dear . \n",
" \n",
" xxmaj big - boned wench : xxmaj totally . \n",
" \n",
" xxmaj basket : xxmaj that was the last straw that broke the xxmaj basket xxmaj case 's back ! xxmaj take that , wench ! ( xxmaj slugs her . ) ( xxmaj edward xxmaj basket is mysteriously attacked from behind ) xxmaj voluptuous tavern wench : xxrep 4 e ! xxmaj snap out of it ! xxmaj leave the island already and take me with you ! xxmaj do i have to tackle you or what ? xxmaj snap out of it , i say ! xxrep 4 e ! xxmaj basket : xxmaj take that , wench ! ( xxmaj courageously kicks her in the face . xxmaj her eyes roll back in her head and become cartoon xxmaj xxunk . ) xxmaj voluptuous wench : xxmaj snore \n",
" ( xxmaj at the xxmaj nicolas xxmaj cage roast ) xxmaj ellen xxmaj burstyn : xxmaj and who can forget the part where xxmaj basket 's cell phone rings in the middle of his bear suit scene and then the call gets dropped . xxmaj it 's like a wireless ad : xxmaj help me ! xxmaj can you hear me now ? xxmaj hahaha . \n",
" \n",
" xxmaj kate xxmaj xxunk : xxmaj and remember when i produced the bullets i jacked from xxmaj basket 's gun ? xxmaj he looked so surprised . xxmaj you should be more careful with your belongings , xxmaj nick . xxmaj hahaha . xxmaj and your movie choices . \n",
" \n",
" xxmaj all : xxmaj the drone must die ! xxmaj basket : ( screaming ) xxmaj oh , yeah , you bitches ? xxmaj well , roasting me is n't gon na help your goddamn honey ! xxmaj aaah . xxmaj my legs ! xxmaj honey , ( honey , get it ? ) put down that torch and step away from the xxmaj basket xxmaj case . xxmaj honey ! xxmaj smokey bear says do n't play with matches . xxmaj hahaha . xxmaj what the \n",
" ? xxmaj look out for that hurtling semi - truck ! xxmaj ahh ! xxmaj oh . xxmaj goddammit , these flashbacks from my drug experimentation phase in the seventies are getting old ! xxmaj where 's my heroin ? xxmaj ouch . xxmaj ouch . xxmaj my watch is n't xxunk . xxmaj ouch . i think something bad is about to happen . xxmaj can you hear me now ? i 'm ready for my close up . xxmaj goddammit ! ( xxmaj six months later ) xxmaj voluptuous wench in modern - day slutty attire : i told that eponymous xxmaj basket xxmaj case to take me with him . \n",
" \n",
" xxmaj innocent young drone : i like to help people . \n",
" \n",
" xxmaj xxunk wench : xxmaj then get me out of my contract for the sequel ! i think something bad is about to happen . xxrep 5 e !,xxbos xxmaj arthur xxmaj askey 's great skill as a comic was in the way he communicated with his public . xxmaj his juvenile jokes , silly songs and daft dances went down well because he was able to engage folk and draw them into his off the wall world . a lack of a live audience was a distinct disadvantage to him , and he was never completely comfortable in films . xxmaj he has his moments in xxmaj the xxmaj ghost xxmaj train , and his character , xxmaj tommy xxmaj gander , has been tailored to make the most of his talents , but xxmaj askey the performer needed to be seen to be appreciated . \n",
" \n",
" xxmaj askey 's support in the film is not strong , it includes regular co - star xxmaj richard xxmaj murdoch ; xxmaj betty xxmaj jardine and xxmaj stuart xxmaj latham as a dopey honeymoon couple ; xxmaj linden xxmaj travers going over the top as a ' mad woman ' . xxmaj also on board are xxmaj peter xxmaj murray - xxmaj hill , who off - screen married xxmaj phyllis xxmaj calvert , as the nominal leading man , giving a totally bland reading of the part , and leading lady xxmaj carol xxmaj lynne , who turns in an equally insipid performance . xxmaj it is left to character actress xxmaj kathleen xxmaj harrison to effortlessly steal the film as a parrot loving single woman who gets smashed on xxmaj dr xxmaj morland xxmaj graham 's brandy .,xxbos xxmaj beverly garland was born in the wrong time . xxmaj she was an actress ahead of her time , bringing power and grace to even such lame flicks as the xxmaj corman films she starred in . xxmaj in xxmaj gunslinger , she 's the town sheriff 's wife . xxmaj he gets offed , so she takes over his job to pursue his killers . xxmaj she 's better than the material she 's working with , by far . xxmaj the movie is gray , stilted , and mostly boring . xxmaj there 's xxunk with the tire tracks everywhere , people running behind one building to emerge suddenly in front of another ( i 've heard of false fronts , but this is ridiculous ! ) , and the truly stupid plot line of the newly widowed sheriff falling in love with the guy hired to kill her . xxmaj even if she had n't loved her husband , it had only been something like a week or two since he 'd died ! xxmaj and she ends up shooting the guy to death in the end , anyway . xxmaj no luck with men , this one . \n",
" \n",
" xxmaj the villain of the piece is another woman , the saloon owner . xxmaj she 's scheming to buy up a bunch of land just in case the railroad goes through and makes her rich . xxmaj her plan of action if it does n't is pretty lame - xxunk just steal as much from the town as she can and xxunk . xxmaj hell , it 's just her and her hired gun at the end against an entire town . xxmaj are you telling me these people are n't armed ? xxmaj look what happened in real towns of the xxmaj old xxmaj west when bank robbers came in to rob the bank , then were cut down in a hail of bullets by the armed and dangerous town folk . \n",
" \n",
" xxmaj xxunk a lot of pointless talking and riding around , interspersed with a few lame shoot outs . xxmaj the ending is as grim as usual in a xxmaj corman flick , although thank goodness it lacks the moral proselytizing at the end that was in xxmaj it xxmaj conquered the xxmaj world . xxmaj the sheriff turns over her badge to xxmaj sam xxmaj bass and rides off into the sunset , although the movie was so gray that you never saw the sun .,xxbos i too like xxmaj dafoe as an actor but i wasted a few hours of my life actually watching this film , i still ca nt believe i managed to watch it in its entirety . xxmaj was there actually a point to the film ? , and the ending , well , i m glad i never paid to see this awful pointless piece of pathetic excuse of a film ! \n",
" \n",
" i m not sure without hunting the facts out but is xxmaj dafoe married or seeing the awful actress in this film in real life , if so was it an attempt to kick start her career ? , if so i m afraid it must have failed .. \n",
" \n",
" i post this in the hope i can actually put someone off watching this film , even if 1 person takes heed of my comments and decides they would much rather watch paint drying i will feel i have made some good in the world , if only i had had the same advice ...,xxbos xxmaj small college town coed xxup od 's ? ( xxmaj why do we care ? ) xxmaj acting sheriff investigates the incident . ( xxmaj why do we care ? ) xxmaj the interviews show us the comatose subject ( xxmaj kirshner ) as different as the opinions of the subjects being interviewed . ( xxmaj why do we care ? ) xxmaj result ? a mess of flashbacks in this mess of a movie featuring a handful of one - hit wonders and b - flick divas which begs the question ... xxmaj why do we care ?\n",
"y: CategoryList\n",
"neg,neg,neg,neg,neg\n",
"Path: /root/.fastai/data/imdb;\n",
"\n",
"Valid: LabelList (25000 items)\n",
"x: TextList\n",
"xxbos i have always been a fan of xxmaj bottom , grabbing as many videos as i could find of the series here in the states . xxmaj the chemistry between xxmaj rik and xxmaj ade is always genius , and the combination of smart writing and utterly stupid humor seems to work without fail . i thus sat down to watch this movie with great eagerness ... and was utterly disappointed by the end . \n",
" \n",
" xxmaj the first 3 / 4 of the movie can best be described as uninspired and poorly directed ( sorry , xxmaj ade ! ) , but with some utterly brilliant moments . xxmaj unfortunately , these laugh - out - loud moments make you realize how less - than - brilliant the rest of the movie is . xxmaj the slapstick starts off funny but eventually becomes a bit boring , with only the perverted sex jokes to keep things humorous . \n",
" \n",
" xxmaj the end of the movie ( the ' green ' scenes , for those of you who 've seen it ) was ... perhaps the worst ending i 've seen in the past decade . xxmaj honestly . xxmaj it was one joke repeated about thirty times , followed by an abrupt ending that made no sense ( which did n't bother me ) and was n't funny ( which did ) . \n",
" \n",
" xxmaj to sum up , i was sorely disappointed by this movie . i shall cling to the few brilliant moments in it , to retain the fondest memories that i can ... but i have to warn you , if you 're about to xxunk for your xxup ntsc conversion tape from the local importer , do n't . xxmaj there are far better things to spend your money on .,xxbos xxmaj this film actually starts out pretty interesting but for my taste it degenerated far too quickly into a dull and predictable melodrama . xxmaj none of the performances are particularly interesting and the camera work is just standard xxup tv movie stuff , so there 's really no reason for anyone to see this movie unless they are as big of a xxmaj jeff xxmaj bridges fan as i am i guess . \n",
" \n",
" xxmaj bridges plays xxmaj mike xxmaj olson , a young man who announces at a family picnic that he is quitting college to go on the road . xxmaj his parents believe he is \" just acting out \" and talk about how \" he has no plan \" . xxmaj he assures them he does have a plan , and that he needs to discover his true self and his place in the world . xxmaj so much so in fact that he invites them to go on the road with him and purchases an antique bus to travel in , which he and his father repair in true xxup tv movie father - son bonding fashion . xxmaj up until about this point in the film i was somewhat interested in the plot and characters and i wanted to see how his stuck - up mother ( xxmaj vera xxmaj miles ) was going to react to life on the road . xxmaj there 's a funny scene early on where the father and son have to convince her to take the trip with them . xxmaj they show her the inside of the bus and she gradually becomes more and more interested , finally departing in a huff with some kind of talk about curtains versus blinds on the windows . xxmaj bridges marvels to his dad ( xxmaj carl xxmaj xxunk , equipped with radio announcer voice ) that she has changed her mind . xxmaj dad assures him \" electric oven ... works every time ! \" . \n",
" \n",
" xxmaj but the movie goes downhill almost as soon as they hit the road . xxmaj it turns out that xxmaj mike 's only \" plan \" is to introduce them to some \" friends \" of his who turn out to be random people who they meet at a hippie rock festival . xxmaj as soon as i saw the rock festival i was a bit disappointed ... particularly as it became obvious that the entire rest of the film would take place at the festival campground and not actually on the road . xxmaj but at least i thought there might be a decent band like , well , if they could n't afford xxmaj hendrix or the xxmaj stones maybe they would at least have xxmaj canned xxmaj heat or xxmaj little xxmaj feat or something like that . xxmaj no dice -- apparently the only music at this festival is some horrible choral group with orchestra that sounded like a poor imitation of the xxmaj fifth xxmaj dimension , coupled with an annoying announcer who 's supposed to be humorous . \n",
" \n",
" xxmaj also we are introduced to a set of hippy xxunk and their various medical melodramas . xxmaj kathy ( xxmaj renne xxmaj jarrett ) is a pretty blonde girl with existentialism and nature on her mind , who falls in love with xxmaj mike before revealing the fact that she needs kidney xxunk to live and has run off to the festival to die . xxmaj and 2 other campers are determined to have a baby in their crude tent , introducing the struggle between modern medicine and hippy ignorance ( or something like that ) . xxmaj all in all the longer this goes on the more painful the film becomes for anyone hoping for any element of surprise or real drama . \n",
" \n",
" xxmaj basically this movie is a waste of time , although it would probably amuse anyone who is really into the period of time in the late 60s , early 70s and the films from that time . i 'd be just as happy if i never see it again though .,xxbos xxmaj lame b - horror that takes itself too damn seriously considering its subject matter concerns an aging old dear who has been turned into a creature of the night by a lodger who has come to rent a room from her . xxmaj when said lodger is killed off , xxmaj mom has to go out to feed on her own and that causes some family strain and also garners some attention from the authorities . \n",
" \n",
" xxmaj my main complaint is that this film should have brought xxup the xxup funny . xxmaj it failed to do so although it did have some mild gore and schlocky creature makeup effects to keep the b - movie crowd happy . i 've seen worse but i would n't give this one a xxunk / 10 .,xxbos xxmaj this movie was a total yawnfest that took forever to get going , but never really did . xxmaj it was simply boring to watch , so much in fact i could just never really get into it . xxmaj this movie is not a horror movie by an stretch of the imagination , the cover of the videotape made it out to be one . xxmaj instead it is a thriller type movie with a few elements of horror thrown in as to make the movie more interesting . xxmaj of course , it does not help this movie at all . xxmaj mostly all i remember is that this movie was kind of like a movie from the 1970 's called \" xxmaj the xxmaj deep \" . xxmaj bunch of looking for treasure , rival groups that sort of thing . xxmaj there are supernatural twists in it too , but to tell you the truth i was so bored when watching this movie that i kind of zoned out so i can not really tell you what the supernatural elements were . i kind of remember footprints on the bottom of the sea so maybe it was some sort of walking dead , or that may be me thinking of xxmaj lucio xxmaj xxunk 's \" xxmaj zombie \" movie instead as that one was a horror movie that was set in a tropical island and as outlandish as that one was it was a lot more entertaining than this movie . xxmaj that day we learned a valuable lesson , never rent a movie based on its cover art .,xxbos xxmaj this is a piece of xxmaj hollywood product that should have never left a film can . xxmaj dialogue without a plausible thought , plot without a point , staging without skill , directing without direction , and acting without the worth of some backwater high school 's freshman class play . xxmaj the entire cast should have been arrested for over acting . \n",
" \n",
" xxmaj but otherwise , okay !\n",
"y: CategoryList\n",
"neg,neg,neg,neg,neg\n",
"Path: /root/.fastai/data/imdb;\n",
"\n",
"Test: None, model=SequentialRNN(\n",
" (0): MultiBatchEncoder(\n",
" (module): AWD_LSTM(\n",
" (encoder): Embedding(60000, 400, padding_idx=1)\n",
" (encoder_dp): EmbeddingDropout(\n",
" (emb): Embedding(60000, 400, padding_idx=1)\n",
" )\n",
" (rnns): ModuleList(\n",
" (0): WeightDropout(\n",
" (module): LSTM(400, 1152, batch_first=True)\n",
" )\n",
" (1): WeightDropout(\n",
" (module): LSTM(1152, 1152, batch_first=True)\n",
" )\n",
" (2): WeightDropout(\n",
" (module): LSTM(1152, 400, batch_first=True)\n",
" )\n",
" )\n",
" (input_dp): RNNDropout()\n",
" (hidden_dps): ModuleList(\n",
" (0): RNNDropout()\n",
" (1): RNNDropout()\n",
" (2): RNNDropout()\n",
" )\n",
" )\n",
" )\n",
" (1): PoolingLinearClassifier(\n",
" (layers): Sequential(\n",
" (0): BatchNorm1d(1200, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (1): Dropout(p=0.2, inplace=False)\n",
" (2): Linear(in_features=1200, out_features=50, bias=True)\n",
" (3): ReLU(inplace=True)\n",
" (4): BatchNorm1d(50, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (5): Dropout(p=0.1, inplace=False)\n",
" (6): Linear(in_features=50, out_features=2, bias=True)\n",
" )\n",
" )\n",
"), opt_func=functools.partial(<class 'torch.optim.adam.Adam'>, betas=(0.9, 0.99)), loss_func=FlattenedLoss of CrossEntropyLoss(), metrics=[<function accuracy at 0x7f3cc8740510>], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('/root/.fastai/data/imdb'), model_dir='models', callback_fns=[functools.partial(<class 'fastai.basic_train.Recorder'>, add_time=True, silent=False)], callbacks=[...], layer_groups=[Sequential(\n",
" (0): Embedding(60000, 400, padding_idx=1)\n",
" (1): EmbeddingDropout(\n",
" (emb): Embedding(60000, 400, padding_idx=1)\n",
" )\n",
"), Sequential(\n",
" (0): WeightDropout(\n",
" (module): LSTM(400, 1152, batch_first=True)\n",
" )\n",
" (1): RNNDropout()\n",
"), Sequential(\n",
" (0): WeightDropout(\n",
" (module): LSTM(1152, 1152, batch_first=True)\n",
" )\n",
" (1): RNNDropout()\n",
"), Sequential(\n",
" (0): WeightDropout(\n",
" (module): LSTM(1152, 400, batch_first=True)\n",
" )\n",
" (1): RNNDropout()\n",
"), Sequential(\n",
" (0): PoolingLinearClassifier(\n",
" (layers): Sequential(\n",
" (0): BatchNorm1d(1200, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (1): Dropout(p=0.2, inplace=False)\n",
" (2): Linear(in_features=1200, out_features=50, bias=True)\n",
" (3): ReLU(inplace=True)\n",
" (4): BatchNorm1d(50, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (5): Dropout(p=0.1, inplace=False)\n",
" (6): Linear(in_features=50, out_features=2, bias=True)\n",
" )\n",
" )\n",
")], add_time=True, silent=False)\n",
"alpha: 2.0\n",
"beta: 1.0], layer_groups=[Sequential(\n",
" (0): Embedding(60000, 400, padding_idx=1)\n",
" (1): EmbeddingDropout(\n",
" (emb): Embedding(60000, 400, padding_idx=1)\n",
" )\n",
"), Sequential(\n",
" (0): WeightDropout(\n",
" (module): LSTM(400, 1152, batch_first=True)\n",
" )\n",
" (1): RNNDropout()\n",
"), Sequential(\n",
" (0): WeightDropout(\n",
" (module): LSTM(1152, 1152, batch_first=True)\n",
" )\n",
" (1): RNNDropout()\n",
"), Sequential(\n",
" (0): WeightDropout(\n",
" (module): LSTM(1152, 400, batch_first=True)\n",
" )\n",
" (1): RNNDropout()\n",
"), Sequential(\n",
" (0): PoolingLinearClassifier(\n",
" (layers): Sequential(\n",
" (0): BatchNorm1d(1200, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (1): Dropout(p=0.2, inplace=False)\n",
" (2): Linear(in_features=1200, out_features=50, bias=True)\n",
" (3): ReLU(inplace=True)\n",
" (4): BatchNorm1d(50, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (5): Dropout(p=0.1, inplace=False)\n",
" (6): Linear(in_features=50, out_features=2, bias=True)\n",
" )\n",
" )\n",
")], add_time=True, silent=False)"
]
},
"metadata": {
"tags": []
},
"execution_count": 33
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "IE3vMJTNHh05",
"colab_type": "code",
"outputId": "70dd29d9-3564-4c82-90e8-15382eeb699d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.lr_find()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1G3BS1zPHh1B",
"colab_type": "code",
"outputId": "3ff21638-eee4-42b0-cf6f-0ae4b5ac080a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"source": [
"learn.recorder.plot(skip_end=-5)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "qtH1AD1BPVWA",
"colab_type": "code",
"outputId": "ce8c8c18-f6e7-48d2-fc4c-e92a37852d4a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"source": [
"learn.recorder.plot(skip_end=3)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nViCMMcYE9P8BqGyhLMvDq/UAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "AlvT9MJhQ3HC",
"colab_type": "code",
"outputId": "75fc96db-8207-44ed-a7a1-7f628b16baa6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 114
}
},
"source": [
"%%time\n",
"learn.fit_one_cycle(1, 5e-2, moms=(0.8,0.7))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.291411</td>\n",
" <td>0.236015</td>\n",
" <td>0.908400</td>\n",
" <td>07:07</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"CPU times: user 4min 23s, sys: 2min 40s, total: 7min 3s\n",
"Wall time: 7min 7s\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "BhRViK5kQynY",
"colab_type": "code",
"outputId": "8e00aade-1912-42c4-c2f7-2eb96a315839",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 114
}
},
"source": [
"%%time\n",
"learn.fit_one_cycle(1, 2e-2, moms=(0.8,0.7))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.275694</td>\n",
" <td>0.225859</td>\n",
" <td>0.911440</td>\n",
" <td>07:47</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"CPU times: user 4min 48s, sys: 2min 55s, total: 7min 43s\n",
"Wall time: 7min 47s\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "40txo4ajHh1D",
"colab_type": "code",
"outputId": "3281a9e1-0a9b-44a4-dfb5-d1d6c1914aa3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"source": [
"learn.fit_one_cycle(1, 2e-2, moms=(0.8,0.7))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.256365</td>\n",
" <td>0.180924</td>\n",
" <td>0.934080</td>\n",
" <td>02:46</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "8ZPA2s0QHh1I",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.save('first')"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ye2jKAyPHh1K",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.load('first');"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "3v_9KsP9Y1e8",
"colab_type": "code",
"colab": {}
},
"source": [
"#unfreezes the last 2 layers\n",
"learn.freeze_to(-2)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "unvMOy-iY3lp",
"colab_type": "code",
"outputId": "12081965-86d8-4eab-c4d1-ec7c045cfab3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.lr_find()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "SfypQmh4Zql8",
"colab_type": "code",
"outputId": "1b11dd1e-b1ea-4f4c-e386-fde3ef784b8f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"source": [
"learn.recorder.plot()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nfQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "LDkPCzRGHh1M",
"colab_type": "code",
"outputId": "b995ca14-4d87-4c6b-e2e4-e310e44d65da",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 114
}
},
"source": [
"%%time\n",
"learn.freeze_to(-2)\n",
"learn.fit_one_cycle(1, slice(1e-2/(2.6**4),1e-2), moms=(0.8,0.7))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.254477</td>\n",
" <td>0.188708</td>\n",
" <td>0.928560</td>\n",
" <td>08:13</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"CPU times: user 5min 2s, sys: 3min 5s, total: 8min 7s\n",
"Wall time: 8min 13s\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0J8u_-dYHh1P",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.save('second')"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "BvEkTwaWHh1R",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.load('second');"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "mufged2usWBC",
"colab_type": "text"
},
"source": [
"**Saving the models as we unfreeze one layer at a time**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "oK8F6lKxetcg",
"colab_type": "code",
"outputId": "ad0dd84b-20ea-4097-9dae-c6f30322cdf7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"shutil.copy(str(path/'models'/'first.pth'), str(gdrive_imdb/'models'/'first.pth'))\n",
"shutil.copy(str(path/'models'/'second.pth'), str(gdrive_imdb/'models'/'second.pth'))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/second.pth'"
]
},
"metadata": {
"tags": []
},
"execution_count": 66
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Ga2QX7SAHh1U",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.freeze_to(-3)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Lk54BtRVszTz",
"colab_type": "code",
"outputId": "62815e03-c7cd-4e48-f99a-429cde16ad8e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.lr_find()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "UV3vCdb3tkcB",
"colab_type": "code",
"outputId": "2717e6d0-ec62-439f-a4f7-28a424a24e22",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"source": [
"learn.recorder.plot()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "-0x61lw2syLc",
"colab_type": "code",
"outputId": "ed8ffe74-0368-42ec-bd8d-7db6a469f4b7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"source": [
"learn.fit_one_cycle(1, slice(5e-3/(2.6**4),5e-3), moms=(0.8,0.7))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.342349</td>\n",
" <td>0.301057</td>\n",
" <td>0.872920</td>\n",
" <td>20:06</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "E3T7Cn5gHh1b",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.save('third')"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "sybCFklrzMHw",
"colab_type": "text"
},
"source": [
"**Saving the model to gdrive**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "mPN7LEOczTBz",
"colab_type": "code",
"outputId": "ae719e8a-f9f5-4734-85fe-ca9b1a2ab614",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"shutil.copy(str(path/'models'/'third.pth'), str(gdrive_imdb/'models'/'third.pth'))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/third.pth'"
]
},
"metadata": {
"tags": []
},
"execution_count": 27
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "mOWHtp4nzgHo",
"colab_type": "code",
"outputId": "b36ee6bb-a0f3-462f-e181-d5dc30a7e10a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 136
}
},
"source": [
"(gdrive_imdb/'models').ls()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[PosixPath('/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/first.pth'),\n",
" PosixPath('/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/fine_tuned_enc.pth'),\n",
" PosixPath('/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/fine_tuned.pth'),\n",
" PosixPath('/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/tmp.pth'),\n",
" PosixPath('/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/fit_head.pth'),\n",
" PosixPath('/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/second.pth'),\n",
" PosixPath('/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/third.pth')]"
]
},
"metadata": {
"tags": []
},
"execution_count": 28
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "SWQqlBydzLGm",
"colab": {}
},
"source": [
"learn.load('third');"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "_-9HY4gZhr2m",
"colab_type": "code",
"colab": {}
},
"source": [
"learn.unfreeze()"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "tARt4smBhtRO",
"colab_type": "code",
"outputId": "e58f4f64-2ca1-49e6-ba37-9e3b6c9ea7ed",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.lr_find()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1_aonMjZiav-",
"colab_type": "code",
"outputId": "24005a30-065f-4342-f600-02d9e7cedbdd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"source": [
"learn.recorder.plot()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "VhU1gTPNHh1g",
"colab_type": "code",
"outputId": "08c7ea9d-bb62-4fa3-df8e-205ccd2ed184",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 111
}
},
"source": [
"learn.fit_one_cycle(2, slice(1e-3/(2.6**4),1e-3), moms=(0.8,0.7))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.273966</td>\n",
" <td>0.279059</td>\n",
" <td>0.884080</td>\n",
" <td>07:49</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.240324</td>\n",
" <td>0.260640</td>\n",
" <td>0.893440</td>\n",
" <td>07:39</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "9bd8l-Yann7h",
"colab_type": "code",
"outputId": "dca9bfff-07d6-47fe-d060-d68d2f143c9b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.save('final')\n",
"shutil.copy(str(path/'models'/'final.pth'), str(gdrive_imdb/'models'/'final.pth'))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'/content/gdrive/My Drive/Colab Notebooks/data/imdb/models/final.pth'"
]
},
"metadata": {
"tags": []
},
"execution_count": 42
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "6EhImi5UHh1i",
"colab_type": "code",
"outputId": "e182c117-2583-4cb8-a1f9-f75350abd4a7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.predict(\"I really loved that movie, it was awesome!\")"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(Category pos, tensor(1), tensor([0.0026, 0.9974]))"
]
},
"metadata": {
"tags": []
},
"execution_count": 44
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ci3P4XRhHh1k",
"colab_type": "code",
"outputId": "9f739070-12fa-46eb-d300-e284dcc23461",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.predict(\"I wish the movie narration could be better\")"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(Category pos, tensor(1), tensor([0.1548, 0.8452]))"
]
},
"metadata": {
"tags": []
},
"execution_count": 45
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "27Vq1pHvJq_4",
"colab_type": "code",
"outputId": "731e48a1-9da8-4d66-b0a2-4cf57fc3905c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.predict(\"that's a worst movie I have ever seen\")"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(Category neg, tensor(0), tensor([1.0000e+00, 2.1471e-06]))"
]
},
"metadata": {
"tags": []
},
"execution_count": 46
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "eGENhxUoOmfa",
"colab_type": "code",
"outputId": "58b306e0-6932-436d-f77a-ef56f87f0860",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.predict(\"What a crappy movie\")"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(Category neg, tensor(0), tensor([0.9226, 0.0774]))"
]
},
"metadata": {
"tags": []
},
"execution_count": 47
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ere4nwutANLP",
"colab_type": "code",
"outputId": "9063ba4e-5e49-4460-acc4-b269f43a90b8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"learn.predict(\"They should have never filmed this movie\")"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(Category neg, tensor(0), tensor([0.9984, 0.0016]))"
]
},
"metadata": {
"tags": []
},
"execution_count": 48
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "iGeiy_HcAUQe",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Lz3vfWiMQUSY",
"colab_type": "code",
"outputId": "042d5d05-3638-4e38-f1cc-3e58ad08e6d9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
""
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0.05"
]
},
"metadata": {
"tags": []
},
"execution_count": 44
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Uiejywg8QVC8",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "0UlXaAV1ZmtZ",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment