Skip to content

Instantly share code, notes, and snippets.

@joshfp
Last active October 10, 2020 16:02
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save joshfp/b62b76eae95e6863cb511997b5a63118 to your computer and use it in GitHub Desktop.
Save joshfp/b62b76eae95e6863cb511997b5a63118 to your computer and use it in GitHub Desktop.
Fast.ai p1v1: class 4
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ULMFiT: Train spanish LM"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from fastai import *\n",
"from fastai.text import *"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"PATH = Path('~/datasets/wikimedia').expanduser()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Raw data"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"wiki_file = 'wiki.es.txt'"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"row_list = []\n",
"with open(PATH/wiki_file, 'r') as f:\n",
" for i, line in enumerate(f):\n",
" if len(line.split()) > 150: # dismiss lines with less than 150 words\n",
" row_list.append(line)\n",
"df = pd.DataFrame(row_list, columns=['text'])"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"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>text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>el usuario ha decidido pedir el bloqueo indef...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>en regresó a las tablas con openheart el trián...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>tradicionalmente , hampstead , como otros muni...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>aniplex comenzó la distribución de mercancía o...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>por fin , en , el perú y ecuador , mediante el...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" text\n",
"0 el usuario ha decidido pedir el bloqueo indef...\n",
"1 en regresó a las tablas con openheart el trián...\n",
"2 tradicionalmente , hampstead , como otros muni...\n",
"3 aniplex comenzó la distribución de mercancía o...\n",
"4 por fin , en , el perú y ecuador , mediante el..."
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"131465995"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# number of tokens\n",
"sum(df.text.str.split().apply(lambda x: len(x)))"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"val_sz = int(0.1 * len(df))\n",
"shuffled = np.random.permutation(len(df))\n",
"trn_df = df.iloc[shuffled][val_sz:]\n",
"val_df = df.iloc[shuffled][:val_sz]"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"trn_df.to_csv(PATH/'train.csv', index=None)\n",
"trn_df.to_csv(PATH/'valid.csv', index=None)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load data"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
"trn_df = pd.read_csv(PATH/'train.csv')\n",
"trn_df = pd.read_csv(PATH/'valid.csv')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"data_lm = TextLMDataBunch.from_df(PATH, trn_df, val_df, text_cols='text', \n",
" tokenizer=Tokenizer(lang='es'), bs=48)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"pickle.dump(data_lm.train_ds.vocab.itos, open('itos.pkl', 'wb'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Model"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"learn = language_model_learner(data_lm, drop_mult=0.3)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
]
}
],
"source": [
"learn.lr_find()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"learn.recorder.plot(skip_end=12)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total time: 1:46:30\n",
"epoch train_loss valid_loss accuracy\n",
"1 4.168079 4.087315 0.286290 (1:46:30)\n",
"\n"
]
}
],
"source": [
"learn.fit_one_cycle(1, 2e-3, moms=(0.8, 0.7))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"learn.save('weights-1')"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total time: 7:06:30\n",
"epoch train_loss valid_loss accuracy\n",
"1 4.175116 4.097802 0.281919 (1:46:26)\n",
"2 4.071382 4.027313 0.287236 (1:46:50)\n",
"3 3.975520 3.912925 0.299030 (1:46:36)\n",
"4 3.921592 3.863933 0.305236 (1:46:37)\n",
"\n"
]
}
],
"source": [
"learn.fit_one_cycle(4, 2e-3, moms=(0.8, 0.7))"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"learn.save('weights-5')"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
]
}
],
"source": [
"learn.lr_find()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"learn.recorder.plot(0,30)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total time: 1:46:36\n",
"epoch train_loss valid_loss accuracy\n",
"1 3.898500 3.861971 0.305301 (1:46:36)\n",
"\n"
]
}
],
"source": [
"learn.fit_one_cycle(1, 1e-6, moms=(0.8, 0.7))"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"learn.save('weights-6')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:fastai]",
"language": "python",
"name": "conda-env-fastai-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@joshfp
Copy link
Author

joshfp commented Jun 29, 2019

make gist public

@kontrabas380
Copy link

kontrabas380 commented Jan 29, 2020

Hello! You've done nice job and I've got a question. When you finish training this model, how can you predict one example? It's not working with .predict(example).
I've done this with two AWD_LSTM networks, but in the end I've met an issue with this error while making prediction:
AttributeError: 'ConcatDataset' object has no attribute 'set_item'

Best regards

@ascientist
Copy link

Hello! You've done nice job and I've got a question. When you finish training this model, how can you predict one example? It's not working with .predict(example).
I've done this with two AWD_LSTM networks, but in the end I've met an issue with this error while making prediction:
AttributeError: 'ConcatDataset' object has no attribute 'set_item'

Best regards

Same problem here

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