From 93ee286fc555bfa1be53df20d593328105be4f48 Mon Sep 17 00:00:00 2001 From: Benjamin van der Burgh Date: Wed, 20 Feb 2019 11:57:20 +0100 Subject: [PATCH] Added experiments and results for Dutch on 110kDBRD dataset --- experiments/dutch/README.md | 26 + experiments/dutch/fastText/README.md | 52 + experiments/dutch/fastText/predict.sh | 7 + experiments/dutch/fastText/prepare.py | 36 + experiments/dutch/fastText/requirements.txt | 1 + experiments/dutch/fastText/train.sh | 17 + experiments/dutch/flair/README.md | 7 + .../dutch/flair/flair_experiment.ipynb | 2315 +++++++++++++++++ experiments/dutch/flair/requirements.txt | 1 + experiments/dutch/svm/README.md | 7 + experiments/dutch/svm/requirements.txt | 1 + experiments/dutch/svm/svm_experiment.ipynb | 163 ++ .../dutch/ulmfit_no_pretrain/README.md | 9 + .../dutch/ulmfit_no_pretrain/requirements.txt | 1 + .../ulmfit_no_pretrain.ipynb | 1062 ++++++++ .../dutch/ulmfit_pretrained_wiki/README.md | 13 + .../ulmfit_pretrained_wiki/requirements.txt | 1 + .../ulmfit_pretrain_exeperiment.ipynb | 1404 ++++++++++ 18 files changed, 5123 insertions(+) create mode 100644 experiments/dutch/README.md create mode 100644 experiments/dutch/fastText/README.md create mode 100755 experiments/dutch/fastText/predict.sh create mode 100755 experiments/dutch/fastText/prepare.py create mode 100644 experiments/dutch/fastText/requirements.txt create mode 100755 experiments/dutch/fastText/train.sh create mode 100644 experiments/dutch/flair/README.md create mode 100644 experiments/dutch/flair/flair_experiment.ipynb create mode 100644 experiments/dutch/flair/requirements.txt create mode 100644 experiments/dutch/svm/README.md create mode 100644 experiments/dutch/svm/requirements.txt create mode 100644 experiments/dutch/svm/svm_experiment.ipynb create mode 100644 experiments/dutch/ulmfit_no_pretrain/README.md create mode 100644 experiments/dutch/ulmfit_no_pretrain/requirements.txt create mode 100644 experiments/dutch/ulmfit_no_pretrain/ulmfit_no_pretrain.ipynb create mode 100644 experiments/dutch/ulmfit_pretrained_wiki/README.md create mode 100644 experiments/dutch/ulmfit_pretrained_wiki/requirements.txt create mode 100644 experiments/dutch/ulmfit_pretrained_wiki/ulmfit_pretrain_exeperiment.ipynb diff --git a/experiments/dutch/README.md b/experiments/dutch/README.md new file mode 100644 index 0000000..985028f --- /dev/null +++ b/experiments/dutch/README.md @@ -0,0 +1,26 @@ +# ULMFiT experiments for Dutch + +```` +Author: Benjamin van der Burgh +Email: b.van.der.burgh@liacs.leidenuniv.nl +Affiliation: LIACS, Universiteit Leiden, Leiden, The Netherlands +```` + + +## Description + +This folder contains experiment that were done with ULMFiT and compared against various baselines. The dataset that was used is [110kDBRD](https://github.com/benjaminvdb/110kDBRD) + +## LM weights + +LM trained on Dutch Wikipedia: http://bit.ly/2trOhzq + +## Results + +```` +ULMFiT pre-trained: 93.84% +ULMFiT no pre-train: 92.55% +SVM: 89.16% +Flair with fastText: 88.48% +fastText: 80.90% +```` \ No newline at end of file diff --git a/experiments/dutch/fastText/README.md b/experiments/dutch/fastText/README.md new file mode 100644 index 0000000..dc7c0b2 --- /dev/null +++ b/experiments/dutch/fastText/README.md @@ -0,0 +1,52 @@ +# fastText classifier baseline + +## Description + +This folder contains scripts that were used to obtain a baseline for the sentiment polarity classification task. + +## fastText + +### Install + +We'll be using the command-line tool, which supports using pre-trained word embeddings. Instructions for downloading and building fastText can be found here: https://github.com/facebookresearch/fastText + +### Word embeddings + +Pre-trained word embeddings for Dutch can be downloaded from: https://dl.fbaipublicfiles.com/fasttext/vectors-wiki/wiki.nl.zip + +Extract them to the current directory: `unzip wiki.nl.zip` + +## Dataset + +### Download + +The experiments were run on 110kDBRD dataset, which can be downloaded from here: https://github.com/benjaminvdb/110kDBRD + +### Convert + +The 110kDBRD dataset is in a different format and needs to be converted first. Run `prepare.py` to convert the *extracted* dataset and save it to the current directory. + +```` +python ./prepare.py /path/to/110kDBRD +```` + +### Modelling + +## Train + +```` +./train.sh train.txt ./wiki.nl.vec +Read 26M words +Number of words: 665350 +Number of labels: 2 +Progress: 100.0% words/sec/thread: 337040 lr: 0.000000 loss: 0.074446 ETA: 0h 0m +```` + +## Test + +```` +./predict.sh test.txt +N 10972 +P@1 0.809 +R@1 0.809 +```` \ No newline at end of file diff --git a/experiments/dutch/fastText/predict.sh b/experiments/dutch/fastText/predict.sh new file mode 100755 index 0000000..7181400 --- /dev/null +++ b/experiments/dutch/fastText/predict.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env sh + +TEST_FILE=$1 + +./fasttext test \ + model.bin \ + $TEST_FILE 1 diff --git a/experiments/dutch/fastText/prepare.py b/experiments/dutch/fastText/prepare.py new file mode 100755 index 0000000..ba04975 --- /dev/null +++ b/experiments/dutch/fastText/prepare.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python2 + +import os +import sys +import codecs +import re +import tarfile + +from sklearn.datasets import load_files + + +def convert(input_dir, output_file): + """ + Convert 110kDBRD dataset into fastText compatible format. + """ + regex = re.compile(r'\s+') + dataset = load_files(input_dir, encoding='utf-8') + with codecs.open(output_file, 'w', encoding='utf-8') as f: + buff = u'\n'.join([u'__label__{} {}'.format(target, regex.sub(' ', text).strip()) for target, text in zip(dataset.target, dataset.data)]) + f.write(buff) + + +def main(): + """ + Expects the root of 110kDBRD as input argument. Converts and saves to ./train.txt and ./test.txt + """ + base_dir = sys.argv[1] + train_dir = os.path.join(base_dir, 'train') + test_dir = os.path.join(base_dir, 'test') + + convert(train_dir, 'train.txt') + convert(test_dir, 'test.txt') + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/experiments/dutch/fastText/requirements.txt b/experiments/dutch/fastText/requirements.txt new file mode 100644 index 0000000..1afcc19 --- /dev/null +++ b/experiments/dutch/fastText/requirements.txt @@ -0,0 +1 @@ +scikit-learn==0.20.1 \ No newline at end of file diff --git a/experiments/dutch/fastText/train.sh b/experiments/dutch/fastText/train.sh new file mode 100755 index 0000000..12876a4 --- /dev/null +++ b/experiments/dutch/fastText/train.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env sh + +TRAIN_FILE=$1 +PRETRAINED=$2 + +./fasttext supervised \ + -input $TRAIN_FILE \ + -output model \ + -epoch 25 \ + -wordNgrams 4 \ + -dim 300 \ + -loss hs \ + -thread 7 \ + -minCount 1 \ + -lr 1.0 \ + -verbose 2 \ + -pretrainedVectors $PRETRAINED diff --git a/experiments/dutch/flair/README.md b/experiments/dutch/flair/README.md new file mode 100644 index 0000000..a1ece1e --- /dev/null +++ b/experiments/dutch/flair/README.md @@ -0,0 +1,7 @@ +# SVM classifier baseline + +## Description + +[Flair](https://github.com/zalandoresearch/flair) with [fastText](https://github.com/facebookresearch/fastText) Dutch word embeddings was used to obtain a baseline for the sentiment polarity classification task. + +The folder simply includes a notebook that shows the experiments and its results. \ No newline at end of file diff --git a/experiments/dutch/flair/flair_experiment.ipynb b/experiments/dutch/flair/flair_experiment.ipynb new file mode 100644 index 0000000..1b975c9 --- /dev/null +++ b/experiments/dutch/flair/flair_experiment.ipynb @@ -0,0 +1,2315 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from flair.data import TaggedCorpus\n", + "from flair.data_fetcher import NLPTaskDataFetcher, NLPTask\n", + "from flair.embeddings import WordEmbeddings, FlairEmbeddings, DocumentLSTMEmbeddings\n", + "from flair.models import TextClassifier\n", + "from flair.trainers import ModelTrainer" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 15:56:14,003 Reading data from /local/burghbvander/flair_experiments\n", + "2019-02-18 15:56:14,005 Train: /local/burghbvander/flair_experiments/train_smaller.txt\n", + "2019-02-18 15:56:14,006 Dev: /local/burghbvander/flair_experiments/dev.txt\n", + "2019-02-18 15:56:14,006 Test: /local/burghbvander/flair_experiments/test.txt\n" + ] + } + ], + "source": [ + "from flair.data_fetcher import NLPTaskDataFetcher\n", + "from pathlib import Path\n", + "\n", + "# use your own data path\n", + "data_folder = Path('/local/burghbvander/flair_experiments/')\n", + "\n", + "# load corpus containing training, test and dev data\n", + "corpus: TaggedCorpus = NLPTaskDataFetcher.load_classification_corpus(data_folder,\n", + " test_file='test.txt',\n", + " dev_file='dev.txt',\n", + " train_file='train_smaller.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# 2. create the label dictionary\n", + "label_dict = corpus.make_label_dictionary()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# 3. make a list of word embeddings\n", + "word_embeddings = [WordEmbeddings('nl')\n", + "# FlairEmbeddings('dutch-forward'),\n", + "# FlairEmbeddings('dutch-backward')\n", + "\n", + " # comment in flair embeddings for state-of-the-art results \n", + "# FlairEmbeddings('news-forward'),\n", + "# FlairEmbeddings('news-backward'),\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# 4. init document embedding by passing list of word embeddings\n", + "document_embeddings: DocumentLSTMEmbeddings = DocumentLSTMEmbeddings(word_embeddings,\n", + " hidden_size=512,\n", + " reproject_words=True,\n", + " reproject_words_dimension=256,\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# 5. create the text classifier\n", + "classifier = TextClassifier(document_embeddings, label_dictionary=label_dict, multi_label=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# 6. initialize the text classifier trainer\n", + "trainer = ModelTrainer(classifier, corpus)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 15:58:08,278 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 15:58:08,279 Evaluation method: MICRO_F1_SCORE\n", + "2019-02-18 15:58:08,281 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 15:58:09,203 epoch 1 - iter 0/526 - loss 0.02127613\n", + "2019-02-18 15:58:52,760 epoch 1 - iter 52/526 - loss 0.01889031\n", + "2019-02-18 15:59:46,718 epoch 1 - iter 104/526 - loss 0.01824219\n", + "2019-02-18 16:00:30,909 epoch 1 - iter 156/526 - loss 0.01770823\n", + "2019-02-18 16:01:19,406 epoch 1 - iter 208/526 - loss 0.01749309\n", + "2019-02-18 16:02:04,412 epoch 1 - iter 260/526 - loss 0.01735454\n", + "2019-02-18 16:02:56,693 epoch 1 - iter 312/526 - loss 0.01706644\n", + "2019-02-18 16:03:36,529 epoch 1 - iter 364/526 - loss 0.01698531\n", + "2019-02-18 16:04:21,896 epoch 1 - iter 416/526 - loss 0.01690337\n", + "2019-02-18 16:05:04,667 epoch 1 - iter 468/526 - loss 0.01680622\n", + "2019-02-18 16:05:54,632 epoch 1 - iter 520/526 - loss 0.01671503\n", + "2019-02-18 16:05:58,057 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:05:58,059 EPOCH 1 done: loss 0.0167 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 16:06:38,014 DEV : loss 0.01553357 - f-score 0.7349 - acc 0.7349\n", + "2019-02-18 16:07:05,520 TEST : loss 0.02054467 - f-score 0.6267 - acc 0.6267\n", + "2019-02-18 16:07:14,260 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:07:15,178 epoch 2 - iter 0/526 - loss 0.01717842\n", + "2019-02-18 16:07:52,789 epoch 2 - iter 52/526 - loss 0.01595207\n", + "2019-02-18 16:08:38,517 epoch 2 - iter 104/526 - loss 0.01552524\n", + "2019-02-18 16:09:18,423 epoch 2 - iter 156/526 - loss 0.01546827\n", + "2019-02-18 16:09:55,639 epoch 2 - iter 208/526 - loss 0.01533624\n", + "2019-02-18 16:10:36,471 epoch 2 - iter 260/526 - loss 0.01531059\n", + "2019-02-18 16:11:20,440 epoch 2 - iter 312/526 - loss 0.01536111\n", + "2019-02-18 16:12:01,423 epoch 2 - iter 364/526 - loss 0.01536426\n", + "2019-02-18 16:12:45,635 epoch 2 - iter 416/526 - loss 0.01534227\n", + "2019-02-18 16:13:34,458 epoch 2 - iter 468/526 - loss 0.01524534\n", + "2019-02-18 16:14:15,592 epoch 2 - iter 520/526 - loss 0.01515822\n", + "2019-02-18 16:14:19,540 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:14:19,542 EPOCH 2 done: loss 0.0152 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 16:14:56,222 DEV : loss 0.01485776 - f-score 0.7599 - acc 0.7599\n", + "2019-02-18 16:15:22,438 TEST : loss 0.01995775 - f-score 0.6534 - acc 0.6534\n", + "2019-02-18 16:15:33,203 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:15:34,269 epoch 3 - iter 0/526 - loss 0.01352574\n", + "2019-02-18 16:16:15,668 epoch 3 - iter 52/526 - loss 0.01487503\n", + "2019-02-18 16:16:56,937 epoch 3 - iter 104/526 - loss 0.01488308\n", + "2019-02-18 16:17:43,956 epoch 3 - iter 156/526 - loss 0.01489741\n", + "2019-02-18 16:18:23,976 epoch 3 - iter 208/526 - loss 0.01483106\n", + "2019-02-18 16:19:06,144 epoch 3 - iter 260/526 - loss 0.01486248\n", + "2019-02-18 16:19:48,716 epoch 3 - iter 312/526 - loss 0.01475698\n", + "2019-02-18 16:20:28,351 epoch 3 - iter 364/526 - loss 0.01464827\n", + "2019-02-18 16:21:11,465 epoch 3 - iter 416/526 - loss 0.01454867\n", + "2019-02-18 16:21:57,595 epoch 3 - iter 468/526 - loss 0.01450732\n", + "2019-02-18 16:22:33,474 epoch 3 - iter 520/526 - loss 0.01456542\n", + "2019-02-18 16:22:38,061 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:22:38,062 EPOCH 3 done: loss 0.0146 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 16:23:12,592 DEV : loss 0.01434629 - f-score 0.7714 - acc 0.7714\n", + "2019-02-18 16:23:38,321 TEST : loss 0.02016712 - f-score 0.6539 - acc 0.6539\n", + "2019-02-18 16:23:49,399 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:23:50,874 epoch 4 - iter 0/526 - loss 0.01323878\n", + "2019-02-18 16:24:32,184 epoch 4 - iter 52/526 - loss 0.01348973\n", + "2019-02-18 16:25:11,676 epoch 4 - iter 104/526 - loss 0.01362511\n", + "2019-02-18 16:25:53,569 epoch 4 - iter 156/526 - loss 0.01371228\n", + "2019-02-18 16:26:38,569 epoch 4 - iter 208/526 - loss 0.01398436\n", + "2019-02-18 16:27:16,954 epoch 4 - iter 260/526 - loss 0.01406107\n", + "2019-02-18 16:27:56,288 epoch 4 - iter 312/526 - loss 0.01402520\n", + "2019-02-18 16:28:35,774 epoch 4 - iter 364/526 - loss 0.01396586\n", + "2019-02-18 16:29:17,182 epoch 4 - iter 416/526 - loss 0.01398844\n", + "2019-02-18 16:29:58,304 epoch 4 - iter 468/526 - loss 0.01397442\n", + "2019-02-18 16:30:36,673 epoch 4 - iter 520/526 - loss 0.01393643\n", + "2019-02-18 16:30:40,184 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:30:40,185 EPOCH 4 done: loss 0.0139 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 16:31:15,968 DEV : loss 0.01392026 - f-score 0.7859 - acc 0.7859\n", + "2019-02-18 16:31:40,487 TEST : loss 0.01973633 - f-score 0.6740 - acc 0.6740\n", + "2019-02-18 16:31:51,508 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:31:52,725 epoch 5 - iter 0/526 - loss 0.01598181\n", + "2019-02-18 16:32:36,083 epoch 5 - iter 52/526 - loss 0.01334639\n", + "2019-02-18 16:33:17,879 epoch 5 - iter 104/526 - loss 0.01330042\n", + "2019-02-18 16:34:03,064 epoch 5 - iter 156/526 - loss 0.01334889\n", + "2019-02-18 16:34:46,187 epoch 5 - iter 208/526 - loss 0.01332951\n", + "2019-02-18 16:35:23,356 epoch 5 - iter 260/526 - loss 0.01349746\n", + "2019-02-18 16:36:07,931 epoch 5 - iter 312/526 - loss 0.01352572\n", + "2019-02-18 16:36:48,456 epoch 5 - iter 364/526 - loss 0.01362373\n", + "2019-02-18 16:37:28,204 epoch 5 - iter 416/526 - loss 0.01364770\n", + "2019-02-18 16:38:09,262 epoch 5 - iter 468/526 - loss 0.01367406\n", + "2019-02-18 16:38:54,083 epoch 5 - iter 520/526 - loss 0.01353081\n", + "2019-02-18 16:38:58,947 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:38:58,948 EPOCH 5 done: loss 0.0135 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 16:39:43,079 DEV : loss 0.01338645 - f-score 0.7994 - acc 0.7994\n", + "2019-02-18 16:40:10,662 TEST : loss 0.01683049 - f-score 0.7447 - acc 0.7447\n", + "2019-02-18 16:40:21,709 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:40:22,566 epoch 6 - iter 0/526 - loss 0.01515922\n", + "2019-02-18 16:41:00,739 epoch 6 - iter 52/526 - loss 0.01319935\n", + "2019-02-18 16:41:42,353 epoch 6 - iter 104/526 - loss 0.01306053\n", + "2019-02-18 16:42:22,524 epoch 6 - iter 156/526 - loss 0.01334328\n", + "2019-02-18 16:43:02,983 epoch 6 - iter 208/526 - loss 0.01322553\n", + "2019-02-18 16:43:46,347 epoch 6 - iter 260/526 - loss 0.01316519\n", + "2019-02-18 16:44:26,672 epoch 6 - iter 312/526 - loss 0.01344200\n", + "2019-02-18 16:45:05,290 epoch 6 - iter 364/526 - loss 0.01345868\n", + "2019-02-18 16:45:40,805 epoch 6 - iter 416/526 - loss 0.01348272\n", + "2019-02-18 16:46:23,473 epoch 6 - iter 468/526 - loss 0.01350070\n", + "2019-02-18 16:47:01,389 epoch 6 - iter 520/526 - loss 0.01347896\n", + "2019-02-18 16:47:04,699 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:47:04,700 EPOCH 6 done: loss 0.0135 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 16:47:41,476 DEV : loss 0.01267112 - f-score 0.8054 - acc 0.8054\n", + "2019-02-18 16:48:08,294 TEST : loss 0.01666281 - f-score 0.7519 - acc 0.7519\n", + "2019-02-18 16:48:19,065 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:48:19,876 epoch 7 - iter 0/526 - loss 0.01306688\n", + "2019-02-18 16:49:00,903 epoch 7 - iter 52/526 - loss 0.01367513\n", + "2019-02-18 16:49:43,185 epoch 7 - iter 104/526 - loss 0.01332517\n", + "2019-02-18 16:50:21,140 epoch 7 - iter 156/526 - loss 0.01319720\n", + "2019-02-18 16:51:00,818 epoch 7 - iter 208/526 - loss 0.01318900\n", + "2019-02-18 16:51:40,858 epoch 7 - iter 260/526 - loss 0.01314650\n", + "2019-02-18 16:52:24,149 epoch 7 - iter 312/526 - loss 0.01310183\n", + "2019-02-18 16:53:01,585 epoch 7 - iter 364/526 - loss 0.01307307\n", + "2019-02-18 16:53:41,933 epoch 7 - iter 416/526 - loss 0.01312719\n", + "2019-02-18 16:54:19,028 epoch 7 - iter 468/526 - loss 0.01315661\n", + "2019-02-18 16:55:02,962 epoch 7 - iter 520/526 - loss 0.01312956\n", + "2019-02-18 16:55:07,229 ----------------------------------------------------------------------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 16:55:07,230 EPOCH 7 done: loss 0.0131 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 16:55:43,209 DEV : loss 0.01436462 - f-score 0.7654 - acc 0.7654\n", + "2019-02-18 16:56:07,425 TEST : loss 0.01884936 - f-score 0.6807 - acc 0.6807\n", + "2019-02-18 16:56:18,415 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 16:56:19,243 epoch 8 - iter 0/526 - loss 0.01391503\n", + "2019-02-18 16:57:02,814 epoch 8 - iter 52/526 - loss 0.01269610\n", + "2019-02-18 16:57:38,786 epoch 8 - iter 104/526 - loss 0.01287505\n", + "2019-02-18 16:58:16,825 epoch 8 - iter 156/526 - loss 0.01289498\n", + "2019-02-18 16:58:55,526 epoch 8 - iter 208/526 - loss 0.01269878\n", + "2019-02-18 16:59:38,772 epoch 8 - iter 260/526 - loss 0.01278463\n", + "2019-02-18 17:00:19,956 epoch 8 - iter 312/526 - loss 0.01280592\n", + "2019-02-18 17:01:06,535 epoch 8 - iter 364/526 - loss 0.01280442\n", + "2019-02-18 17:01:46,057 epoch 8 - iter 416/526 - loss 0.01269708\n", + "2019-02-18 17:02:26,427 epoch 8 - iter 468/526 - loss 0.01273897\n", + "2019-02-18 17:03:06,014 epoch 8 - iter 520/526 - loss 0.01280426\n", + "2019-02-18 17:03:09,355 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:03:09,356 EPOCH 8 done: loss 0.0128 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 17:03:50,934 DEV : loss 0.01279273 - f-score 0.7994 - acc 0.7994\n", + "2019-02-18 17:04:18,228 TEST : loss 0.01753456 - f-score 0.7165 - acc 0.7165\n", + "2019-02-18 17:04:29,146 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:04:30,116 epoch 9 - iter 0/526 - loss 0.00904663\n", + "2019-02-18 17:05:14,147 epoch 9 - iter 52/526 - loss 0.01267557\n", + "2019-02-18 17:05:55,132 epoch 9 - iter 104/526 - loss 0.01258353\n", + "2019-02-18 17:06:45,871 epoch 9 - iter 156/526 - loss 0.01273380\n", + "2019-02-18 17:07:39,826 epoch 9 - iter 208/526 - loss 0.01289245\n", + "2019-02-18 17:08:37,689 epoch 9 - iter 260/526 - loss 0.01284212\n", + "2019-02-18 17:09:31,316 epoch 9 - iter 312/526 - loss 0.01287030\n", + "2019-02-18 17:10:22,492 epoch 9 - iter 364/526 - loss 0.01284674\n", + "2019-02-18 17:11:14,441 epoch 9 - iter 416/526 - loss 0.01277994\n", + "2019-02-18 17:12:09,854 epoch 9 - iter 468/526 - loss 0.01269307\n", + "2019-02-18 17:12:53,877 epoch 9 - iter 520/526 - loss 0.01269265\n", + "2019-02-18 17:12:59,603 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:12:59,606 EPOCH 9 done: loss 0.0127 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 17:13:37,247 DEV : loss 0.01260460 - f-score 0.8069 - acc 0.8069\n", + "2019-02-18 17:14:03,124 TEST : loss 0.01784888 - f-score 0.7027 - acc 0.7027\n", + "2019-02-18 17:14:13,869 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:14:14,678 epoch 10 - iter 0/526 - loss 0.01197039\n", + "2019-02-18 17:14:55,993 epoch 10 - iter 52/526 - loss 0.01214427\n", + "2019-02-18 17:15:38,582 epoch 10 - iter 104/526 - loss 0.01237999\n", + "2019-02-18 17:16:22,818 epoch 10 - iter 156/526 - loss 0.01240889\n", + "2019-02-18 17:17:04,752 epoch 10 - iter 208/526 - loss 0.01233547\n", + "2019-02-18 17:17:42,918 epoch 10 - iter 260/526 - loss 0.01240603\n", + "2019-02-18 17:18:19,815 epoch 10 - iter 312/526 - loss 0.01244341\n", + "2019-02-18 17:19:04,682 epoch 10 - iter 364/526 - loss 0.01248983\n", + "2019-02-18 17:19:45,431 epoch 10 - iter 416/526 - loss 0.01255515\n", + "2019-02-18 17:20:27,207 epoch 10 - iter 468/526 - loss 0.01253496\n", + "2019-02-18 17:21:05,278 epoch 10 - iter 520/526 - loss 0.01255321\n", + "2019-02-18 17:21:08,906 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:21:08,908 EPOCH 10 done: loss 0.0125 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 17:21:44,505 DEV : loss 0.01219011 - f-score 0.8179 - acc 0.8179\n", + "2019-02-18 17:22:10,338 TEST : loss 0.01602328 - f-score 0.7653 - acc 0.7653\n", + "2019-02-18 17:22:21,375 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:22:22,291 epoch 11 - iter 0/526 - loss 0.01013956\n", + "2019-02-18 17:23:04,136 epoch 11 - iter 52/526 - loss 0.01213045\n", + "2019-02-18 17:23:43,762 epoch 11 - iter 104/526 - loss 0.01261378\n", + "2019-02-18 17:24:25,567 epoch 11 - iter 156/526 - loss 0.01224389\n", + "2019-02-18 17:25:17,665 epoch 11 - iter 208/526 - loss 0.01231242\n", + "2019-02-18 17:26:05,704 epoch 11 - iter 260/526 - loss 0.01216261\n", + "2019-02-18 17:26:44,226 epoch 11 - iter 312/526 - loss 0.01229325\n", + "2019-02-18 17:27:25,686 epoch 11 - iter 364/526 - loss 0.01229002\n", + "2019-02-18 17:28:03,442 epoch 11 - iter 416/526 - loss 0.01234051\n", + "2019-02-18 17:28:41,458 epoch 11 - iter 468/526 - loss 0.01241809\n", + "2019-02-18 17:29:28,208 epoch 11 - iter 520/526 - loss 0.01242832\n", + "2019-02-18 17:29:32,230 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:29:32,231 EPOCH 11 done: loss 0.0124 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 17:30:07,672 DEV : loss 0.01209316 - f-score 0.8169 - acc 0.8169\n", + "2019-02-18 17:30:31,773 TEST : loss 0.01652627 - f-score 0.7519 - acc 0.7519\n", + "2019-02-18 17:30:42,529 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:30:43,322 epoch 12 - iter 0/526 - loss 0.01227321\n", + "2019-02-18 17:31:33,231 epoch 12 - iter 52/526 - loss 0.01224642\n", + "2019-02-18 17:32:16,506 epoch 12 - iter 104/526 - loss 0.01227952\n", + "2019-02-18 17:32:57,046 epoch 12 - iter 156/526 - loss 0.01233341\n", + "2019-02-18 17:33:39,580 epoch 12 - iter 208/526 - loss 0.01250964\n", + "2019-02-18 17:34:21,545 epoch 12 - iter 260/526 - loss 0.01254298\n", + "2019-02-18 17:35:01,734 epoch 12 - iter 312/526 - loss 0.01239779\n", + "2019-02-18 17:35:39,321 epoch 12 - iter 364/526 - loss 0.01242299\n", + "2019-02-18 17:36:17,535 epoch 12 - iter 416/526 - loss 0.01238217\n", + "2019-02-18 17:37:02,206 epoch 12 - iter 468/526 - loss 0.01238705\n", + "2019-02-18 17:37:42,575 epoch 12 - iter 520/526 - loss 0.01237962\n", + "2019-02-18 17:37:46,411 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:37:46,412 EPOCH 12 done: loss 0.0124 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 17:38:23,579 DEV : loss 0.01263722 - f-score 0.8114 - acc 0.8114\n", + "2019-02-18 17:38:48,537 TEST : loss 0.01537714 - f-score 0.7677 - acc 0.7677\n", + "2019-02-18 17:38:59,483 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:39:00,389 epoch 13 - iter 0/526 - loss 0.00931402\n", + "2019-02-18 17:39:38,625 epoch 13 - iter 52/526 - loss 0.01237009\n", + "2019-02-18 17:40:23,446 epoch 13 - iter 104/526 - loss 0.01227296\n", + "2019-02-18 17:41:11,095 epoch 13 - iter 156/526 - loss 0.01209146\n", + "2019-02-18 17:41:52,252 epoch 13 - iter 208/526 - loss 0.01210759\n", + "2019-02-18 17:42:34,558 epoch 13 - iter 260/526 - loss 0.01217075\n", + "2019-02-18 17:43:13,732 epoch 13 - iter 312/526 - loss 0.01206028\n", + "2019-02-18 17:43:52,797 epoch 13 - iter 364/526 - loss 0.01200963\n", + "2019-02-18 17:44:33,837 epoch 13 - iter 416/526 - loss 0.01200332\n", + "2019-02-18 17:45:15,198 epoch 13 - iter 468/526 - loss 0.01202327\n", + "2019-02-18 17:45:54,386 epoch 13 - iter 520/526 - loss 0.01199283\n", + "2019-02-18 17:45:58,060 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:45:58,061 EPOCH 13 done: loss 0.0120 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 17:46:33,516 DEV : loss 0.01170990 - f-score 0.8329 - acc 0.8329\n", + "2019-02-18 17:46:59,277 TEST : loss 0.01515957 - f-score 0.7787 - acc 0.7787\n", + "2019-02-18 17:47:10,206 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:47:11,119 epoch 14 - iter 0/526 - loss 0.00990110\n", + "2019-02-18 17:47:47,469 epoch 14 - iter 52/526 - loss 0.01083351\n", + "2019-02-18 17:48:24,868 epoch 14 - iter 104/526 - loss 0.01140991\n", + "2019-02-18 17:49:02,643 epoch 14 - iter 156/526 - loss 0.01159181\n", + "2019-02-18 17:49:44,398 epoch 14 - iter 208/526 - loss 0.01157900\n", + "2019-02-18 17:50:24,427 epoch 14 - iter 260/526 - loss 0.01169203\n", + "2019-02-18 17:51:06,430 epoch 14 - iter 312/526 - loss 0.01174273\n", + "2019-02-18 17:51:53,758 epoch 14 - iter 364/526 - loss 0.01178766\n", + "2019-02-18 17:52:36,084 epoch 14 - iter 416/526 - loss 0.01170609\n", + "2019-02-18 17:53:20,535 epoch 14 - iter 468/526 - loss 0.01166916\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 17:54:02,337 epoch 14 - iter 520/526 - loss 0.01174037\n", + "2019-02-18 17:54:05,345 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:54:05,346 EPOCH 14 done: loss 0.0117 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 17:54:41,545 DEV : loss 0.01152237 - f-score 0.8289 - acc 0.8289\n", + "2019-02-18 17:55:06,820 TEST : loss 0.01493260 - f-score 0.7796 - acc 0.7796\n", + "2019-02-18 17:55:17,794 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 17:55:18,906 epoch 15 - iter 0/526 - loss 0.00745257\n", + "2019-02-18 17:55:56,971 epoch 15 - iter 52/526 - loss 0.01075182\n", + "2019-02-18 17:56:36,160 epoch 15 - iter 104/526 - loss 0.01123895\n", + "2019-02-18 17:57:14,979 epoch 15 - iter 156/526 - loss 0.01111512\n", + "2019-02-18 17:57:55,841 epoch 15 - iter 208/526 - loss 0.01109633\n", + "2019-02-18 17:58:35,062 epoch 15 - iter 260/526 - loss 0.01120362\n", + "2019-02-18 17:59:16,808 epoch 15 - iter 312/526 - loss 0.01121806\n", + "2019-02-18 17:59:56,804 epoch 15 - iter 364/526 - loss 0.01125122\n", + "2019-02-18 18:00:40,281 epoch 15 - iter 416/526 - loss 0.01134365\n", + "2019-02-18 18:01:18,374 epoch 15 - iter 468/526 - loss 0.01133036\n", + "2019-02-18 18:01:59,215 epoch 15 - iter 520/526 - loss 0.01130990\n", + "2019-02-18 18:02:05,436 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:02:05,439 EPOCH 15 done: loss 0.0113 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 18:02:42,647 DEV : loss 0.01007134 - f-score 0.8579 - acc 0.8579\n", + "2019-02-18 18:03:08,268 TEST : loss 0.01374990 - f-score 0.7997 - acc 0.7997\n", + "2019-02-18 18:03:19,140 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:03:19,973 epoch 16 - iter 0/526 - loss 0.00623085\n", + "2019-02-18 18:04:05,629 epoch 16 - iter 52/526 - loss 0.01067232\n", + "2019-02-18 18:04:43,731 epoch 16 - iter 104/526 - loss 0.01074571\n", + "2019-02-18 18:05:27,007 epoch 16 - iter 156/526 - loss 0.01048908\n", + "2019-02-18 18:06:07,405 epoch 16 - iter 208/526 - loss 0.01026548\n", + "2019-02-18 18:06:52,095 epoch 16 - iter 260/526 - loss 0.01016827\n", + "2019-02-18 18:07:35,782 epoch 16 - iter 312/526 - loss 0.01007975\n", + "2019-02-18 18:08:12,756 epoch 16 - iter 364/526 - loss 0.00996693\n", + "2019-02-18 18:08:49,916 epoch 16 - iter 416/526 - loss 0.00979732\n", + "2019-02-18 18:09:36,652 epoch 16 - iter 468/526 - loss 0.00971618\n", + "2019-02-18 18:10:18,519 epoch 16 - iter 520/526 - loss 0.00975455\n", + "2019-02-18 18:10:21,727 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:10:21,728 EPOCH 16 done: loss 0.0098 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 18:10:58,722 DEV : loss 0.00873072 - f-score 0.8744 - acc 0.8744\n", + "2019-02-18 18:11:24,481 TEST : loss 0.01232619 - f-score 0.8279 - acc 0.8279\n", + "2019-02-18 18:11:35,296 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:11:36,044 epoch 17 - iter 0/526 - loss 0.00967250\n", + "2019-02-18 18:12:16,254 epoch 17 - iter 52/526 - loss 0.00922615\n", + "2019-02-18 18:12:52,615 epoch 17 - iter 104/526 - loss 0.00890183\n", + "2019-02-18 18:13:28,146 epoch 17 - iter 156/526 - loss 0.00908327\n", + "2019-02-18 18:14:11,353 epoch 17 - iter 208/526 - loss 0.00905697\n", + "2019-02-18 18:14:47,186 epoch 17 - iter 260/526 - loss 0.00902008\n", + "2019-02-18 18:15:26,947 epoch 17 - iter 312/526 - loss 0.00901800\n", + "2019-02-18 18:16:06,199 epoch 17 - iter 364/526 - loss 0.00896919\n", + "2019-02-18 18:16:48,604 epoch 17 - iter 416/526 - loss 0.00890790\n", + "2019-02-18 18:17:37,089 epoch 17 - iter 468/526 - loss 0.00878037\n", + "2019-02-18 18:18:16,169 epoch 17 - iter 520/526 - loss 0.00872495\n", + "2019-02-18 18:18:19,962 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:18:19,963 EPOCH 17 done: loss 0.0087 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 18:18:55,554 DEV : loss 0.00906551 - f-score 0.8754 - acc 0.8754\n", + "2019-02-18 18:19:26,327 TEST : loss 0.01094206 - f-score 0.8504 - acc 0.8504\n", + "2019-02-18 18:19:37,212 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:19:38,143 epoch 18 - iter 0/526 - loss 0.00958856\n", + "2019-02-18 18:20:14,891 epoch 18 - iter 52/526 - loss 0.00781917\n", + "2019-02-18 18:20:56,802 epoch 18 - iter 104/526 - loss 0.00790162\n", + "2019-02-18 18:21:40,229 epoch 18 - iter 156/526 - loss 0.00821849\n", + "2019-02-18 18:22:19,944 epoch 18 - iter 208/526 - loss 0.00806862\n", + "2019-02-18 18:23:03,430 epoch 18 - iter 260/526 - loss 0.00805257\n", + "2019-02-18 18:23:48,261 epoch 18 - iter 312/526 - loss 0.00811873\n", + "2019-02-18 18:24:33,787 epoch 18 - iter 364/526 - loss 0.00806263\n", + "2019-02-18 18:25:14,974 epoch 18 - iter 416/526 - loss 0.00806289\n", + "2019-02-18 18:26:02,290 epoch 18 - iter 468/526 - loss 0.00808262\n", + "2019-02-18 18:26:54,268 epoch 18 - iter 520/526 - loss 0.00809047\n", + "2019-02-18 18:26:58,970 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:26:58,971 EPOCH 18 done: loss 0.0081 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 18:27:48,778 DEV : loss 0.00895122 - f-score 0.8739 - acc 0.8739\n", + "2019-02-18 18:28:23,176 TEST : loss 0.01393017 - f-score 0.8040 - acc 0.8040\n", + "2019-02-18 18:28:34,073 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:28:34,820 epoch 19 - iter 0/526 - loss 0.00693367\n", + "2019-02-18 18:29:15,601 epoch 19 - iter 52/526 - loss 0.00744070\n", + "2019-02-18 18:29:52,711 epoch 19 - iter 104/526 - loss 0.00731393\n", + "2019-02-18 18:30:33,862 epoch 19 - iter 156/526 - loss 0.00768933\n", + "2019-02-18 18:31:13,904 epoch 19 - iter 208/526 - loss 0.00773914\n", + "2019-02-18 18:31:55,854 epoch 19 - iter 260/526 - loss 0.00769556\n", + "2019-02-18 18:32:35,011 epoch 19 - iter 312/526 - loss 0.00765124\n", + "2019-02-18 18:33:14,134 epoch 19 - iter 364/526 - loss 0.00763169\n", + "2019-02-18 18:33:51,035 epoch 19 - iter 416/526 - loss 0.00766937\n", + "2019-02-18 18:34:36,084 epoch 19 - iter 468/526 - loss 0.00765516\n", + "2019-02-18 18:35:17,404 epoch 19 - iter 520/526 - loss 0.00762454\n", + "2019-02-18 18:35:20,882 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:35:20,883 EPOCH 19 done: loss 0.0076 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 18:35:58,586 DEV : loss 0.00849486 - f-score 0.8789 - acc 0.8789\n", + "2019-02-18 18:36:24,922 TEST : loss 0.01305993 - f-score 0.8150 - acc 0.8150\n", + "2019-02-18 18:36:35,853 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:36:36,586 epoch 20 - iter 0/526 - loss 0.00446512\n", + "2019-02-18 18:37:17,576 epoch 20 - iter 52/526 - loss 0.00742575\n", + "2019-02-18 18:37:58,266 epoch 20 - iter 104/526 - loss 0.00741747\n", + "2019-02-18 18:38:36,298 epoch 20 - iter 156/526 - loss 0.00731348\n", + "2019-02-18 18:39:16,881 epoch 20 - iter 208/526 - loss 0.00731204\n", + "2019-02-18 18:39:55,945 epoch 20 - iter 260/526 - loss 0.00735582\n", + "2019-02-18 18:40:37,616 epoch 20 - iter 312/526 - loss 0.00744158\n", + "2019-02-18 18:41:17,279 epoch 20 - iter 364/526 - loss 0.00746509\n", + "2019-02-18 18:41:55,950 epoch 20 - iter 416/526 - loss 0.00742372\n", + "2019-02-18 18:42:35,469 epoch 20 - iter 468/526 - loss 0.00739152\n", + "2019-02-18 18:43:15,558 epoch 20 - iter 520/526 - loss 0.00736543\n", + "2019-02-18 18:43:19,182 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:43:19,183 EPOCH 20 done: loss 0.0074 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 18:43:57,603 DEV : loss 0.00742245 - f-score 0.9025 - acc 0.9025\n", + "2019-02-18 18:44:23,549 TEST : loss 0.01072053 - f-score 0.8556 - acc 0.8556\n", + "2019-02-18 18:44:34,496 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:44:35,761 epoch 21 - iter 0/526 - loss 0.00700021\n", + "2019-02-18 18:45:15,499 epoch 21 - iter 52/526 - loss 0.00702865\n", + "2019-02-18 18:45:57,283 epoch 21 - iter 104/526 - loss 0.00684636\n", + "2019-02-18 18:46:39,477 epoch 21 - iter 156/526 - loss 0.00704635\n", + "2019-02-18 18:47:20,830 epoch 21 - iter 208/526 - loss 0.00724219\n", + "2019-02-18 18:48:09,691 epoch 21 - iter 260/526 - loss 0.00723798\n", + "2019-02-18 18:48:47,405 epoch 21 - iter 312/526 - loss 0.00715051\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 18:49:29,728 epoch 21 - iter 364/526 - loss 0.00711797\n", + "2019-02-18 18:50:12,052 epoch 21 - iter 416/526 - loss 0.00712686\n", + "2019-02-18 18:50:53,060 epoch 21 - iter 468/526 - loss 0.00710849\n", + "2019-02-18 18:51:37,296 epoch 21 - iter 520/526 - loss 0.00702905\n", + "2019-02-18 18:51:40,922 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:51:40,923 EPOCH 21 done: loss 0.0070 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 18:52:18,269 DEV : loss 0.00902766 - f-score 0.8769 - acc 0.8769\n", + "2019-02-18 18:52:44,386 TEST : loss 0.01008986 - f-score 0.8662 - acc 0.8662\n", + "2019-02-18 18:52:55,257 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:52:56,432 epoch 22 - iter 0/526 - loss 0.01365851\n", + "2019-02-18 18:53:39,296 epoch 22 - iter 52/526 - loss 0.00670433\n", + "2019-02-18 18:54:16,343 epoch 22 - iter 104/526 - loss 0.00679970\n", + "2019-02-18 18:54:55,685 epoch 22 - iter 156/526 - loss 0.00674478\n", + "2019-02-18 18:55:33,845 epoch 22 - iter 208/526 - loss 0.00668477\n", + "2019-02-18 18:56:14,839 epoch 22 - iter 260/526 - loss 0.00674326\n", + "2019-02-18 18:56:53,103 epoch 22 - iter 312/526 - loss 0.00681602\n", + "2019-02-18 18:57:33,153 epoch 22 - iter 364/526 - loss 0.00691157\n", + "2019-02-18 18:58:10,846 epoch 22 - iter 416/526 - loss 0.00691438\n", + "2019-02-18 18:58:55,043 epoch 22 - iter 468/526 - loss 0.00688541\n", + "2019-02-18 18:59:32,914 epoch 22 - iter 520/526 - loss 0.00688444\n", + "2019-02-18 18:59:36,304 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 18:59:36,307 EPOCH 22 done: loss 0.0069 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 19:00:11,956 DEV : loss 0.01018114 - f-score 0.8749 - acc 0.8749\n", + "2019-02-18 19:00:36,143 TEST : loss 0.01700473 - f-score 0.7973 - acc 0.7973\n", + "2019-02-18 19:00:47,001 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:00:47,966 epoch 23 - iter 0/526 - loss 0.00208094\n", + "2019-02-18 19:01:35,538 epoch 23 - iter 52/526 - loss 0.00655314\n", + "2019-02-18 19:02:12,622 epoch 23 - iter 104/526 - loss 0.00643935\n", + "2019-02-18 19:03:00,713 epoch 23 - iter 156/526 - loss 0.00649835\n", + "2019-02-18 19:03:40,690 epoch 23 - iter 208/526 - loss 0.00675218\n", + "2019-02-18 19:04:19,512 epoch 23 - iter 260/526 - loss 0.00665778\n", + "2019-02-18 19:04:59,313 epoch 23 - iter 312/526 - loss 0.00651823\n", + "2019-02-18 19:05:37,600 epoch 23 - iter 364/526 - loss 0.00648123\n", + "2019-02-18 19:06:19,002 epoch 23 - iter 416/526 - loss 0.00646906\n", + "2019-02-18 19:07:01,693 epoch 23 - iter 468/526 - loss 0.00656030\n", + "2019-02-18 19:07:45,891 epoch 23 - iter 520/526 - loss 0.00653499\n", + "2019-02-18 19:07:48,964 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:07:48,966 EPOCH 23 done: loss 0.0065 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 19:08:25,431 DEV : loss 0.00811643 - f-score 0.8944 - acc 0.8944\n", + "2019-02-18 19:08:50,269 TEST : loss 0.01300632 - f-score 0.8346 - acc 0.8346\n", + "2019-02-18 19:09:01,159 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:09:02,155 epoch 24 - iter 0/526 - loss 0.00370325\n", + "2019-02-18 19:09:39,881 epoch 24 - iter 52/526 - loss 0.00528836\n", + "2019-02-18 19:10:22,792 epoch 24 - iter 104/526 - loss 0.00564843\n", + "2019-02-18 19:11:01,662 epoch 24 - iter 156/526 - loss 0.00606675\n", + "2019-02-18 19:11:38,160 epoch 24 - iter 208/526 - loss 0.00607177\n", + "2019-02-18 19:12:16,088 epoch 24 - iter 260/526 - loss 0.00621683\n", + "2019-02-18 19:12:53,659 epoch 24 - iter 312/526 - loss 0.00632252\n", + "2019-02-18 19:13:30,327 epoch 24 - iter 364/526 - loss 0.00633934\n", + "2019-02-18 19:14:08,294 epoch 24 - iter 416/526 - loss 0.00634795\n", + "2019-02-18 19:14:50,062 epoch 24 - iter 468/526 - loss 0.00637791\n", + "2019-02-18 19:15:36,514 epoch 24 - iter 520/526 - loss 0.00631386\n", + "2019-02-18 19:15:40,854 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:15:40,855 EPOCH 24 done: loss 0.0063 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 19:16:29,853 DEV : loss 0.00701130 - f-score 0.9070 - acc 0.9070\n", + "2019-02-18 19:16:57,256 TEST : loss 0.01000786 - f-score 0.8662 - acc 0.8662\n", + "2019-02-18 19:17:08,232 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:17:09,031 epoch 25 - iter 0/526 - loss 0.00396606\n", + "2019-02-18 19:17:53,046 epoch 25 - iter 52/526 - loss 0.00648390\n", + "2019-02-18 19:18:34,367 epoch 25 - iter 104/526 - loss 0.00626455\n", + "2019-02-18 19:19:15,532 epoch 25 - iter 156/526 - loss 0.00635470\n", + "2019-02-18 19:19:54,340 epoch 25 - iter 208/526 - loss 0.00636875\n", + "2019-02-18 19:20:36,426 epoch 25 - iter 260/526 - loss 0.00619974\n", + "2019-02-18 19:21:16,967 epoch 25 - iter 312/526 - loss 0.00610287\n", + "2019-02-18 19:21:59,431 epoch 25 - iter 364/526 - loss 0.00604070\n", + "2019-02-18 19:22:36,775 epoch 25 - iter 416/526 - loss 0.00605358\n", + "2019-02-18 19:23:13,661 epoch 25 - iter 468/526 - loss 0.00611972\n", + "2019-02-18 19:23:53,071 epoch 25 - iter 520/526 - loss 0.00622856\n", + "2019-02-18 19:23:56,380 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:23:56,381 EPOCH 25 done: loss 0.0062 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 19:24:31,694 DEV : loss 0.00707518 - f-score 0.9040 - acc 0.9040\n", + "2019-02-18 19:24:56,882 TEST : loss 0.01061903 - f-score 0.8542 - acc 0.8542\n", + "2019-02-18 19:25:07,996 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:25:08,697 epoch 26 - iter 0/526 - loss 0.00863055\n", + "2019-02-18 19:25:47,732 epoch 26 - iter 52/526 - loss 0.00587896\n", + "2019-02-18 19:26:27,458 epoch 26 - iter 104/526 - loss 0.00580321\n", + "2019-02-18 19:27:09,532 epoch 26 - iter 156/526 - loss 0.00573094\n", + "2019-02-18 19:27:46,472 epoch 26 - iter 208/526 - loss 0.00586916\n", + "2019-02-18 19:28:25,105 epoch 26 - iter 260/526 - loss 0.00591552\n", + "2019-02-18 19:29:08,893 epoch 26 - iter 312/526 - loss 0.00590248\n", + "2019-02-18 19:29:47,865 epoch 26 - iter 364/526 - loss 0.00594697\n", + "2019-02-18 19:30:26,496 epoch 26 - iter 416/526 - loss 0.00607133\n", + "2019-02-18 19:31:07,851 epoch 26 - iter 468/526 - loss 0.00602952\n", + "2019-02-18 19:31:49,167 epoch 26 - iter 520/526 - loss 0.00607515\n", + "2019-02-18 19:31:53,405 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:31:53,406 EPOCH 26 done: loss 0.0061 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 19:32:30,250 DEV : loss 0.00671551 - f-score 0.9185 - acc 0.9185\n", + "2019-02-18 19:32:56,248 TEST : loss 0.00952343 - f-score 0.8743 - acc 0.8743\n", + "2019-02-18 19:33:07,193 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:33:07,964 epoch 27 - iter 0/526 - loss 0.00227738\n", + "2019-02-18 19:33:46,347 epoch 27 - iter 52/526 - loss 0.00601368\n", + "2019-02-18 19:34:25,075 epoch 27 - iter 104/526 - loss 0.00591048\n", + "2019-02-18 19:35:07,728 epoch 27 - iter 156/526 - loss 0.00590332\n", + "2019-02-18 19:35:48,634 epoch 27 - iter 208/526 - loss 0.00604888\n", + "2019-02-18 19:36:25,451 epoch 27 - iter 260/526 - loss 0.00605107\n", + "2019-02-18 19:37:12,908 epoch 27 - iter 312/526 - loss 0.00611740\n", + "2019-02-18 19:37:56,356 epoch 27 - iter 364/526 - loss 0.00610380\n", + "2019-02-18 19:38:37,240 epoch 27 - iter 416/526 - loss 0.00601502\n", + "2019-02-18 19:39:15,762 epoch 27 - iter 468/526 - loss 0.00601412\n", + "2019-02-18 19:39:56,251 epoch 27 - iter 520/526 - loss 0.00600550\n", + "2019-02-18 19:40:00,093 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:40:00,094 EPOCH 27 done: loss 0.0060 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 19:40:35,771 DEV : loss 0.00741955 - f-score 0.9055 - acc 0.9055\n", + "2019-02-18 19:41:00,129 TEST : loss 0.01143624 - f-score 0.8537 - acc 0.8537\n", + "2019-02-18 19:41:10,947 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:41:11,765 epoch 28 - iter 0/526 - loss 0.00277614\n", + "2019-02-18 19:41:48,141 epoch 28 - iter 52/526 - loss 0.00652433\n", + "2019-02-18 19:42:29,356 epoch 28 - iter 104/526 - loss 0.00570894\n", + "2019-02-18 19:43:10,957 epoch 28 - iter 156/526 - loss 0.00581449\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 19:43:49,868 epoch 28 - iter 208/526 - loss 0.00561163\n", + "2019-02-18 19:44:29,693 epoch 28 - iter 260/526 - loss 0.00571488\n", + "2019-02-18 19:45:12,313 epoch 28 - iter 312/526 - loss 0.00580308\n", + "2019-02-18 19:45:51,397 epoch 28 - iter 364/526 - loss 0.00583960\n", + "2019-02-18 19:46:33,452 epoch 28 - iter 416/526 - loss 0.00583972\n", + "2019-02-18 19:47:12,304 epoch 28 - iter 468/526 - loss 0.00574856\n", + "2019-02-18 19:47:56,758 epoch 28 - iter 520/526 - loss 0.00571306\n", + "2019-02-18 19:47:59,826 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:47:59,829 EPOCH 28 done: loss 0.0057 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 19:48:35,872 DEV : loss 0.00659911 - f-score 0.9200 - acc 0.9200\n", + "2019-02-18 19:49:01,439 TEST : loss 0.00868921 - f-score 0.8805 - acc 0.8805\n", + "2019-02-18 19:49:12,256 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:49:13,427 epoch 29 - iter 0/526 - loss 0.00485749\n", + "2019-02-18 19:49:51,838 epoch 29 - iter 52/526 - loss 0.00564721\n", + "2019-02-18 19:50:30,378 epoch 29 - iter 104/526 - loss 0.00522518\n", + "2019-02-18 19:51:10,081 epoch 29 - iter 156/526 - loss 0.00568877\n", + "2019-02-18 19:51:49,802 epoch 29 - iter 208/526 - loss 0.00564869\n", + "2019-02-18 19:52:28,622 epoch 29 - iter 260/526 - loss 0.00563647\n", + "2019-02-18 19:53:11,167 epoch 29 - iter 312/526 - loss 0.00574610\n", + "2019-02-18 19:53:48,648 epoch 29 - iter 364/526 - loss 0.00568082\n", + "2019-02-18 19:54:27,901 epoch 29 - iter 416/526 - loss 0.00571574\n", + "2019-02-18 19:55:19,843 epoch 29 - iter 468/526 - loss 0.00569390\n", + "2019-02-18 19:55:59,771 epoch 29 - iter 520/526 - loss 0.00570530\n", + "2019-02-18 19:56:03,479 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:56:03,480 EPOCH 29 done: loss 0.0057 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 19:56:38,317 DEV : loss 0.00676128 - f-score 0.9140 - acc 0.9140\n", + "2019-02-18 19:57:04,002 TEST : loss 0.01025531 - f-score 0.8604 - acc 0.8604\n", + "2019-02-18 19:57:14,830 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 19:57:15,678 epoch 30 - iter 0/526 - loss 0.01091329\n", + "2019-02-18 19:58:01,712 epoch 30 - iter 52/526 - loss 0.00513044\n", + "2019-02-18 19:58:39,606 epoch 30 - iter 104/526 - loss 0.00500759\n", + "2019-02-18 19:59:27,895 epoch 30 - iter 156/526 - loss 0.00522309\n", + "2019-02-18 20:00:10,116 epoch 30 - iter 208/526 - loss 0.00523110\n", + "2019-02-18 20:00:50,092 epoch 30 - iter 260/526 - loss 0.00528235\n", + "2019-02-18 20:01:29,503 epoch 30 - iter 312/526 - loss 0.00546464\n", + "2019-02-18 20:02:10,113 epoch 30 - iter 364/526 - loss 0.00542460\n", + "2019-02-18 20:02:47,800 epoch 30 - iter 416/526 - loss 0.00543210\n", + "2019-02-18 20:03:28,931 epoch 30 - iter 468/526 - loss 0.00545644\n", + "2019-02-18 20:04:07,928 epoch 30 - iter 520/526 - loss 0.00548361\n", + "2019-02-18 20:04:11,827 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:04:11,828 EPOCH 30 done: loss 0.0055 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 20:04:46,557 DEV : loss 0.00742778 - f-score 0.9065 - acc 0.9065\n", + "2019-02-18 20:05:12,104 TEST : loss 0.01216540 - f-score 0.8461 - acc 0.8461\n", + "2019-02-18 20:05:23,320 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:05:24,008 epoch 31 - iter 0/526 - loss 0.00303670\n", + "2019-02-18 20:06:01,987 epoch 31 - iter 52/526 - loss 0.00505696\n", + "2019-02-18 20:06:38,512 epoch 31 - iter 104/526 - loss 0.00561687\n", + "2019-02-18 20:07:15,094 epoch 31 - iter 156/526 - loss 0.00549186\n", + "2019-02-18 20:07:53,514 epoch 31 - iter 208/526 - loss 0.00551414\n", + "2019-02-18 20:08:28,911 epoch 31 - iter 260/526 - loss 0.00549868\n", + "2019-02-18 20:09:08,379 epoch 31 - iter 312/526 - loss 0.00542240\n", + "2019-02-18 20:09:46,399 epoch 31 - iter 364/526 - loss 0.00545813\n", + "2019-02-18 20:10:28,703 epoch 31 - iter 416/526 - loss 0.00535614\n", + "2019-02-18 20:11:06,818 epoch 31 - iter 468/526 - loss 0.00537679\n", + "2019-02-18 20:11:46,134 epoch 31 - iter 520/526 - loss 0.00537339\n", + "2019-02-18 20:11:49,636 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:11:49,638 EPOCH 31 done: loss 0.0054 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 20:12:27,148 DEV : loss 0.00631380 - f-score 0.9250 - acc 0.9250\n", + "2019-02-18 20:12:53,549 TEST : loss 0.00956621 - f-score 0.8728 - acc 0.8728\n", + "2019-02-18 20:13:04,619 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:13:05,446 epoch 32 - iter 0/526 - loss 0.00277344\n", + "2019-02-18 20:13:48,262 epoch 32 - iter 52/526 - loss 0.00480584\n", + "2019-02-18 20:14:28,197 epoch 32 - iter 104/526 - loss 0.00488942\n", + "2019-02-18 20:15:14,667 epoch 32 - iter 156/526 - loss 0.00496550\n", + "2019-02-18 20:15:54,196 epoch 32 - iter 208/526 - loss 0.00501320\n", + "2019-02-18 20:16:36,520 epoch 32 - iter 260/526 - loss 0.00514464\n", + "2019-02-18 20:17:19,796 epoch 32 - iter 312/526 - loss 0.00517199\n", + "2019-02-18 20:17:57,039 epoch 32 - iter 364/526 - loss 0.00514651\n", + "2019-02-18 20:18:33,410 epoch 32 - iter 416/526 - loss 0.00518220\n", + "2019-02-18 20:19:13,713 epoch 32 - iter 468/526 - loss 0.00522393\n", + "2019-02-18 20:19:55,510 epoch 32 - iter 520/526 - loss 0.00522841\n", + "2019-02-18 20:19:58,825 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:19:58,826 EPOCH 32 done: loss 0.0052 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 20:20:36,938 DEV : loss 0.00655561 - f-score 0.9165 - acc 0.9165\n", + "2019-02-18 20:21:02,225 TEST : loss 0.00874485 - f-score 0.8829 - acc 0.8829\n", + "2019-02-18 20:21:13,050 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:21:13,539 epoch 33 - iter 0/526 - loss 0.00345887\n", + "2019-02-18 20:21:53,421 epoch 33 - iter 52/526 - loss 0.00509555\n", + "2019-02-18 20:22:36,354 epoch 33 - iter 104/526 - loss 0.00513980\n", + "2019-02-18 20:23:17,252 epoch 33 - iter 156/526 - loss 0.00504405\n", + "2019-02-18 20:23:56,069 epoch 33 - iter 208/526 - loss 0.00506351\n", + "2019-02-18 20:24:40,131 epoch 33 - iter 260/526 - loss 0.00502177\n", + "2019-02-18 20:25:18,959 epoch 33 - iter 312/526 - loss 0.00496115\n", + "2019-02-18 20:25:56,059 epoch 33 - iter 364/526 - loss 0.00498400\n", + "2019-02-18 20:26:35,101 epoch 33 - iter 416/526 - loss 0.00503730\n", + "2019-02-18 20:27:10,064 epoch 33 - iter 468/526 - loss 0.00511903\n", + "2019-02-18 20:27:47,068 epoch 33 - iter 520/526 - loss 0.00506179\n", + "2019-02-18 20:27:50,715 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:27:50,716 EPOCH 33 done: loss 0.0051 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 20:28:26,073 DEV : loss 0.00671039 - f-score 0.9170 - acc 0.9170\n", + "2019-02-18 20:28:50,475 TEST : loss 0.00838385 - f-score 0.8958 - acc 0.8958\n", + "2019-02-18 20:29:01,331 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:29:02,799 epoch 34 - iter 0/526 - loss 0.00541468\n", + "2019-02-18 20:29:43,161 epoch 34 - iter 52/526 - loss 0.00535458\n", + "2019-02-18 20:30:24,871 epoch 34 - iter 104/526 - loss 0.00532681\n", + "2019-02-18 20:31:06,934 epoch 34 - iter 156/526 - loss 0.00517745\n", + "2019-02-18 20:31:46,657 epoch 34 - iter 208/526 - loss 0.00508750\n", + "2019-02-18 20:32:28,094 epoch 34 - iter 260/526 - loss 0.00506163\n", + "2019-02-18 20:33:07,706 epoch 34 - iter 312/526 - loss 0.00497305\n", + "2019-02-18 20:33:47,077 epoch 34 - iter 364/526 - loss 0.00493927\n", + "2019-02-18 20:34:28,584 epoch 34 - iter 416/526 - loss 0.00497704\n", + "2019-02-18 20:35:05,299 epoch 34 - iter 468/526 - loss 0.00500551\n", + "2019-02-18 20:35:41,709 epoch 34 - iter 520/526 - loss 0.00502267\n", + "2019-02-18 20:35:45,440 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:35:45,442 EPOCH 34 done: loss 0.0050 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 20:36:21,336 DEV : loss 0.00648914 - f-score 0.9215 - acc 0.9215\n", + "2019-02-18 20:36:45,359 TEST : loss 0.00947540 - f-score 0.8791 - acc 0.8791\n", + "2019-02-18 20:36:56,228 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:36:56,977 epoch 35 - iter 0/526 - loss 0.00254138\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 20:37:38,109 epoch 35 - iter 52/526 - loss 0.00486626\n", + "2019-02-18 20:38:21,944 epoch 35 - iter 104/526 - loss 0.00464931\n", + "2019-02-18 20:39:02,476 epoch 35 - iter 156/526 - loss 0.00467166\n", + "2019-02-18 20:39:39,040 epoch 35 - iter 208/526 - loss 0.00458144\n", + "2019-02-18 20:40:20,064 epoch 35 - iter 260/526 - loss 0.00466519\n", + "2019-02-18 20:40:59,534 epoch 35 - iter 312/526 - loss 0.00473275\n", + "2019-02-18 20:41:39,710 epoch 35 - iter 364/526 - loss 0.00480266\n", + "2019-02-18 20:42:17,946 epoch 35 - iter 416/526 - loss 0.00478740\n", + "2019-02-18 20:42:56,209 epoch 35 - iter 468/526 - loss 0.00478709\n", + "2019-02-18 20:43:38,886 epoch 35 - iter 520/526 - loss 0.00480185\n", + "2019-02-18 20:43:43,255 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:43:43,256 EPOCH 35 done: loss 0.0048 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 20:44:20,730 DEV : loss 0.00762835 - f-score 0.9055 - acc 0.9055\n", + "2019-02-18 20:44:46,691 TEST : loss 0.01265931 - f-score 0.8356 - acc 0.8356\n", + "2019-02-18 20:44:57,503 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:44:58,606 epoch 36 - iter 0/526 - loss 0.00431249\n", + "2019-02-18 20:45:40,307 epoch 36 - iter 52/526 - loss 0.00446975\n", + "2019-02-18 20:46:18,418 epoch 36 - iter 104/526 - loss 0.00485159\n", + "2019-02-18 20:46:54,950 epoch 36 - iter 156/526 - loss 0.00497521\n", + "2019-02-18 20:47:34,670 epoch 36 - iter 208/526 - loss 0.00486131\n", + "2019-02-18 20:48:13,052 epoch 36 - iter 260/526 - loss 0.00486605\n", + "2019-02-18 20:48:58,815 epoch 36 - iter 312/526 - loss 0.00487960\n", + "2019-02-18 20:49:40,770 epoch 36 - iter 364/526 - loss 0.00486963\n", + "2019-02-18 20:50:21,572 epoch 36 - iter 416/526 - loss 0.00491666\n", + "2019-02-18 20:51:11,050 epoch 36 - iter 468/526 - loss 0.00499552\n", + "2019-02-18 20:51:51,037 epoch 36 - iter 520/526 - loss 0.00495299\n", + "2019-02-18 20:51:54,586 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:51:54,587 EPOCH 36 done: loss 0.0050 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 20:52:31,926 DEV : loss 0.00754723 - f-score 0.9080 - acc 0.9080\n", + "2019-02-18 20:53:03,083 TEST : loss 0.00890553 - f-score 0.8815 - acc 0.8815\n", + "2019-02-18 20:53:03,085 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 20:53:03,598 epoch 37 - iter 0/526 - loss 0.00611407\n", + "2019-02-18 20:53:43,608 epoch 37 - iter 52/526 - loss 0.00438129\n", + "2019-02-18 20:54:26,584 epoch 37 - iter 104/526 - loss 0.00431170\n", + "2019-02-18 20:55:09,212 epoch 37 - iter 156/526 - loss 0.00440844\n", + "2019-02-18 20:55:51,370 epoch 37 - iter 208/526 - loss 0.00457593\n", + "2019-02-18 20:56:30,692 epoch 37 - iter 260/526 - loss 0.00450663\n", + "2019-02-18 20:57:09,351 epoch 37 - iter 312/526 - loss 0.00457339\n", + "2019-02-18 20:57:53,149 epoch 37 - iter 364/526 - loss 0.00459854\n", + "2019-02-18 20:58:36,870 epoch 37 - iter 416/526 - loss 0.00471017\n", + "2019-02-18 20:59:18,389 epoch 37 - iter 468/526 - loss 0.00472581\n", + "2019-02-18 21:00:00,388 epoch 37 - iter 520/526 - loss 0.00476817\n", + "2019-02-18 21:00:05,075 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:00:05,078 EPOCH 37 done: loss 0.0048 - lr 0.1000 - bad epochs 1\n", + "2019-02-18 21:00:43,382 DEV : loss 0.00671968 - f-score 0.9260 - acc 0.9260\n", + "2019-02-18 21:01:09,261 TEST : loss 0.00935920 - f-score 0.8881 - acc 0.8881\n", + "2019-02-18 21:01:20,202 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:01:20,954 epoch 38 - iter 0/526 - loss 0.00125326\n", + "2019-02-18 21:01:59,088 epoch 38 - iter 52/526 - loss 0.00482854\n", + "2019-02-18 21:02:42,063 epoch 38 - iter 104/526 - loss 0.00473240\n", + "2019-02-18 21:03:26,364 epoch 38 - iter 156/526 - loss 0.00453341\n", + "2019-02-18 21:04:10,695 epoch 38 - iter 208/526 - loss 0.00471422\n", + "2019-02-18 21:04:54,233 epoch 38 - iter 260/526 - loss 0.00461908\n", + "2019-02-18 21:05:33,796 epoch 38 - iter 312/526 - loss 0.00458001\n", + "2019-02-18 21:06:17,393 epoch 38 - iter 364/526 - loss 0.00454397\n", + "2019-02-18 21:06:57,175 epoch 38 - iter 416/526 - loss 0.00460031\n", + "2019-02-18 21:07:37,441 epoch 38 - iter 468/526 - loss 0.00455714\n", + "2019-02-18 21:08:18,851 epoch 38 - iter 520/526 - loss 0.00466265\n", + "2019-02-18 21:08:22,178 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:08:22,179 EPOCH 38 done: loss 0.0047 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 21:08:59,680 DEV : loss 0.00658262 - f-score 0.9270 - acc 0.9270\n", + "2019-02-18 21:09:24,624 TEST : loss 0.00904336 - f-score 0.8834 - acc 0.8834\n", + "2019-02-18 21:09:35,606 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:09:36,748 epoch 39 - iter 0/526 - loss 0.00322293\n", + "2019-02-18 21:10:28,051 epoch 39 - iter 52/526 - loss 0.00477019\n", + "2019-02-18 21:11:15,955 epoch 39 - iter 104/526 - loss 0.00452314\n", + "2019-02-18 21:11:53,786 epoch 39 - iter 156/526 - loss 0.00428137\n", + "2019-02-18 21:12:30,426 epoch 39 - iter 208/526 - loss 0.00421742\n", + "2019-02-18 21:13:12,313 epoch 39 - iter 260/526 - loss 0.00418670\n", + "2019-02-18 21:13:54,716 epoch 39 - iter 312/526 - loss 0.00430061\n", + "2019-02-18 21:14:36,006 epoch 39 - iter 364/526 - loss 0.00436528\n", + "2019-02-18 21:15:14,603 epoch 39 - iter 416/526 - loss 0.00444931\n", + "2019-02-18 21:15:58,896 epoch 39 - iter 468/526 - loss 0.00445602\n", + "2019-02-18 21:16:42,371 epoch 39 - iter 520/526 - loss 0.00445684\n", + "2019-02-18 21:16:48,178 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:16:48,182 EPOCH 39 done: loss 0.0044 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 21:17:25,892 DEV : loss 0.00689131 - f-score 0.9300 - acc 0.9300\n", + "2019-02-18 21:17:51,974 TEST : loss 0.01112639 - f-score 0.8762 - acc 0.8762\n", + "2019-02-18 21:18:02,883 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:18:04,363 epoch 40 - iter 0/526 - loss 0.00486721\n", + "2019-02-18 21:18:51,887 epoch 40 - iter 52/526 - loss 0.00416534\n", + "2019-02-18 21:19:33,940 epoch 40 - iter 104/526 - loss 0.00454180\n", + "2019-02-18 21:20:21,834 epoch 40 - iter 156/526 - loss 0.00440060\n", + "2019-02-18 21:21:02,604 epoch 40 - iter 208/526 - loss 0.00441413\n", + "2019-02-18 21:21:43,965 epoch 40 - iter 260/526 - loss 0.00444192\n", + "2019-02-18 21:22:22,555 epoch 40 - iter 312/526 - loss 0.00451867\n", + "2019-02-18 21:23:02,929 epoch 40 - iter 364/526 - loss 0.00446207\n", + "2019-02-18 21:23:42,956 epoch 40 - iter 416/526 - loss 0.00453132\n", + "2019-02-18 21:24:24,143 epoch 40 - iter 468/526 - loss 0.00451663\n", + "2019-02-18 21:25:01,295 epoch 40 - iter 520/526 - loss 0.00452041\n", + "2019-02-18 21:25:05,192 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:25:05,193 EPOCH 40 done: loss 0.0045 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 21:25:40,220 DEV : loss 0.00639352 - f-score 0.9250 - acc 0.9250\n", + "2019-02-18 21:26:06,024 TEST : loss 0.00922748 - f-score 0.8815 - acc 0.8815\n", + "2019-02-18 21:26:06,027 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:26:06,835 epoch 41 - iter 0/526 - loss 0.00359781\n", + "2019-02-18 21:26:48,678 epoch 41 - iter 52/526 - loss 0.00427996\n", + "2019-02-18 21:27:28,459 epoch 41 - iter 104/526 - loss 0.00410419\n", + "2019-02-18 21:28:16,896 epoch 41 - iter 156/526 - loss 0.00404274\n", + "2019-02-18 21:29:06,033 epoch 41 - iter 208/526 - loss 0.00410938\n", + "2019-02-18 21:29:50,899 epoch 41 - iter 260/526 - loss 0.00426882\n", + "2019-02-18 21:30:31,612 epoch 41 - iter 312/526 - loss 0.00430495\n", + "2019-02-18 21:31:13,656 epoch 41 - iter 364/526 - loss 0.00435696\n", + "2019-02-18 21:31:59,596 epoch 41 - iter 416/526 - loss 0.00437778\n", + "2019-02-18 21:32:36,157 epoch 41 - iter 468/526 - loss 0.00433847\n", + "2019-02-18 21:33:23,477 epoch 41 - iter 520/526 - loss 0.00439062\n", + "2019-02-18 21:33:27,803 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:33:27,804 EPOCH 41 done: loss 0.0044 - lr 0.1000 - bad epochs 1\n", + "2019-02-18 21:34:17,359 DEV : loss 0.00646965 - f-score 0.9235 - acc 0.9235\n", + "2019-02-18 21:34:51,500 TEST : loss 0.00933895 - f-score 0.8848 - acc 0.8848\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 21:35:02,397 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:35:03,260 epoch 42 - iter 0/526 - loss 0.00241166\n", + "2019-02-18 21:35:43,394 epoch 42 - iter 52/526 - loss 0.00424583\n", + "2019-02-18 21:36:27,727 epoch 42 - iter 104/526 - loss 0.00425751\n", + "2019-02-18 21:37:11,781 epoch 42 - iter 156/526 - loss 0.00417415\n", + "2019-02-18 21:37:51,732 epoch 42 - iter 208/526 - loss 0.00429902\n", + "2019-02-18 21:38:30,073 epoch 42 - iter 260/526 - loss 0.00425840\n", + "2019-02-18 21:39:09,222 epoch 42 - iter 312/526 - loss 0.00420073\n", + "2019-02-18 21:39:50,656 epoch 42 - iter 364/526 - loss 0.00419647\n", + "2019-02-18 21:40:31,932 epoch 42 - iter 416/526 - loss 0.00425195\n", + "2019-02-18 21:41:14,060 epoch 42 - iter 468/526 - loss 0.00428688\n", + "2019-02-18 21:41:57,861 epoch 42 - iter 520/526 - loss 0.00423423\n", + "2019-02-18 21:42:01,321 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:42:01,322 EPOCH 42 done: loss 0.0042 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 21:42:38,340 DEV : loss 0.00665304 - f-score 0.9210 - acc 0.9210\n", + "2019-02-18 21:43:03,507 TEST : loss 0.00993264 - f-score 0.8752 - acc 0.8752\n", + "2019-02-18 21:43:14,522 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:43:15,281 epoch 43 - iter 0/526 - loss 0.00307408\n", + "2019-02-18 21:43:55,531 epoch 43 - iter 52/526 - loss 0.00420892\n", + "2019-02-18 21:44:36,082 epoch 43 - iter 104/526 - loss 0.00416528\n", + "2019-02-18 21:45:17,762 epoch 43 - iter 156/526 - loss 0.00428778\n", + "2019-02-18 21:46:00,216 epoch 43 - iter 208/526 - loss 0.00425751\n", + "2019-02-18 21:46:37,180 epoch 43 - iter 260/526 - loss 0.00421303\n", + "2019-02-18 21:47:19,888 epoch 43 - iter 312/526 - loss 0.00413917\n", + "2019-02-18 21:47:59,632 epoch 43 - iter 364/526 - loss 0.00405976\n", + "2019-02-18 21:48:37,353 epoch 43 - iter 416/526 - loss 0.00410515\n", + "2019-02-18 21:49:15,754 epoch 43 - iter 468/526 - loss 0.00406046\n", + "2019-02-18 21:49:57,043 epoch 43 - iter 520/526 - loss 0.00404571\n", + "2019-02-18 21:50:01,849 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:50:01,851 EPOCH 43 done: loss 0.0041 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 21:50:40,360 DEV : loss 0.00663564 - f-score 0.9235 - acc 0.9235\n", + "2019-02-18 21:51:07,131 TEST : loss 0.01030743 - f-score 0.8772 - acc 0.8772\n", + "2019-02-18 21:51:18,209 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:51:19,306 epoch 44 - iter 0/526 - loss 0.00401964\n", + "2019-02-18 21:51:58,811 epoch 44 - iter 52/526 - loss 0.00365249\n", + "2019-02-18 21:52:40,077 epoch 44 - iter 104/526 - loss 0.00364939\n", + "2019-02-18 21:53:16,716 epoch 44 - iter 156/526 - loss 0.00394233\n", + "2019-02-18 21:53:53,207 epoch 44 - iter 208/526 - loss 0.00379948\n", + "2019-02-18 21:54:35,587 epoch 44 - iter 260/526 - loss 0.00382793\n", + "2019-02-18 21:55:20,449 epoch 44 - iter 312/526 - loss 0.00389868\n", + "2019-02-18 21:56:02,783 epoch 44 - iter 364/526 - loss 0.00399273\n", + "2019-02-18 21:56:43,280 epoch 44 - iter 416/526 - loss 0.00399537\n", + "2019-02-18 21:57:21,843 epoch 44 - iter 468/526 - loss 0.00396334\n", + "2019-02-18 21:58:02,906 epoch 44 - iter 520/526 - loss 0.00393572\n", + "2019-02-18 21:58:06,344 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:58:06,345 EPOCH 44 done: loss 0.0039 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 21:58:42,066 DEV : loss 0.00663930 - f-score 0.9295 - acc 0.9295\n", + "2019-02-18 21:59:05,664 TEST : loss 0.01006414 - f-score 0.8853 - acc 0.8853\n", + "2019-02-18 21:59:16,482 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 21:59:17,006 epoch 45 - iter 0/526 - loss 0.00515019\n", + "2019-02-18 22:00:00,137 epoch 45 - iter 52/526 - loss 0.00369945\n", + "2019-02-18 22:00:38,321 epoch 45 - iter 104/526 - loss 0.00400419\n", + "2019-02-18 22:01:22,699 epoch 45 - iter 156/526 - loss 0.00412338\n", + "2019-02-18 22:02:02,133 epoch 45 - iter 208/526 - loss 0.00403188\n", + "2019-02-18 22:02:40,725 epoch 45 - iter 260/526 - loss 0.00408112\n", + "2019-02-18 22:03:20,566 epoch 45 - iter 312/526 - loss 0.00400799\n", + "2019-02-18 22:03:58,158 epoch 45 - iter 364/526 - loss 0.00400158\n", + "2019-02-18 22:04:39,585 epoch 45 - iter 416/526 - loss 0.00397888\n", + "2019-02-18 22:05:21,017 epoch 45 - iter 468/526 - loss 0.00402013\n", + "2019-02-18 22:06:00,658 epoch 45 - iter 520/526 - loss 0.00401658\n", + "2019-02-18 22:06:04,127 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:06:04,127 EPOCH 45 done: loss 0.0040 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 22:06:42,391 DEV : loss 0.00681305 - f-score 0.9185 - acc 0.9185\n", + "2019-02-18 22:07:07,580 TEST : loss 0.01078089 - f-score 0.8705 - acc 0.8705\n", + "2019-02-18 22:07:07,584 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:07:08,113 epoch 46 - iter 0/526 - loss 0.00238467\n", + "2019-02-18 22:07:46,985 epoch 46 - iter 52/526 - loss 0.00327575\n", + "2019-02-18 22:08:27,357 epoch 46 - iter 104/526 - loss 0.00342690\n", + "2019-02-18 22:09:09,071 epoch 46 - iter 156/526 - loss 0.00349763\n", + "2019-02-18 22:09:55,669 epoch 46 - iter 208/526 - loss 0.00357279\n", + "2019-02-18 22:10:44,695 epoch 46 - iter 260/526 - loss 0.00359622\n", + "2019-02-18 22:11:24,020 epoch 46 - iter 312/526 - loss 0.00365794\n", + "2019-02-18 22:12:05,325 epoch 46 - iter 364/526 - loss 0.00371609\n", + "2019-02-18 22:12:44,729 epoch 46 - iter 416/526 - loss 0.00374051\n", + "2019-02-18 22:13:23,625 epoch 46 - iter 468/526 - loss 0.00380232\n", + "2019-02-18 22:14:04,731 epoch 46 - iter 520/526 - loss 0.00385406\n", + "2019-02-18 22:14:09,014 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:14:09,015 EPOCH 46 done: loss 0.0038 - lr 0.1000 - bad epochs 1\n", + "2019-02-18 22:14:45,284 DEV : loss 0.00684360 - f-score 0.9260 - acc 0.9260\n", + "2019-02-18 22:15:10,366 TEST : loss 0.00988535 - f-score 0.8858 - acc 0.8858\n", + "2019-02-18 22:15:21,421 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:15:22,113 epoch 47 - iter 0/526 - loss 0.00661816\n", + "2019-02-18 22:16:02,109 epoch 47 - iter 52/526 - loss 0.00370134\n", + "2019-02-18 22:16:44,003 epoch 47 - iter 104/526 - loss 0.00378943\n", + "2019-02-18 22:17:26,430 epoch 47 - iter 156/526 - loss 0.00380121\n", + "2019-02-18 22:18:10,539 epoch 47 - iter 208/526 - loss 0.00399171\n", + "2019-02-18 22:18:50,717 epoch 47 - iter 260/526 - loss 0.00395213\n", + "2019-02-18 22:19:33,640 epoch 47 - iter 312/526 - loss 0.00392926\n", + "2019-02-18 22:20:13,243 epoch 47 - iter 364/526 - loss 0.00392242\n", + "2019-02-18 22:20:54,344 epoch 47 - iter 416/526 - loss 0.00388569\n", + "2019-02-18 22:21:33,885 epoch 47 - iter 468/526 - loss 0.00387582\n", + "2019-02-18 22:22:17,347 epoch 47 - iter 520/526 - loss 0.00389832\n", + "2019-02-18 22:22:20,526 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:22:20,529 EPOCH 47 done: loss 0.0039 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 22:22:56,845 DEV : loss 0.00683776 - f-score 0.9245 - acc 0.9245\n", + "2019-02-18 22:23:20,835 TEST : loss 0.00988217 - f-score 0.8881 - acc 0.8881\n", + "2019-02-18 22:23:20,839 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:23:21,679 epoch 48 - iter 0/526 - loss 0.00374591\n", + "2019-02-18 22:23:59,756 epoch 48 - iter 52/526 - loss 0.00371948\n", + "2019-02-18 22:24:39,563 epoch 48 - iter 104/526 - loss 0.00373221\n", + "2019-02-18 22:25:19,607 epoch 48 - iter 156/526 - loss 0.00355817\n", + "2019-02-18 22:26:00,138 epoch 48 - iter 208/526 - loss 0.00367312\n", + "2019-02-18 22:26:41,645 epoch 48 - iter 260/526 - loss 0.00361000\n", + "2019-02-18 22:27:24,490 epoch 48 - iter 312/526 - loss 0.00367510\n", + "2019-02-18 22:28:09,611 epoch 48 - iter 364/526 - loss 0.00372203\n", + "2019-02-18 22:28:48,462 epoch 48 - iter 416/526 - loss 0.00374720\n", + "2019-02-18 22:29:29,260 epoch 48 - iter 468/526 - loss 0.00377810\n", + "2019-02-18 22:30:06,519 epoch 48 - iter 520/526 - loss 0.00380874\n", + "2019-02-18 22:30:10,366 ----------------------------------------------------------------------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 22:30:10,368 EPOCH 48 done: loss 0.0038 - lr 0.1000 - bad epochs 1\n", + "2019-02-18 22:30:46,194 DEV : loss 0.00711772 - f-score 0.9185 - acc 0.9185\n", + "2019-02-18 22:31:10,684 TEST : loss 0.01182052 - f-score 0.8728 - acc 0.8728\n", + "2019-02-18 22:31:21,586 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:31:22,504 epoch 49 - iter 0/526 - loss 0.00432880\n", + "2019-02-18 22:32:02,952 epoch 49 - iter 52/526 - loss 0.00273727\n", + "2019-02-18 22:32:44,264 epoch 49 - iter 104/526 - loss 0.00330484\n", + "2019-02-18 22:33:22,541 epoch 49 - iter 156/526 - loss 0.00344824\n", + "2019-02-18 22:34:03,754 epoch 49 - iter 208/526 - loss 0.00345334\n", + "2019-02-18 22:34:46,894 epoch 49 - iter 260/526 - loss 0.00351180\n", + "2019-02-18 22:35:28,065 epoch 49 - iter 312/526 - loss 0.00352594\n", + "2019-02-18 22:36:08,642 epoch 49 - iter 364/526 - loss 0.00349992\n", + "2019-02-18 22:36:52,745 epoch 49 - iter 416/526 - loss 0.00349705\n", + "2019-02-18 22:37:33,047 epoch 49 - iter 468/526 - loss 0.00346704\n", + "2019-02-18 22:38:11,296 epoch 49 - iter 520/526 - loss 0.00349617\n", + "2019-02-18 22:38:14,951 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:38:14,952 EPOCH 49 done: loss 0.0035 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 22:38:53,435 DEV : loss 0.00707259 - f-score 0.9195 - acc 0.9195\n", + "2019-02-18 22:39:19,262 TEST : loss 0.00947260 - f-score 0.8920 - acc 0.8920\n", + "2019-02-18 22:39:30,191 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:39:30,977 epoch 50 - iter 0/526 - loss 0.00229934\n", + "2019-02-18 22:40:13,327 epoch 50 - iter 52/526 - loss 0.00319553\n", + "2019-02-18 22:40:50,404 epoch 50 - iter 104/526 - loss 0.00313789\n", + "2019-02-18 22:41:30,296 epoch 50 - iter 156/526 - loss 0.00327911\n", + "2019-02-18 22:42:13,514 epoch 50 - iter 208/526 - loss 0.00326068\n", + "2019-02-18 22:42:55,274 epoch 50 - iter 260/526 - loss 0.00335144\n", + "2019-02-18 22:43:34,746 epoch 50 - iter 312/526 - loss 0.00340644\n", + "2019-02-18 22:44:13,033 epoch 50 - iter 364/526 - loss 0.00346751\n", + "2019-02-18 22:44:52,440 epoch 50 - iter 416/526 - loss 0.00347848\n", + "2019-02-18 22:45:38,279 epoch 50 - iter 468/526 - loss 0.00351688\n", + "2019-02-18 22:46:17,965 epoch 50 - iter 520/526 - loss 0.00345608\n", + "2019-02-18 22:46:21,432 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:46:21,434 EPOCH 50 done: loss 0.0035 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 22:46:58,073 DEV : loss 0.00797859 - f-score 0.9170 - acc 0.9170\n", + "2019-02-18 22:47:24,603 TEST : loss 0.00954126 - f-score 0.8915 - acc 0.8915\n", + "2019-02-18 22:47:35,984 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:47:36,714 epoch 51 - iter 0/526 - loss 0.00388148\n", + "2019-02-18 22:48:16,050 epoch 51 - iter 52/526 - loss 0.00375175\n", + "2019-02-18 22:48:55,596 epoch 51 - iter 104/526 - loss 0.00328642\n", + "2019-02-18 22:49:44,875 epoch 51 - iter 156/526 - loss 0.00330505\n", + "2019-02-18 22:50:25,946 epoch 51 - iter 208/526 - loss 0.00338960\n", + "2019-02-18 22:51:06,464 epoch 51 - iter 260/526 - loss 0.00339443\n", + "2019-02-18 22:51:48,620 epoch 51 - iter 312/526 - loss 0.00343139\n", + "2019-02-18 22:52:33,731 epoch 51 - iter 364/526 - loss 0.00344611\n", + "2019-02-18 22:53:17,798 epoch 51 - iter 416/526 - loss 0.00346570\n", + "2019-02-18 22:54:02,962 epoch 51 - iter 468/526 - loss 0.00350265\n", + "2019-02-18 22:54:45,335 epoch 51 - iter 520/526 - loss 0.00352374\n", + "2019-02-18 22:54:48,980 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:54:48,982 EPOCH 51 done: loss 0.0035 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 22:55:27,264 DEV : loss 0.00934036 - f-score 0.9055 - acc 0.9055\n", + "2019-02-18 22:55:53,256 TEST : loss 0.01036092 - f-score 0.8867 - acc 0.8867\n", + "2019-02-18 22:55:53,259 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 22:55:53,909 epoch 52 - iter 0/526 - loss 0.00092397\n", + "2019-02-18 22:56:36,639 epoch 52 - iter 52/526 - loss 0.00343864\n", + "2019-02-18 22:57:21,556 epoch 52 - iter 104/526 - loss 0.00325611\n", + "2019-02-18 22:58:03,737 epoch 52 - iter 156/526 - loss 0.00335475\n", + "2019-02-18 22:58:48,484 epoch 52 - iter 208/526 - loss 0.00335209\n", + "2019-02-18 22:59:33,400 epoch 52 - iter 260/526 - loss 0.00340309\n", + "2019-02-18 23:00:15,874 epoch 52 - iter 312/526 - loss 0.00334400\n", + "2019-02-18 23:00:58,535 epoch 52 - iter 364/526 - loss 0.00336129\n", + "2019-02-18 23:01:43,574 epoch 52 - iter 416/526 - loss 0.00346382\n", + "2019-02-18 23:02:25,829 epoch 52 - iter 468/526 - loss 0.00342028\n", + "2019-02-18 23:03:06,531 epoch 52 - iter 520/526 - loss 0.00345363\n", + "2019-02-18 23:03:10,190 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:03:10,192 EPOCH 52 done: loss 0.0035 - lr 0.1000 - bad epochs 1\n", + "2019-02-18 23:03:49,447 DEV : loss 0.00713309 - f-score 0.9180 - acc 0.9180\n", + "2019-02-18 23:04:15,788 TEST : loss 0.01041376 - f-score 0.8834 - acc 0.8834\n", + "2019-02-18 23:04:26,668 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:04:27,775 epoch 53 - iter 0/526 - loss 0.00372904\n", + "2019-02-18 23:05:08,489 epoch 53 - iter 52/526 - loss 0.00302973\n", + "2019-02-18 23:05:49,892 epoch 53 - iter 104/526 - loss 0.00322269\n", + "2019-02-18 23:06:29,050 epoch 53 - iter 156/526 - loss 0.00317444\n", + "2019-02-18 23:07:12,329 epoch 53 - iter 208/526 - loss 0.00306875\n", + "2019-02-18 23:07:51,825 epoch 53 - iter 260/526 - loss 0.00316483\n", + "2019-02-18 23:08:30,141 epoch 53 - iter 312/526 - loss 0.00323263\n", + "2019-02-18 23:09:07,720 epoch 53 - iter 364/526 - loss 0.00326291\n", + "2019-02-18 23:09:53,126 epoch 53 - iter 416/526 - loss 0.00327111\n", + "2019-02-18 23:10:29,478 epoch 53 - iter 468/526 - loss 0.00329684\n", + "2019-02-18 23:11:09,776 epoch 53 - iter 520/526 - loss 0.00333445\n", + "2019-02-18 23:11:13,475 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:11:13,476 EPOCH 53 done: loss 0.0033 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 23:11:49,293 DEV : loss 0.00780328 - f-score 0.9140 - acc 0.9140\n", + "2019-02-18 23:12:14,305 TEST : loss 0.00930190 - f-score 0.8967 - acc 0.8967\n", + "2019-02-18 23:12:25,234 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:12:25,728 epoch 54 - iter 0/526 - loss 0.00407488\n", + "2019-02-18 23:13:07,861 epoch 54 - iter 52/526 - loss 0.00330168\n", + "2019-02-18 23:13:51,577 epoch 54 - iter 104/526 - loss 0.00303882\n", + "2019-02-18 23:14:29,206 epoch 54 - iter 156/526 - loss 0.00310417\n", + "2019-02-18 23:15:08,709 epoch 54 - iter 208/526 - loss 0.00313229\n", + "2019-02-18 23:15:51,484 epoch 54 - iter 260/526 - loss 0.00303136\n", + "2019-02-18 23:16:31,666 epoch 54 - iter 312/526 - loss 0.00297755\n", + "2019-02-18 23:17:10,414 epoch 54 - iter 364/526 - loss 0.00300270\n", + "2019-02-18 23:17:50,981 epoch 54 - iter 416/526 - loss 0.00304721\n", + "2019-02-18 23:18:34,679 epoch 54 - iter 468/526 - loss 0.00310522\n", + "2019-02-18 23:19:15,449 epoch 54 - iter 520/526 - loss 0.00318497\n", + "2019-02-18 23:19:18,679 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:19:18,680 EPOCH 54 done: loss 0.0032 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 23:19:55,082 DEV : loss 0.00677184 - f-score 0.9260 - acc 0.9260\n", + "2019-02-18 23:20:19,809 TEST : loss 0.00938160 - f-score 0.8896 - acc 0.8896\n", + "2019-02-18 23:20:30,772 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:20:31,800 epoch 55 - iter 0/526 - loss 0.00073507\n", + "2019-02-18 23:21:11,730 epoch 55 - iter 52/526 - loss 0.00248448\n", + "2019-02-18 23:21:49,714 epoch 55 - iter 104/526 - loss 0.00279474\n", + "2019-02-18 23:22:33,708 epoch 55 - iter 156/526 - loss 0.00317448\n", + "2019-02-18 23:23:15,418 epoch 55 - iter 208/526 - loss 0.00318162\n", + "2019-02-18 23:23:57,558 epoch 55 - iter 260/526 - loss 0.00317461\n", + "2019-02-18 23:24:36,509 epoch 55 - iter 312/526 - loss 0.00325967\n", + "2019-02-18 23:25:22,885 epoch 55 - iter 364/526 - loss 0.00322780\n", + "2019-02-18 23:26:02,505 epoch 55 - iter 416/526 - loss 0.00324162\n", + "2019-02-18 23:26:44,647 epoch 55 - iter 468/526 - loss 0.00324057\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-18 23:27:31,149 epoch 55 - iter 520/526 - loss 0.00325132\n", + "2019-02-18 23:27:35,224 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:27:35,225 EPOCH 55 done: loss 0.0032 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 23:28:25,572 DEV : loss 0.00798117 - f-score 0.9240 - acc 0.9240\n", + "2019-02-18 23:28:52,407 TEST : loss 0.01260192 - f-score 0.8752 - acc 0.8752\n", + "2019-02-18 23:28:52,410 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:28:53,168 epoch 56 - iter 0/526 - loss 0.00118866\n", + "2019-02-18 23:29:33,703 epoch 56 - iter 52/526 - loss 0.00245853\n", + "2019-02-18 23:30:17,666 epoch 56 - iter 104/526 - loss 0.00264936\n", + "2019-02-18 23:30:56,443 epoch 56 - iter 156/526 - loss 0.00287769\n", + "2019-02-18 23:31:37,056 epoch 56 - iter 208/526 - loss 0.00289000\n", + "2019-02-18 23:32:16,691 epoch 56 - iter 260/526 - loss 0.00300595\n", + "2019-02-18 23:32:56,661 epoch 56 - iter 312/526 - loss 0.00290452\n", + "2019-02-18 23:33:48,151 epoch 56 - iter 364/526 - loss 0.00288159\n", + "2019-02-18 23:34:28,956 epoch 56 - iter 416/526 - loss 0.00298162\n", + "2019-02-18 23:35:09,728 epoch 56 - iter 468/526 - loss 0.00305390\n", + "2019-02-18 23:35:52,027 epoch 56 - iter 520/526 - loss 0.00306228\n", + "2019-02-18 23:35:55,262 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:35:55,263 EPOCH 56 done: loss 0.0031 - lr 0.1000 - bad epochs 1\n", + "2019-02-18 23:36:31,906 DEV : loss 0.00798300 - f-score 0.9230 - acc 0.9230\n", + "2019-02-18 23:36:56,797 TEST : loss 0.01210687 - f-score 0.8767 - acc 0.8767\n", + "2019-02-18 23:37:08,047 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:37:08,780 epoch 57 - iter 0/526 - loss 0.00542540\n", + "2019-02-18 23:37:50,816 epoch 57 - iter 52/526 - loss 0.00316473\n", + "2019-02-18 23:38:32,956 epoch 57 - iter 104/526 - loss 0.00287327\n", + "2019-02-18 23:39:17,958 epoch 57 - iter 156/526 - loss 0.00288073\n", + "2019-02-18 23:40:01,280 epoch 57 - iter 208/526 - loss 0.00287998\n", + "2019-02-18 23:40:43,286 epoch 57 - iter 260/526 - loss 0.00288271\n", + "2019-02-18 23:41:24,718 epoch 57 - iter 312/526 - loss 0.00289988\n", + "2019-02-18 23:42:05,496 epoch 57 - iter 364/526 - loss 0.00297501\n", + "2019-02-18 23:42:45,062 epoch 57 - iter 416/526 - loss 0.00304170\n", + "2019-02-18 23:43:23,455 epoch 57 - iter 468/526 - loss 0.00299723\n", + "2019-02-18 23:44:09,098 epoch 57 - iter 520/526 - loss 0.00304574\n", + "2019-02-18 23:44:12,583 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:44:12,585 EPOCH 57 done: loss 0.0031 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 23:44:51,040 DEV : loss 0.00787286 - f-score 0.9205 - acc 0.9205\n", + "2019-02-18 23:45:17,592 TEST : loss 0.01184142 - f-score 0.8834 - acc 0.8834\n", + "2019-02-18 23:45:28,686 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:45:29,418 epoch 58 - iter 0/526 - loss 0.00108189\n", + "2019-02-18 23:46:04,356 epoch 58 - iter 52/526 - loss 0.00370117\n", + "2019-02-18 23:46:40,339 epoch 58 - iter 104/526 - loss 0.00309483\n", + "2019-02-18 23:47:18,333 epoch 58 - iter 156/526 - loss 0.00312497\n", + "2019-02-18 23:48:01,569 epoch 58 - iter 208/526 - loss 0.00322787\n", + "2019-02-18 23:48:46,501 epoch 58 - iter 260/526 - loss 0.00310435\n", + "2019-02-18 23:49:28,123 epoch 58 - iter 312/526 - loss 0.00299135\n", + "2019-02-18 23:50:13,803 epoch 58 - iter 364/526 - loss 0.00300436\n", + "2019-02-18 23:50:57,020 epoch 58 - iter 416/526 - loss 0.00302056\n", + "2019-02-18 23:51:35,830 epoch 58 - iter 468/526 - loss 0.00298431\n", + "2019-02-18 23:52:17,890 epoch 58 - iter 520/526 - loss 0.00295317\n", + "2019-02-18 23:52:22,014 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:52:22,015 EPOCH 58 done: loss 0.0029 - lr 0.1000 - bad epochs 0\n", + "2019-02-18 23:52:57,624 DEV : loss 0.00805508 - f-score 0.9205 - acc 0.9205\n", + "2019-02-18 23:53:22,376 TEST : loss 0.01032458 - f-score 0.8910 - acc 0.8910\n", + "2019-02-18 23:53:33,289 ----------------------------------------------------------------------------------------------------\n", + "2019-02-18 23:53:34,149 epoch 59 - iter 0/526 - loss 0.00282102\n", + "2019-02-18 23:54:15,747 epoch 59 - iter 52/526 - loss 0.00278821\n", + "2019-02-18 23:54:56,560 epoch 59 - iter 104/526 - loss 0.00255563\n", + "2019-02-18 23:55:38,083 epoch 59 - iter 156/526 - loss 0.00272326\n", + "2019-02-18 23:56:18,717 epoch 59 - iter 208/526 - loss 0.00273410\n", + "2019-02-18 23:57:00,737 epoch 59 - iter 260/526 - loss 0.00276645\n", + "2019-02-18 23:57:41,298 epoch 59 - iter 312/526 - loss 0.00280639\n", + "2019-02-18 23:58:21,768 epoch 59 - iter 364/526 - loss 0.00279493\n", + "2019-02-18 23:59:04,079 epoch 59 - iter 416/526 - loss 0.00285703\n", + "2019-02-18 23:59:54,448 epoch 59 - iter 468/526 - loss 0.00288722\n", + "2019-02-19 00:00:38,109 epoch 59 - iter 520/526 - loss 0.00286601\n", + "2019-02-19 00:00:41,648 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:00:41,649 EPOCH 59 done: loss 0.0029 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 00:01:20,016 DEV : loss 0.00815735 - f-score 0.9240 - acc 0.9240\n", + "2019-02-19 00:01:47,344 TEST : loss 0.01191089 - f-score 0.8858 - acc 0.8858\n", + "2019-02-19 00:01:58,216 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:01:59,060 epoch 60 - iter 0/526 - loss 0.00610146\n", + "2019-02-19 00:02:38,283 epoch 60 - iter 52/526 - loss 0.00247116\n", + "2019-02-19 00:03:16,193 epoch 60 - iter 104/526 - loss 0.00231581\n", + "2019-02-19 00:03:57,802 epoch 60 - iter 156/526 - loss 0.00242107\n", + "2019-02-19 00:04:36,135 epoch 60 - iter 208/526 - loss 0.00257680\n", + "2019-02-19 00:05:15,773 epoch 60 - iter 260/526 - loss 0.00270869\n", + "2019-02-19 00:05:57,391 epoch 60 - iter 312/526 - loss 0.00273444\n", + "2019-02-19 00:06:38,909 epoch 60 - iter 364/526 - loss 0.00281719\n", + "2019-02-19 00:07:32,448 epoch 60 - iter 416/526 - loss 0.00278299\n", + "2019-02-19 00:08:16,093 epoch 60 - iter 468/526 - loss 0.00283406\n", + "2019-02-19 00:08:57,384 epoch 60 - iter 520/526 - loss 0.00283877\n", + "2019-02-19 00:09:01,990 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:09:01,991 EPOCH 60 done: loss 0.0028 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 00:09:40,495 DEV : loss 0.00791260 - f-score 0.9245 - acc 0.9245\n", + "2019-02-19 00:10:06,688 TEST : loss 0.01081203 - f-score 0.8924 - acc 0.8924\n", + "2019-02-19 00:10:17,925 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:10:18,810 epoch 61 - iter 0/526 - loss 0.00050923\n", + "2019-02-19 00:11:02,971 epoch 61 - iter 52/526 - loss 0.00260678\n", + "2019-02-19 00:11:42,612 epoch 61 - iter 104/526 - loss 0.00249397\n", + "2019-02-19 00:12:25,655 epoch 61 - iter 156/526 - loss 0.00242163\n", + "2019-02-19 00:13:10,206 epoch 61 - iter 208/526 - loss 0.00255181\n", + "2019-02-19 00:13:48,663 epoch 61 - iter 260/526 - loss 0.00265703\n", + "2019-02-19 00:14:26,656 epoch 61 - iter 312/526 - loss 0.00281335\n", + "2019-02-19 00:15:11,474 epoch 61 - iter 364/526 - loss 0.00280355\n", + "2019-02-19 00:15:59,311 epoch 61 - iter 416/526 - loss 0.00280971\n", + "2019-02-19 00:16:41,540 epoch 61 - iter 468/526 - loss 0.00276764\n", + "2019-02-19 00:17:26,352 epoch 61 - iter 520/526 - loss 0.00278377\n", + "2019-02-19 00:17:30,024 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:17:30,025 EPOCH 61 done: loss 0.0028 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 00:18:07,367 DEV : loss 0.00865918 - f-score 0.9195 - acc 0.9195\n", + "2019-02-19 00:18:33,441 TEST : loss 0.01084274 - f-score 0.8934 - acc 0.8934\n", + "2019-02-19 00:18:44,363 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:18:45,061 epoch 62 - iter 0/526 - loss 0.00034932\n", + "2019-02-19 00:19:25,300 epoch 62 - iter 52/526 - loss 0.00227827\n", + "2019-02-19 00:20:04,243 epoch 62 - iter 104/526 - loss 0.00282858\n", + "2019-02-19 00:20:46,248 epoch 62 - iter 156/526 - loss 0.00284658\n", + "2019-02-19 00:21:23,149 epoch 62 - iter 208/526 - loss 0.00293704\n", + "2019-02-19 00:22:03,143 epoch 62 - iter 260/526 - loss 0.00281066\n", + "2019-02-19 00:22:42,486 epoch 62 - iter 312/526 - loss 0.00285570\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-19 00:23:22,553 epoch 62 - iter 364/526 - loss 0.00278258\n", + "2019-02-19 00:24:04,943 epoch 62 - iter 416/526 - loss 0.00275699\n", + "2019-02-19 00:24:44,488 epoch 62 - iter 468/526 - loss 0.00277452\n", + "2019-02-19 00:25:31,105 epoch 62 - iter 520/526 - loss 0.00276041\n", + "2019-02-19 00:25:35,058 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:25:35,059 EPOCH 62 done: loss 0.0028 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 00:26:11,235 DEV : loss 0.00735644 - f-score 0.9220 - acc 0.9220\n", + "2019-02-19 00:26:38,238 TEST : loss 0.01034874 - f-score 0.8896 - acc 0.8896\n", + "2019-02-19 00:26:49,198 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:26:49,778 epoch 63 - iter 0/526 - loss 0.00223490\n", + "2019-02-19 00:27:41,750 epoch 63 - iter 52/526 - loss 0.00236185\n", + "2019-02-19 00:28:34,866 epoch 63 - iter 104/526 - loss 0.00236702\n", + "2019-02-19 00:29:13,655 epoch 63 - iter 156/526 - loss 0.00243840\n", + "2019-02-19 00:29:53,758 epoch 63 - iter 208/526 - loss 0.00242682\n", + "2019-02-19 00:30:33,548 epoch 63 - iter 260/526 - loss 0.00247188\n", + "2019-02-19 00:31:15,130 epoch 63 - iter 312/526 - loss 0.00247130\n", + "2019-02-19 00:31:54,391 epoch 63 - iter 364/526 - loss 0.00245345\n", + "2019-02-19 00:32:31,563 epoch 63 - iter 416/526 - loss 0.00250323\n", + "2019-02-19 00:33:09,772 epoch 63 - iter 468/526 - loss 0.00254974\n", + "2019-02-19 00:33:50,084 epoch 63 - iter 520/526 - loss 0.00256905\n", + "2019-02-19 00:33:54,138 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:33:54,140 EPOCH 63 done: loss 0.0026 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 00:34:34,366 DEV : loss 0.00804905 - f-score 0.9210 - acc 0.9210\n", + "2019-02-19 00:35:02,142 TEST : loss 0.01207406 - f-score 0.8752 - acc 0.8752\n", + "2019-02-19 00:35:13,128 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:35:13,936 epoch 64 - iter 0/526 - loss 0.00028811\n", + "2019-02-19 00:35:55,740 epoch 64 - iter 52/526 - loss 0.00238117\n", + "2019-02-19 00:36:38,204 epoch 64 - iter 104/526 - loss 0.00250847\n", + "2019-02-19 00:37:20,608 epoch 64 - iter 156/526 - loss 0.00253019\n", + "2019-02-19 00:37:59,927 epoch 64 - iter 208/526 - loss 0.00258418\n", + "2019-02-19 00:38:45,727 epoch 64 - iter 260/526 - loss 0.00265268\n", + "2019-02-19 00:39:25,200 epoch 64 - iter 312/526 - loss 0.00258906\n", + "2019-02-19 00:40:07,438 epoch 64 - iter 364/526 - loss 0.00271621\n", + "2019-02-19 00:40:51,982 epoch 64 - iter 416/526 - loss 0.00274402\n", + "2019-02-19 00:41:32,007 epoch 64 - iter 468/526 - loss 0.00268537\n", + "2019-02-19 00:42:12,228 epoch 64 - iter 520/526 - loss 0.00269436\n", + "2019-02-19 00:42:16,327 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:42:16,328 EPOCH 64 done: loss 0.0027 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 00:42:52,499 DEV : loss 0.00891922 - f-score 0.9230 - acc 0.9230\n", + "2019-02-19 00:43:18,114 TEST : loss 0.01327625 - f-score 0.8795 - acc 0.8795\n", + "2019-02-19 00:43:18,116 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:43:18,817 epoch 65 - iter 0/526 - loss 0.00217022\n", + "2019-02-19 00:43:55,057 epoch 65 - iter 52/526 - loss 0.00266105\n", + "2019-02-19 00:44:32,573 epoch 65 - iter 104/526 - loss 0.00257228\n", + "2019-02-19 00:45:16,399 epoch 65 - iter 156/526 - loss 0.00255856\n", + "2019-02-19 00:45:55,981 epoch 65 - iter 208/526 - loss 0.00239845\n", + "2019-02-19 00:46:33,930 epoch 65 - iter 260/526 - loss 0.00244004\n", + "2019-02-19 00:47:20,597 epoch 65 - iter 312/526 - loss 0.00253080\n", + "2019-02-19 00:48:01,008 epoch 65 - iter 364/526 - loss 0.00258291\n", + "2019-02-19 00:48:46,487 epoch 65 - iter 416/526 - loss 0.00251281\n", + "2019-02-19 00:49:28,760 epoch 65 - iter 468/526 - loss 0.00253580\n", + "2019-02-19 00:50:06,880 epoch 65 - iter 520/526 - loss 0.00251206\n", + "2019-02-19 00:50:10,841 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:50:10,841 EPOCH 65 done: loss 0.0025 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 00:50:47,185 DEV : loss 0.00777686 - f-score 0.9200 - acc 0.9200\n", + "2019-02-19 00:51:12,007 TEST : loss 0.01157837 - f-score 0.8810 - acc 0.8810\n", + "2019-02-19 00:51:22,839 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:51:23,639 epoch 66 - iter 0/526 - loss 0.00292374\n", + "2019-02-19 00:52:08,642 epoch 66 - iter 52/526 - loss 0.00262003\n", + "2019-02-19 00:52:47,759 epoch 66 - iter 104/526 - loss 0.00244041\n", + "2019-02-19 00:53:24,248 epoch 66 - iter 156/526 - loss 0.00255294\n", + "2019-02-19 00:54:06,633 epoch 66 - iter 208/526 - loss 0.00241041\n", + "2019-02-19 00:54:46,512 epoch 66 - iter 260/526 - loss 0.00246299\n", + "2019-02-19 00:55:26,570 epoch 66 - iter 312/526 - loss 0.00248248\n", + "2019-02-19 00:56:07,497 epoch 66 - iter 364/526 - loss 0.00248905\n", + "2019-02-19 00:56:47,703 epoch 66 - iter 416/526 - loss 0.00250246\n", + "2019-02-19 00:57:29,005 epoch 66 - iter 468/526 - loss 0.00251366\n", + "2019-02-19 00:58:13,522 epoch 66 - iter 520/526 - loss 0.00255076\n", + "2019-02-19 00:58:16,994 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:58:16,995 EPOCH 66 done: loss 0.0025 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 00:58:59,352 DEV : loss 0.01033701 - f-score 0.9135 - acc 0.9135\n", + "2019-02-19 00:59:25,782 TEST : loss 0.01172750 - f-score 0.8901 - acc 0.8901\n", + "2019-02-19 00:59:25,785 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 00:59:26,338 epoch 67 - iter 0/526 - loss 0.00406442\n", + "2019-02-19 01:00:10,748 epoch 67 - iter 52/526 - loss 0.00254583\n", + "2019-02-19 01:00:49,351 epoch 67 - iter 104/526 - loss 0.00241898\n", + "2019-02-19 01:01:31,104 epoch 67 - iter 156/526 - loss 0.00244464\n", + "2019-02-19 01:02:10,538 epoch 67 - iter 208/526 - loss 0.00234420\n", + "2019-02-19 01:02:53,511 epoch 67 - iter 260/526 - loss 0.00238693\n", + "2019-02-19 01:03:30,879 epoch 67 - iter 312/526 - loss 0.00245075\n", + "2019-02-19 01:04:13,062 epoch 67 - iter 364/526 - loss 0.00240967\n", + "2019-02-19 01:04:54,868 epoch 67 - iter 416/526 - loss 0.00244997\n", + "2019-02-19 01:05:36,854 epoch 67 - iter 468/526 - loss 0.00249924\n", + "2019-02-19 01:06:13,406 epoch 67 - iter 520/526 - loss 0.00249006\n", + "2019-02-19 01:06:17,592 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:06:17,593 EPOCH 67 done: loss 0.0025 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 01:06:53,554 DEV : loss 0.00929861 - f-score 0.9195 - acc 0.9195\n", + "2019-02-19 01:07:18,693 TEST : loss 0.01209871 - f-score 0.8915 - acc 0.8915\n", + "2019-02-19 01:07:29,708 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:07:30,333 epoch 68 - iter 0/526 - loss 0.00133460\n", + "2019-02-19 01:08:08,123 epoch 68 - iter 52/526 - loss 0.00229490\n", + "2019-02-19 01:08:46,754 epoch 68 - iter 104/526 - loss 0.00254624\n", + "2019-02-19 01:09:25,125 epoch 68 - iter 156/526 - loss 0.00243393\n", + "2019-02-19 01:10:09,529 epoch 68 - iter 208/526 - loss 0.00233091\n", + "2019-02-19 01:10:51,658 epoch 68 - iter 260/526 - loss 0.00246447\n", + "2019-02-19 01:11:30,740 epoch 68 - iter 312/526 - loss 0.00245493\n", + "2019-02-19 01:12:11,646 epoch 68 - iter 364/526 - loss 0.00251110\n", + "2019-02-19 01:12:52,270 epoch 68 - iter 416/526 - loss 0.00246071\n", + "2019-02-19 01:13:38,552 epoch 68 - iter 468/526 - loss 0.00241373\n", + "2019-02-19 01:14:21,456 epoch 68 - iter 520/526 - loss 0.00245487\n", + "2019-02-19 01:14:25,221 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:14:25,222 EPOCH 68 done: loss 0.0025 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 01:15:03,895 DEV : loss 0.00871720 - f-score 0.9145 - acc 0.9145\n", + "2019-02-19 01:15:29,991 TEST : loss 0.01106954 - f-score 0.8829 - acc 0.8829\n", + "2019-02-19 01:15:40,829 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:15:42,132 epoch 69 - iter 0/526 - loss 0.00181395\n", + "2019-02-19 01:16:25,256 epoch 69 - iter 52/526 - loss 0.00205936\n", + "2019-02-19 01:17:04,417 epoch 69 - iter 104/526 - loss 0.00212097\n", + "2019-02-19 01:17:45,235 epoch 69 - iter 156/526 - loss 0.00209010\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-19 01:18:29,297 epoch 69 - iter 208/526 - loss 0.00211917\n", + "2019-02-19 01:19:09,736 epoch 69 - iter 260/526 - loss 0.00231962\n", + "2019-02-19 01:19:50,833 epoch 69 - iter 312/526 - loss 0.00240284\n", + "2019-02-19 01:20:32,683 epoch 69 - iter 364/526 - loss 0.00244005\n", + "2019-02-19 01:21:13,577 epoch 69 - iter 416/526 - loss 0.00246184\n", + "2019-02-19 01:21:53,515 epoch 69 - iter 468/526 - loss 0.00242231\n", + "2019-02-19 01:22:34,498 epoch 69 - iter 520/526 - loss 0.00246337\n", + "2019-02-19 01:22:38,061 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:22:38,062 EPOCH 69 done: loss 0.0025 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 01:23:16,833 DEV : loss 0.00926123 - f-score 0.9220 - acc 0.9220\n", + "2019-02-19 01:23:44,206 TEST : loss 0.01422705 - f-score 0.8719 - acc 0.8719\n", + "2019-02-19 01:23:55,218 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:23:56,038 epoch 70 - iter 0/526 - loss 0.00366507\n", + "2019-02-19 01:24:35,820 epoch 70 - iter 52/526 - loss 0.00263450\n", + "2019-02-19 01:25:22,307 epoch 70 - iter 104/526 - loss 0.00237126\n", + "2019-02-19 01:26:01,104 epoch 70 - iter 156/526 - loss 0.00222151\n", + "2019-02-19 01:26:43,815 epoch 70 - iter 208/526 - loss 0.00240983\n", + "2019-02-19 01:27:23,405 epoch 70 - iter 260/526 - loss 0.00242108\n", + "2019-02-19 01:28:09,025 epoch 70 - iter 312/526 - loss 0.00236389\n", + "2019-02-19 01:28:49,716 epoch 70 - iter 364/526 - loss 0.00236170\n", + "2019-02-19 01:29:29,710 epoch 70 - iter 416/526 - loss 0.00238424\n", + "2019-02-19 01:30:08,956 epoch 70 - iter 468/526 - loss 0.00236710\n", + "2019-02-19 01:30:50,037 epoch 70 - iter 520/526 - loss 0.00236953\n", + "2019-02-19 01:30:54,005 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:30:54,006 EPOCH 70 done: loss 0.0024 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 01:31:29,214 DEV : loss 0.00926350 - f-score 0.9230 - acc 0.9230\n", + "2019-02-19 01:31:54,161 TEST : loss 0.01213447 - f-score 0.8891 - acc 0.8891\n", + "2019-02-19 01:32:04,939 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:32:05,753 epoch 71 - iter 0/526 - loss 0.00028783\n", + "2019-02-19 01:32:47,597 epoch 71 - iter 52/526 - loss 0.00189563\n", + "2019-02-19 01:33:27,771 epoch 71 - iter 104/526 - loss 0.00195687\n", + "2019-02-19 01:34:13,385 epoch 71 - iter 156/526 - loss 0.00206313\n", + "2019-02-19 01:34:55,858 epoch 71 - iter 208/526 - loss 0.00222775\n", + "2019-02-19 01:35:39,642 epoch 71 - iter 260/526 - loss 0.00223508\n", + "2019-02-19 01:36:24,105 epoch 71 - iter 312/526 - loss 0.00229322\n", + "2019-02-19 01:37:02,901 epoch 71 - iter 364/526 - loss 0.00234192\n", + "2019-02-19 01:37:42,704 epoch 71 - iter 416/526 - loss 0.00233389\n", + "2019-02-19 01:38:29,428 epoch 71 - iter 468/526 - loss 0.00235340\n", + "2019-02-19 01:39:09,396 epoch 71 - iter 520/526 - loss 0.00240196\n", + "2019-02-19 01:39:13,242 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:39:13,244 EPOCH 71 done: loss 0.0024 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 01:39:50,747 DEV : loss 0.00911213 - f-score 0.9205 - acc 0.9205\n", + "2019-02-19 01:40:17,351 TEST : loss 0.01078602 - f-score 0.8877 - acc 0.8877\n", + "2019-02-19 01:40:17,355 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:40:18,109 epoch 72 - iter 0/526 - loss 0.00247123\n", + "2019-02-19 01:41:02,900 epoch 72 - iter 52/526 - loss 0.00183861\n", + "2019-02-19 01:41:43,753 epoch 72 - iter 104/526 - loss 0.00205073\n", + "2019-02-19 01:42:29,150 epoch 72 - iter 156/526 - loss 0.00232858\n", + "2019-02-19 01:43:09,966 epoch 72 - iter 208/526 - loss 0.00235987\n", + "2019-02-19 01:43:49,982 epoch 72 - iter 260/526 - loss 0.00234824\n", + "2019-02-19 01:44:31,561 epoch 72 - iter 312/526 - loss 0.00238126\n", + "2019-02-19 01:45:14,203 epoch 72 - iter 364/526 - loss 0.00232852\n", + "2019-02-19 01:45:53,362 epoch 72 - iter 416/526 - loss 0.00231680\n", + "2019-02-19 01:46:30,007 epoch 72 - iter 468/526 - loss 0.00230169\n", + "2019-02-19 01:47:10,531 epoch 72 - iter 520/526 - loss 0.00229159\n", + "2019-02-19 01:47:14,820 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:47:14,821 EPOCH 72 done: loss 0.0023 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 01:47:50,080 DEV : loss 0.00948996 - f-score 0.9195 - acc 0.9195\n", + "2019-02-19 01:48:14,642 TEST : loss 0.01261456 - f-score 0.8915 - acc 0.8915\n", + "2019-02-19 01:48:25,421 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:48:26,118 epoch 73 - iter 0/526 - loss 0.00011234\n", + "2019-02-19 01:49:05,493 epoch 73 - iter 52/526 - loss 0.00206336\n", + "2019-02-19 01:49:41,701 epoch 73 - iter 104/526 - loss 0.00221668\n", + "2019-02-19 01:50:19,689 epoch 73 - iter 156/526 - loss 0.00214525\n", + "2019-02-19 01:51:00,099 epoch 73 - iter 208/526 - loss 0.00217245\n", + "2019-02-19 01:51:41,649 epoch 73 - iter 260/526 - loss 0.00218513\n", + "2019-02-19 01:52:25,708 epoch 73 - iter 312/526 - loss 0.00215204\n", + "2019-02-19 01:53:08,101 epoch 73 - iter 364/526 - loss 0.00215785\n", + "2019-02-19 01:53:45,959 epoch 73 - iter 416/526 - loss 0.00214769\n", + "2019-02-19 01:54:28,707 epoch 73 - iter 468/526 - loss 0.00220016\n", + "2019-02-19 01:55:09,980 epoch 73 - iter 520/526 - loss 0.00220002\n", + "2019-02-19 01:55:13,206 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:55:13,208 EPOCH 73 done: loss 0.0022 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 01:55:49,597 DEV : loss 0.00898498 - f-score 0.9210 - acc 0.9210\n", + "2019-02-19 01:56:13,656 TEST : loss 0.01489249 - f-score 0.8585 - acc 0.8585\n", + "2019-02-19 01:56:24,429 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 01:56:25,134 epoch 74 - iter 0/526 - loss 0.00045626\n", + "2019-02-19 01:57:06,090 epoch 74 - iter 52/526 - loss 0.00197132\n", + "2019-02-19 01:57:43,213 epoch 74 - iter 104/526 - loss 0.00202614\n", + "2019-02-19 01:58:25,424 epoch 74 - iter 156/526 - loss 0.00206083\n", + "2019-02-19 01:59:03,954 epoch 74 - iter 208/526 - loss 0.00209924\n", + "2019-02-19 01:59:42,959 epoch 74 - iter 260/526 - loss 0.00213567\n", + "2019-02-19 02:00:23,488 epoch 74 - iter 312/526 - loss 0.00211349\n", + "2019-02-19 02:01:04,542 epoch 74 - iter 364/526 - loss 0.00216789\n", + "2019-02-19 02:01:46,701 epoch 74 - iter 416/526 - loss 0.00215544\n", + "2019-02-19 02:02:28,801 epoch 74 - iter 468/526 - loss 0.00220382\n", + "2019-02-19 02:03:19,784 epoch 74 - iter 520/526 - loss 0.00220328\n", + "2019-02-19 02:03:24,042 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:03:24,045 EPOCH 74 done: loss 0.0022 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 02:04:03,844 DEV : loss 0.00927694 - f-score 0.9270 - acc 0.9270\n", + "2019-02-19 02:04:30,670 TEST : loss 0.01332265 - f-score 0.8838 - acc 0.8838\n", + "2019-02-19 02:04:30,673 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:04:31,391 epoch 75 - iter 0/526 - loss 0.00578790\n", + "2019-02-19 02:05:13,157 epoch 75 - iter 52/526 - loss 0.00201705\n", + "2019-02-19 02:05:58,713 epoch 75 - iter 104/526 - loss 0.00176217\n", + "2019-02-19 02:06:42,236 epoch 75 - iter 156/526 - loss 0.00161076\n", + "2019-02-19 02:07:22,574 epoch 75 - iter 208/526 - loss 0.00153212\n", + "2019-02-19 02:08:08,605 epoch 75 - iter 260/526 - loss 0.00162826\n", + "2019-02-19 02:08:46,940 epoch 75 - iter 312/526 - loss 0.00181670\n", + "2019-02-19 02:09:25,555 epoch 75 - iter 364/526 - loss 0.00183147\n", + "2019-02-19 02:10:04,681 epoch 75 - iter 416/526 - loss 0.00187992\n", + "2019-02-19 02:10:46,617 epoch 75 - iter 468/526 - loss 0.00195198\n", + "2019-02-19 02:11:32,250 epoch 75 - iter 520/526 - loss 0.00193492\n", + "2019-02-19 02:11:36,292 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:11:36,294 EPOCH 75 done: loss 0.0019 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 02:12:13,277 DEV : loss 0.00957381 - f-score 0.9220 - acc 0.9220\n", + "2019-02-19 02:12:39,055 TEST : loss 0.01183666 - f-score 0.8920 - acc 0.8920\n", + "2019-02-19 02:12:50,140 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:12:50,941 epoch 76 - iter 0/526 - loss 0.00323863\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-19 02:13:29,638 epoch 76 - iter 52/526 - loss 0.00212599\n", + "2019-02-19 02:14:10,552 epoch 76 - iter 104/526 - loss 0.00208220\n", + "2019-02-19 02:14:52,904 epoch 76 - iter 156/526 - loss 0.00190547\n", + "2019-02-19 02:15:34,351 epoch 76 - iter 208/526 - loss 0.00184827\n", + "2019-02-19 02:16:15,470 epoch 76 - iter 260/526 - loss 0.00175899\n", + "2019-02-19 02:16:56,341 epoch 76 - iter 312/526 - loss 0.00181931\n", + "2019-02-19 02:17:34,116 epoch 76 - iter 364/526 - loss 0.00181837\n", + "2019-02-19 02:18:12,453 epoch 76 - iter 416/526 - loss 0.00178375\n", + "2019-02-19 02:18:53,565 epoch 76 - iter 468/526 - loss 0.00188068\n", + "2019-02-19 02:19:32,419 epoch 76 - iter 520/526 - loss 0.00193227\n", + "2019-02-19 02:19:35,982 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:19:35,983 EPOCH 76 done: loss 0.0019 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 02:20:11,972 DEV : loss 0.00917836 - f-score 0.9205 - acc 0.9205\n", + "2019-02-19 02:20:36,564 TEST : loss 0.01364193 - f-score 0.8748 - acc 0.8748\n", + "2019-02-19 02:20:36,568 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:20:37,292 epoch 77 - iter 0/526 - loss 0.00156669\n", + "2019-02-19 02:21:15,702 epoch 77 - iter 52/526 - loss 0.00144137\n", + "2019-02-19 02:21:52,444 epoch 77 - iter 104/526 - loss 0.00145727\n", + "2019-02-19 02:22:31,773 epoch 77 - iter 156/526 - loss 0.00157244\n", + "2019-02-19 02:23:11,928 epoch 77 - iter 208/526 - loss 0.00171624\n", + "2019-02-19 02:23:55,161 epoch 77 - iter 260/526 - loss 0.00177478\n", + "2019-02-19 02:24:39,206 epoch 77 - iter 312/526 - loss 0.00173043\n", + "2019-02-19 02:25:21,429 epoch 77 - iter 364/526 - loss 0.00184676\n", + "2019-02-19 02:26:07,415 epoch 77 - iter 416/526 - loss 0.00182094\n", + "2019-02-19 02:26:51,424 epoch 77 - iter 468/526 - loss 0.00182330\n", + "2019-02-19 02:27:30,190 epoch 77 - iter 520/526 - loss 0.00188240\n", + "2019-02-19 02:27:33,871 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:27:33,872 EPOCH 77 done: loss 0.0019 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 02:28:10,543 DEV : loss 0.01020000 - f-score 0.9140 - acc 0.9140\n", + "2019-02-19 02:28:36,119 TEST : loss 0.01244381 - f-score 0.8910 - acc 0.8910\n", + "2019-02-19 02:28:46,987 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:28:47,869 epoch 78 - iter 0/526 - loss 0.00054872\n", + "2019-02-19 02:29:30,747 epoch 78 - iter 52/526 - loss 0.00141659\n", + "2019-02-19 02:30:15,700 epoch 78 - iter 104/526 - loss 0.00174331\n", + "2019-02-19 02:30:56,947 epoch 78 - iter 156/526 - loss 0.00177353\n", + "2019-02-19 02:31:39,842 epoch 78 - iter 208/526 - loss 0.00180384\n", + "2019-02-19 02:32:25,579 epoch 78 - iter 260/526 - loss 0.00185663\n", + "2019-02-19 02:33:06,241 epoch 78 - iter 312/526 - loss 0.00180144\n", + "2019-02-19 02:33:47,859 epoch 78 - iter 364/526 - loss 0.00187756\n", + "2019-02-19 02:34:32,693 epoch 78 - iter 416/526 - loss 0.00192514\n", + "2019-02-19 02:35:17,072 epoch 78 - iter 468/526 - loss 0.00190703\n", + "2019-02-19 02:36:01,395 epoch 78 - iter 520/526 - loss 0.00195062\n", + "2019-02-19 02:36:04,754 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:36:04,756 EPOCH 78 done: loss 0.0020 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 02:36:42,592 DEV : loss 0.00875567 - f-score 0.9200 - acc 0.9200\n", + "2019-02-19 02:37:08,871 TEST : loss 0.01336690 - f-score 0.8791 - acc 0.8791\n", + "2019-02-19 02:37:08,873 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:37:09,337 epoch 79 - iter 0/526 - loss 0.00065538\n", + "2019-02-19 02:37:51,948 epoch 79 - iter 52/526 - loss 0.00191990\n", + "2019-02-19 02:38:36,725 epoch 79 - iter 104/526 - loss 0.00194779\n", + "2019-02-19 02:39:19,145 epoch 79 - iter 156/526 - loss 0.00201094\n", + "2019-02-19 02:40:01,177 epoch 79 - iter 208/526 - loss 0.00193250\n", + "2019-02-19 02:40:42,325 epoch 79 - iter 260/526 - loss 0.00197127\n", + "2019-02-19 02:41:23,284 epoch 79 - iter 312/526 - loss 0.00197641\n", + "2019-02-19 02:42:17,528 epoch 79 - iter 364/526 - loss 0.00195634\n", + "2019-02-19 02:42:59,073 epoch 79 - iter 416/526 - loss 0.00201068\n", + "2019-02-19 02:43:39,041 epoch 79 - iter 468/526 - loss 0.00200842\n", + "2019-02-19 02:44:15,818 epoch 79 - iter 520/526 - loss 0.00198414\n", + "2019-02-19 02:44:19,621 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:44:19,622 EPOCH 79 done: loss 0.0020 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 02:44:58,237 DEV : loss 0.00981320 - f-score 0.9245 - acc 0.9245\n", + "2019-02-19 02:45:25,307 TEST : loss 0.01326628 - f-score 0.8881 - acc 0.8881\n", + "2019-02-19 02:45:25,312 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:45:25,981 epoch 80 - iter 0/526 - loss 0.00144069\n", + "2019-02-19 02:46:04,536 epoch 80 - iter 52/526 - loss 0.00199222\n", + "2019-02-19 02:46:45,747 epoch 80 - iter 104/526 - loss 0.00210346\n", + "2019-02-19 02:47:25,520 epoch 80 - iter 156/526 - loss 0.00194081\n", + "2019-02-19 02:48:05,866 epoch 80 - iter 208/526 - loss 0.00187974\n", + "2019-02-19 02:48:45,502 epoch 80 - iter 260/526 - loss 0.00190591\n", + "2019-02-19 02:49:26,513 epoch 80 - iter 312/526 - loss 0.00187764\n", + "2019-02-19 02:50:10,527 epoch 80 - iter 364/526 - loss 0.00192389\n", + "2019-02-19 02:50:51,165 epoch 80 - iter 416/526 - loss 0.00189695\n", + "2019-02-19 02:51:35,254 epoch 80 - iter 468/526 - loss 0.00193701\n", + "2019-02-19 02:52:14,793 epoch 80 - iter 520/526 - loss 0.00192635\n", + "2019-02-19 02:52:19,188 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:52:19,189 EPOCH 80 done: loss 0.0019 - lr 0.1000 - bad epochs 2\n", + "2019-02-19 02:52:55,951 DEV : loss 0.00911485 - f-score 0.9250 - acc 0.9250\n", + "2019-02-19 02:53:20,886 TEST : loss 0.01340368 - f-score 0.8752 - acc 0.8752\n", + "2019-02-19 02:53:20,889 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 02:53:21,597 epoch 81 - iter 0/526 - loss 0.00439265\n", + "2019-02-19 02:53:57,933 epoch 81 - iter 52/526 - loss 0.00239608\n", + "2019-02-19 02:54:44,730 epoch 81 - iter 104/526 - loss 0.00199362\n", + "2019-02-19 02:55:36,891 epoch 81 - iter 156/526 - loss 0.00198345\n", + "2019-02-19 02:56:18,314 epoch 81 - iter 208/526 - loss 0.00207105\n", + "2019-02-19 02:57:03,542 epoch 81 - iter 260/526 - loss 0.00197111\n", + "2019-02-19 02:57:43,905 epoch 81 - iter 312/526 - loss 0.00186707\n", + "2019-02-19 02:58:23,235 epoch 81 - iter 364/526 - loss 0.00182501\n", + "2019-02-19 02:59:09,443 epoch 81 - iter 416/526 - loss 0.00183292\n", + "2019-02-19 02:59:49,669 epoch 81 - iter 468/526 - loss 0.00188667\n", + "2019-02-19 03:00:29,539 epoch 81 - iter 520/526 - loss 0.00191649\n", + "2019-02-19 03:00:32,704 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:00:32,705 EPOCH 81 done: loss 0.0019 - lr 0.1000 - bad epochs 3\n", + "2019-02-19 03:01:10,200 DEV : loss 0.01051898 - f-score 0.9030 - acc 0.9030\n", + "2019-02-19 03:01:36,105 TEST : loss 0.01146377 - f-score 0.8920 - acc 0.8920\n", + "2019-02-19 03:01:36,108 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:01:37,175 epoch 82 - iter 0/526 - loss 0.00541445\n", + "2019-02-19 03:02:14,652 epoch 82 - iter 52/526 - loss 0.00150638\n", + "2019-02-19 03:02:51,758 epoch 82 - iter 104/526 - loss 0.00167378\n", + "2019-02-19 03:03:32,773 epoch 82 - iter 156/526 - loss 0.00139234\n", + "2019-02-19 03:04:15,870 epoch 82 - iter 208/526 - loss 0.00145033\n", + "2019-02-19 03:05:02,197 epoch 82 - iter 260/526 - loss 0.00148591\n", + "2019-02-19 03:05:41,905 epoch 82 - iter 312/526 - loss 0.00152059\n", + "2019-02-19 03:06:29,345 epoch 82 - iter 364/526 - loss 0.00158479\n", + "2019-02-19 03:07:11,674 epoch 82 - iter 416/526 - loss 0.00161180\n", + "2019-02-19 03:07:53,200 epoch 82 - iter 468/526 - loss 0.00166763\n", + "2019-02-19 03:08:37,506 epoch 82 - iter 520/526 - loss 0.00170417\n", + "2019-02-19 03:08:41,610 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:08:41,612 EPOCH 82 done: loss 0.0017 - lr 0.1000 - bad epochs 4\n", + "2019-02-19 03:09:19,502 DEV : loss 0.00939283 - f-score 0.9185 - acc 0.9185\n", + "2019-02-19 03:09:44,831 TEST : loss 0.01314014 - f-score 0.8834 - acc 0.8834\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-19 03:09:55,742 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:09:57,170 epoch 83 - iter 0/526 - loss 0.00116846\n", + "2019-02-19 03:10:36,124 epoch 83 - iter 52/526 - loss 0.00159172\n", + "2019-02-19 03:11:13,588 epoch 83 - iter 104/526 - loss 0.00161017\n", + "2019-02-19 03:11:53,418 epoch 83 - iter 156/526 - loss 0.00155334\n", + "2019-02-19 03:12:41,752 epoch 83 - iter 208/526 - loss 0.00163101\n", + "2019-02-19 03:13:23,178 epoch 83 - iter 260/526 - loss 0.00162492\n", + "2019-02-19 03:14:02,174 epoch 83 - iter 312/526 - loss 0.00160849\n", + "2019-02-19 03:14:46,326 epoch 83 - iter 364/526 - loss 0.00157752\n", + "2019-02-19 03:15:30,124 epoch 83 - iter 416/526 - loss 0.00158247\n", + "2019-02-19 03:16:12,719 epoch 83 - iter 468/526 - loss 0.00167728\n", + "2019-02-19 03:16:54,016 epoch 83 - iter 520/526 - loss 0.00172712\n", + "2019-02-19 03:17:00,792 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:17:00,793 EPOCH 83 done: loss 0.0017 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 03:17:39,164 DEV : loss 0.01019812 - f-score 0.9180 - acc 0.9180\n", + "2019-02-19 03:18:06,079 TEST : loss 0.01362399 - f-score 0.8881 - acc 0.8881\n", + "2019-02-19 03:18:06,082 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:18:06,563 epoch 84 - iter 0/526 - loss 0.00104602\n", + "2019-02-19 03:18:45,351 epoch 84 - iter 52/526 - loss 0.00187649\n", + "2019-02-19 03:19:26,271 epoch 84 - iter 104/526 - loss 0.00157879\n", + "2019-02-19 03:20:15,276 epoch 84 - iter 156/526 - loss 0.00170571\n", + "2019-02-19 03:20:57,428 epoch 84 - iter 208/526 - loss 0.00172057\n", + "2019-02-19 03:21:41,594 epoch 84 - iter 260/526 - loss 0.00173967\n", + "2019-02-19 03:22:23,043 epoch 84 - iter 312/526 - loss 0.00169418\n", + "2019-02-19 03:23:06,685 epoch 84 - iter 364/526 - loss 0.00167364\n", + "2019-02-19 03:23:50,703 epoch 84 - iter 416/526 - loss 0.00166478\n", + "2019-02-19 03:24:32,658 epoch 84 - iter 468/526 - loss 0.00166701\n", + "2019-02-19 03:25:13,996 epoch 84 - iter 520/526 - loss 0.00166984\n", + "2019-02-19 03:25:18,524 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:25:18,525 EPOCH 84 done: loss 0.0017 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 03:25:57,558 DEV : loss 0.01050610 - f-score 0.9210 - acc 0.9210\n", + "2019-02-19 03:26:24,133 TEST : loss 0.01489008 - f-score 0.8867 - acc 0.8867\n", + "2019-02-19 03:26:35,003 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:26:37,771 epoch 85 - iter 0/526 - loss 0.00104147\n", + "2019-02-19 03:27:19,435 epoch 85 - iter 52/526 - loss 0.00169354\n", + "2019-02-19 03:28:02,000 epoch 85 - iter 104/526 - loss 0.00167812\n", + "2019-02-19 03:28:44,709 epoch 85 - iter 156/526 - loss 0.00160129\n", + "2019-02-19 03:29:26,565 epoch 85 - iter 208/526 - loss 0.00161251\n", + "2019-02-19 03:30:05,279 epoch 85 - iter 260/526 - loss 0.00154626\n", + "2019-02-19 03:30:43,622 epoch 85 - iter 312/526 - loss 0.00160706\n", + "2019-02-19 03:31:25,456 epoch 85 - iter 364/526 - loss 0.00164673\n", + "2019-02-19 03:32:08,277 epoch 85 - iter 416/526 - loss 0.00158821\n", + "2019-02-19 03:32:47,972 epoch 85 - iter 468/526 - loss 0.00161365\n", + "2019-02-19 03:33:32,867 epoch 85 - iter 520/526 - loss 0.00158964\n", + "2019-02-19 03:33:36,072 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:33:36,073 EPOCH 85 done: loss 0.0016 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 03:34:12,160 DEV : loss 0.01179647 - f-score 0.9245 - acc 0.9245\n", + "2019-02-19 03:34:38,269 TEST : loss 0.01552512 - f-score 0.8905 - acc 0.8905\n", + "2019-02-19 03:34:49,203 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:34:49,779 epoch 86 - iter 0/526 - loss 0.00014578\n", + "2019-02-19 03:35:31,308 epoch 86 - iter 52/526 - loss 0.00181892\n", + "2019-02-19 03:36:11,743 epoch 86 - iter 104/526 - loss 0.00172629\n", + "2019-02-19 03:36:47,593 epoch 86 - iter 156/526 - loss 0.00177134\n", + "2019-02-19 03:37:25,249 epoch 86 - iter 208/526 - loss 0.00186702\n", + "2019-02-19 03:38:06,991 epoch 86 - iter 260/526 - loss 0.00182549\n", + "2019-02-19 03:38:47,202 epoch 86 - iter 312/526 - loss 0.00179496\n", + "2019-02-19 03:39:27,749 epoch 86 - iter 364/526 - loss 0.00180684\n", + "2019-02-19 03:40:09,161 epoch 86 - iter 416/526 - loss 0.00183078\n", + "2019-02-19 03:40:51,981 epoch 86 - iter 468/526 - loss 0.00184957\n", + "2019-02-19 03:41:34,842 epoch 86 - iter 520/526 - loss 0.00182854\n", + "2019-02-19 03:41:38,207 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:41:38,209 EPOCH 86 done: loss 0.0018 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 03:42:14,387 DEV : loss 0.01291922 - f-score 0.9095 - acc 0.9095\n", + "2019-02-19 03:42:40,022 TEST : loss 0.02182853 - f-score 0.8566 - acc 0.8566\n", + "2019-02-19 03:42:40,025 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:42:40,657 epoch 87 - iter 0/526 - loss 0.00238495\n", + "2019-02-19 03:43:21,317 epoch 87 - iter 52/526 - loss 0.00213423\n", + "2019-02-19 03:44:01,515 epoch 87 - iter 104/526 - loss 0.00176320\n", + "2019-02-19 03:44:44,551 epoch 87 - iter 156/526 - loss 0.00187373\n", + "2019-02-19 03:45:25,541 epoch 87 - iter 208/526 - loss 0.00187932\n", + "2019-02-19 03:46:12,422 epoch 87 - iter 260/526 - loss 0.00174580\n", + "2019-02-19 03:46:55,052 epoch 87 - iter 312/526 - loss 0.00164460\n", + "2019-02-19 03:47:34,683 epoch 87 - iter 364/526 - loss 0.00167436\n", + "2019-02-19 03:48:15,683 epoch 87 - iter 416/526 - loss 0.00165913\n", + "2019-02-19 03:49:00,692 epoch 87 - iter 468/526 - loss 0.00161779\n", + "2019-02-19 03:49:38,162 epoch 87 - iter 520/526 - loss 0.00167926\n", + "2019-02-19 03:49:41,280 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:49:41,281 EPOCH 87 done: loss 0.0017 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 03:50:19,035 DEV : loss 0.01156142 - f-score 0.9100 - acc 0.9100\n", + "2019-02-19 03:50:53,896 TEST : loss 0.01318137 - f-score 0.8977 - acc 0.8977\n", + "2019-02-19 03:50:53,899 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:50:54,694 epoch 88 - iter 0/526 - loss 0.00888010\n", + "2019-02-19 03:51:32,643 epoch 88 - iter 52/526 - loss 0.00179779\n", + "2019-02-19 03:52:14,288 epoch 88 - iter 104/526 - loss 0.00178959\n", + "2019-02-19 03:53:07,367 epoch 88 - iter 156/526 - loss 0.00158125\n", + "2019-02-19 03:53:47,027 epoch 88 - iter 208/526 - loss 0.00149774\n", + "2019-02-19 03:54:27,961 epoch 88 - iter 260/526 - loss 0.00156698\n", + "2019-02-19 03:55:06,177 epoch 88 - iter 312/526 - loss 0.00158517\n", + "2019-02-19 03:55:48,056 epoch 88 - iter 364/526 - loss 0.00157284\n", + "2019-02-19 03:56:31,494 epoch 88 - iter 416/526 - loss 0.00161180\n", + "2019-02-19 03:57:14,026 epoch 88 - iter 468/526 - loss 0.00159980\n", + "2019-02-19 03:57:54,676 epoch 88 - iter 520/526 - loss 0.00162030\n", + "2019-02-19 03:57:58,394 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:57:58,395 EPOCH 88 done: loss 0.0016 - lr 0.1000 - bad epochs 2\n", + "2019-02-19 03:58:37,099 DEV : loss 0.00950958 - f-score 0.9180 - acc 0.9180\n", + "2019-02-19 03:59:09,304 TEST : loss 0.01486431 - f-score 0.8647 - acc 0.8647\n", + "2019-02-19 03:59:09,306 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 03:59:10,382 epoch 89 - iter 0/526 - loss 0.00106604\n", + "2019-02-19 03:59:53,107 epoch 89 - iter 52/526 - loss 0.00143349\n", + "2019-02-19 04:00:33,169 epoch 89 - iter 104/526 - loss 0.00127343\n", + "2019-02-19 04:01:12,532 epoch 89 - iter 156/526 - loss 0.00132347\n", + "2019-02-19 04:01:48,752 epoch 89 - iter 208/526 - loss 0.00141182\n", + "2019-02-19 04:02:25,892 epoch 89 - iter 260/526 - loss 0.00144000\n", + "2019-02-19 04:03:07,553 epoch 89 - iter 312/526 - loss 0.00141707\n", + "2019-02-19 04:03:48,632 epoch 89 - iter 364/526 - loss 0.00159705\n", + "2019-02-19 04:04:30,010 epoch 89 - iter 416/526 - loss 0.00162946\n", + "2019-02-19 04:05:11,681 epoch 89 - iter 468/526 - loss 0.00169225\n", + "2019-02-19 04:05:52,479 epoch 89 - iter 520/526 - loss 0.00166944\n", + "2019-02-19 04:05:56,285 ----------------------------------------------------------------------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-19 04:05:56,286 EPOCH 89 done: loss 0.0017 - lr 0.1000 - bad epochs 3\n", + "2019-02-19 04:06:32,360 DEV : loss 0.00939411 - f-score 0.9235 - acc 0.9235\n", + "2019-02-19 04:06:58,131 TEST : loss 0.01308209 - f-score 0.8838 - acc 0.8838\n", + "2019-02-19 04:06:58,133 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:06:58,860 epoch 90 - iter 0/526 - loss 0.00101154\n", + "2019-02-19 04:07:37,443 epoch 90 - iter 52/526 - loss 0.00089107\n", + "2019-02-19 04:08:16,461 epoch 90 - iter 104/526 - loss 0.00139649\n", + "2019-02-19 04:08:54,228 epoch 90 - iter 156/526 - loss 0.00175853\n", + "2019-02-19 04:09:32,488 epoch 90 - iter 208/526 - loss 0.00172246\n", + "2019-02-19 04:10:12,980 epoch 90 - iter 260/526 - loss 0.00189268\n", + "2019-02-19 04:10:53,641 epoch 90 - iter 312/526 - loss 0.00188720\n", + "2019-02-19 04:11:30,056 epoch 90 - iter 364/526 - loss 0.00182692\n", + "2019-02-19 04:12:16,140 epoch 90 - iter 416/526 - loss 0.00177614\n", + "2019-02-19 04:12:55,559 epoch 90 - iter 468/526 - loss 0.00172816\n", + "2019-02-19 04:13:35,062 epoch 90 - iter 520/526 - loss 0.00173893\n", + "2019-02-19 04:13:38,367 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:13:38,368 EPOCH 90 done: loss 0.0017 - lr 0.1000 - bad epochs 4\n", + "2019-02-19 04:14:14,133 DEV : loss 0.01047690 - f-score 0.9150 - acc 0.9150\n", + "2019-02-19 04:14:38,997 TEST : loss 0.01398433 - f-score 0.8815 - acc 0.8815\n", + "2019-02-19 04:14:39,000 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:14:39,771 epoch 91 - iter 0/526 - loss 0.00077369\n", + "2019-02-19 04:15:20,017 epoch 91 - iter 52/526 - loss 0.00159348\n", + "2019-02-19 04:16:06,778 epoch 91 - iter 104/526 - loss 0.00126205\n", + "2019-02-19 04:16:51,666 epoch 91 - iter 156/526 - loss 0.00143544\n", + "2019-02-19 04:17:30,571 epoch 91 - iter 208/526 - loss 0.00146865\n", + "2019-02-19 04:18:11,681 epoch 91 - iter 260/526 - loss 0.00139851\n", + "2019-02-19 04:18:50,777 epoch 91 - iter 312/526 - loss 0.00143424\n", + "2019-02-19 04:19:35,239 epoch 91 - iter 364/526 - loss 0.00143754\n", + "2019-02-19 04:20:29,443 epoch 91 - iter 416/526 - loss 0.00144322\n", + "2019-02-19 04:21:08,777 epoch 91 - iter 468/526 - loss 0.00142449\n", + "2019-02-19 04:21:49,426 epoch 91 - iter 520/526 - loss 0.00147375\n", + "2019-02-19 04:21:53,225 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:21:53,227 EPOCH 91 done: loss 0.0015 - lr 0.1000 - bad epochs 5\n", + "2019-02-19 04:22:42,848 DEV : loss 0.01142728 - f-score 0.9240 - acc 0.9240\n", + "2019-02-19 04:23:09,283 TEST : loss 0.01610915 - f-score 0.8877 - acc 0.8877\n", + "2019-02-19 04:23:20,255 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:23:21,186 epoch 92 - iter 0/526 - loss 0.00007011\n", + "2019-02-19 04:24:01,872 epoch 92 - iter 52/526 - loss 0.00164318\n", + "2019-02-19 04:24:45,352 epoch 92 - iter 104/526 - loss 0.00154162\n", + "2019-02-19 04:25:24,542 epoch 92 - iter 156/526 - loss 0.00141932\n", + "2019-02-19 04:26:05,209 epoch 92 - iter 208/526 - loss 0.00136995\n", + "2019-02-19 04:26:44,670 epoch 92 - iter 260/526 - loss 0.00138729\n", + "2019-02-19 04:27:25,123 epoch 92 - iter 312/526 - loss 0.00134203\n", + "2019-02-19 04:28:11,010 epoch 92 - iter 364/526 - loss 0.00135643\n", + "2019-02-19 04:28:50,742 epoch 92 - iter 416/526 - loss 0.00142221\n", + "2019-02-19 04:29:29,970 epoch 92 - iter 468/526 - loss 0.00138912\n", + "2019-02-19 04:30:14,129 epoch 92 - iter 520/526 - loss 0.00139426\n", + "2019-02-19 04:30:18,673 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:30:18,674 EPOCH 92 done: loss 0.0014 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 04:30:57,160 DEV : loss 0.01147311 - f-score 0.9180 - acc 0.9180\n", + "2019-02-19 04:31:23,518 TEST : loss 0.01745269 - f-score 0.8705 - acc 0.8705\n", + "2019-02-19 04:31:34,343 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:31:35,045 epoch 93 - iter 0/526 - loss 0.00333420\n", + "2019-02-19 04:32:15,211 epoch 93 - iter 52/526 - loss 0.00144450\n", + "2019-02-19 04:33:08,536 epoch 93 - iter 104/526 - loss 0.00124302\n", + "2019-02-19 04:33:45,927 epoch 93 - iter 156/526 - loss 0.00123781\n", + "2019-02-19 04:34:23,005 epoch 93 - iter 208/526 - loss 0.00120892\n", + "2019-02-19 04:35:00,646 epoch 93 - iter 260/526 - loss 0.00128353\n", + "2019-02-19 04:35:42,418 epoch 93 - iter 312/526 - loss 0.00128915\n", + "2019-02-19 04:36:26,053 epoch 93 - iter 364/526 - loss 0.00136641\n", + "2019-02-19 04:37:05,173 epoch 93 - iter 416/526 - loss 0.00137863\n", + "2019-02-19 04:37:57,451 epoch 93 - iter 468/526 - loss 0.00144463\n", + "2019-02-19 04:38:37,082 epoch 93 - iter 520/526 - loss 0.00155321\n", + "2019-02-19 04:38:40,625 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:38:40,626 EPOCH 93 done: loss 0.0016 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 04:39:18,039 DEV : loss 0.01175705 - f-score 0.9220 - acc 0.9220\n", + "2019-02-19 04:39:44,095 TEST : loss 0.01827965 - f-score 0.8795 - acc 0.8795\n", + "2019-02-19 04:39:44,097 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:39:44,820 epoch 94 - iter 0/526 - loss 0.00773266\n", + "2019-02-19 04:40:26,093 epoch 94 - iter 52/526 - loss 0.00121886\n", + "2019-02-19 04:41:07,960 epoch 94 - iter 104/526 - loss 0.00127905\n", + "2019-02-19 04:42:03,489 epoch 94 - iter 156/526 - loss 0.00122680\n", + "2019-02-19 04:42:46,403 epoch 94 - iter 208/526 - loss 0.00129118\n", + "2019-02-19 04:43:31,433 epoch 94 - iter 260/526 - loss 0.00130237\n", + "2019-02-19 04:44:10,246 epoch 94 - iter 312/526 - loss 0.00127384\n", + "2019-02-19 04:44:51,962 epoch 94 - iter 364/526 - loss 0.00124976\n", + "2019-02-19 04:45:33,105 epoch 94 - iter 416/526 - loss 0.00127324\n", + "2019-02-19 04:46:13,533 epoch 94 - iter 468/526 - loss 0.00128987\n", + "2019-02-19 04:46:55,169 epoch 94 - iter 520/526 - loss 0.00133658\n", + "2019-02-19 04:46:58,687 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:46:58,688 EPOCH 94 done: loss 0.0013 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 04:47:35,065 DEV : loss 0.01234767 - f-score 0.9155 - acc 0.9155\n", + "2019-02-19 04:48:00,431 TEST : loss 0.01424169 - f-score 0.8944 - acc 0.8944\n", + "2019-02-19 04:48:11,380 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:48:12,465 epoch 95 - iter 0/526 - loss 0.00014443\n", + "2019-02-19 04:48:57,205 epoch 95 - iter 52/526 - loss 0.00140546\n", + "2019-02-19 04:49:39,666 epoch 95 - iter 104/526 - loss 0.00114873\n", + "2019-02-19 04:50:21,825 epoch 95 - iter 156/526 - loss 0.00112524\n", + "2019-02-19 04:50:59,568 epoch 95 - iter 208/526 - loss 0.00119036\n", + "2019-02-19 04:51:40,341 epoch 95 - iter 260/526 - loss 0.00125732\n", + "2019-02-19 04:52:20,495 epoch 95 - iter 312/526 - loss 0.00127443\n", + "2019-02-19 04:53:00,700 epoch 95 - iter 364/526 - loss 0.00127471\n", + "2019-02-19 04:53:38,960 epoch 95 - iter 416/526 - loss 0.00127094\n", + "2019-02-19 04:54:16,842 epoch 95 - iter 468/526 - loss 0.00129768\n", + "2019-02-19 04:54:59,030 epoch 95 - iter 520/526 - loss 0.00135680\n", + "2019-02-19 04:55:02,621 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:55:02,622 EPOCH 95 done: loss 0.0014 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 04:55:38,650 DEV : loss 0.01068178 - f-score 0.9140 - acc 0.9140\n", + "2019-02-19 04:56:03,485 TEST : loss 0.01493327 - f-score 0.8776 - acc 0.8776\n", + "2019-02-19 04:56:03,488 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 04:56:04,335 epoch 96 - iter 0/526 - loss 0.00018781\n", + "2019-02-19 04:56:42,224 epoch 96 - iter 52/526 - loss 0.00149686\n", + "2019-02-19 04:57:22,582 epoch 96 - iter 104/526 - loss 0.00132458\n", + "2019-02-19 04:58:02,760 epoch 96 - iter 156/526 - loss 0.00126279\n", + "2019-02-19 04:58:42,049 epoch 96 - iter 208/526 - loss 0.00129965\n", + "2019-02-19 04:59:21,499 epoch 96 - iter 260/526 - loss 0.00128112\n", + "2019-02-19 05:00:03,057 epoch 96 - iter 312/526 - loss 0.00126635\n", + "2019-02-19 05:00:40,537 epoch 96 - iter 364/526 - loss 0.00128816\n", + "2019-02-19 05:01:18,138 epoch 96 - iter 416/526 - loss 0.00131574\n", + "2019-02-19 05:01:59,089 epoch 96 - iter 468/526 - loss 0.00130132\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-19 05:02:37,096 epoch 96 - iter 520/526 - loss 0.00130853\n", + "2019-02-19 05:02:40,620 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:02:40,621 EPOCH 96 done: loss 0.0013 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 05:03:18,696 DEV : loss 0.01226297 - f-score 0.9145 - acc 0.9145\n", + "2019-02-19 05:03:44,963 TEST : loss 0.01488450 - f-score 0.8853 - acc 0.8853\n", + "2019-02-19 05:03:55,820 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:03:56,443 epoch 97 - iter 0/526 - loss 0.00024264\n", + "2019-02-19 05:04:36,270 epoch 97 - iter 52/526 - loss 0.00130788\n", + "2019-02-19 05:05:14,296 epoch 97 - iter 104/526 - loss 0.00145916\n", + "2019-02-19 05:05:53,124 epoch 97 - iter 156/526 - loss 0.00146267\n", + "2019-02-19 05:06:35,695 epoch 97 - iter 208/526 - loss 0.00135054\n", + "2019-02-19 05:07:17,866 epoch 97 - iter 260/526 - loss 0.00140619\n", + "2019-02-19 05:07:59,147 epoch 97 - iter 312/526 - loss 0.00134640\n", + "2019-02-19 05:08:42,354 epoch 97 - iter 364/526 - loss 0.00136702\n", + "2019-02-19 05:09:21,560 epoch 97 - iter 416/526 - loss 0.00139266\n", + "2019-02-19 05:10:01,792 epoch 97 - iter 468/526 - loss 0.00140579\n", + "2019-02-19 05:10:44,270 epoch 97 - iter 520/526 - loss 0.00139031\n", + "2019-02-19 05:10:48,288 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:10:48,289 EPOCH 97 done: loss 0.0014 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 05:11:25,170 DEV : loss 0.01116125 - f-score 0.9180 - acc 0.9180\n", + "2019-02-19 05:11:50,998 TEST : loss 0.01560584 - f-score 0.8800 - acc 0.8800\n", + "2019-02-19 05:11:51,000 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:11:51,754 epoch 98 - iter 0/526 - loss 0.00012022\n", + "2019-02-19 05:12:32,908 epoch 98 - iter 52/526 - loss 0.00103170\n", + "2019-02-19 05:13:10,501 epoch 98 - iter 104/526 - loss 0.00087034\n", + "2019-02-19 05:13:53,116 epoch 98 - iter 156/526 - loss 0.00104750\n", + "2019-02-19 05:14:31,318 epoch 98 - iter 208/526 - loss 0.00103992\n", + "2019-02-19 05:15:13,141 epoch 98 - iter 260/526 - loss 0.00109514\n", + "2019-02-19 05:15:54,644 epoch 98 - iter 312/526 - loss 0.00109452\n", + "2019-02-19 05:16:35,835 epoch 98 - iter 364/526 - loss 0.00110683\n", + "2019-02-19 05:17:14,223 epoch 98 - iter 416/526 - loss 0.00108642\n", + "2019-02-19 05:17:58,404 epoch 98 - iter 468/526 - loss 0.00111691\n", + "2019-02-19 05:18:43,695 epoch 98 - iter 520/526 - loss 0.00114827\n", + "2019-02-19 05:18:47,518 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:18:47,520 EPOCH 98 done: loss 0.0012 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 05:19:26,272 DEV : loss 0.01133704 - f-score 0.9215 - acc 0.9215\n", + "2019-02-19 05:19:52,518 TEST : loss 0.01621639 - f-score 0.8781 - acc 0.8781\n", + "2019-02-19 05:20:03,429 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:20:05,254 epoch 99 - iter 0/526 - loss 0.00053865\n", + "2019-02-19 05:20:44,830 epoch 99 - iter 52/526 - loss 0.00109932\n", + "2019-02-19 05:21:25,549 epoch 99 - iter 104/526 - loss 0.00138798\n", + "2019-02-19 05:22:12,139 epoch 99 - iter 156/526 - loss 0.00128947\n", + "2019-02-19 05:22:51,781 epoch 99 - iter 208/526 - loss 0.00133365\n", + "2019-02-19 05:23:29,632 epoch 99 - iter 260/526 - loss 0.00139241\n", + "2019-02-19 05:24:08,193 epoch 99 - iter 312/526 - loss 0.00135227\n", + "2019-02-19 05:24:46,940 epoch 99 - iter 364/526 - loss 0.00133667\n", + "2019-02-19 05:25:26,571 epoch 99 - iter 416/526 - loss 0.00135636\n", + "2019-02-19 05:26:10,507 epoch 99 - iter 468/526 - loss 0.00136814\n", + "2019-02-19 05:26:58,024 epoch 99 - iter 520/526 - loss 0.00135109\n", + "2019-02-19 05:27:01,500 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:27:01,501 EPOCH 99 done: loss 0.0014 - lr 0.1000 - bad epochs 0\n", + "2019-02-19 05:27:38,507 DEV : loss 0.01141116 - f-score 0.9200 - acc 0.9200\n", + "2019-02-19 05:28:03,395 TEST : loss 0.01647193 - f-score 0.8805 - acc 0.8805\n", + "2019-02-19 05:28:03,399 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:28:04,242 epoch 100 - iter 0/526 - loss 0.00205240\n", + "2019-02-19 05:28:43,705 epoch 100 - iter 52/526 - loss 0.00142875\n", + "2019-02-19 05:29:25,255 epoch 100 - iter 104/526 - loss 0.00141394\n", + "2019-02-19 05:30:09,541 epoch 100 - iter 156/526 - loss 0.00135374\n", + "2019-02-19 05:30:47,861 epoch 100 - iter 208/526 - loss 0.00130048\n", + "2019-02-19 05:31:30,009 epoch 100 - iter 260/526 - loss 0.00125319\n", + "2019-02-19 05:32:07,358 epoch 100 - iter 312/526 - loss 0.00127834\n", + "2019-02-19 05:32:45,013 epoch 100 - iter 364/526 - loss 0.00122238\n", + "2019-02-19 05:33:22,192 epoch 100 - iter 416/526 - loss 0.00123365\n", + "2019-02-19 05:34:02,515 epoch 100 - iter 468/526 - loss 0.00119514\n", + "2019-02-19 05:34:42,764 epoch 100 - iter 520/526 - loss 0.00118177\n", + "2019-02-19 05:34:47,164 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:34:47,166 EPOCH 100 done: loss 0.0012 - lr 0.1000 - bad epochs 1\n", + "2019-02-19 05:35:25,628 DEV : loss 0.01209000 - f-score 0.9285 - acc 0.9285\n", + "2019-02-19 05:35:51,712 TEST : loss 0.01760402 - f-score 0.8824 - acc 0.8824\n", + "2019-02-19 05:35:51,714 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:35:52,501 epoch 101 - iter 0/526 - loss 0.00106431\n", + "2019-02-19 05:36:31,030 epoch 101 - iter 52/526 - loss 0.00123354\n", + "2019-02-19 05:37:18,043 epoch 101 - iter 104/526 - loss 0.00138914\n", + "2019-02-19 05:37:55,530 epoch 101 - iter 156/526 - loss 0.00134113\n", + "2019-02-19 05:38:37,605 epoch 101 - iter 208/526 - loss 0.00140518\n", + "2019-02-19 05:39:19,489 epoch 101 - iter 260/526 - loss 0.00137156\n", + "2019-02-19 05:40:01,490 epoch 101 - iter 312/526 - loss 0.00133900\n", + "2019-02-19 05:40:44,527 epoch 101 - iter 364/526 - loss 0.00133006\n", + "2019-02-19 05:41:32,385 epoch 101 - iter 416/526 - loss 0.00127373\n", + "2019-02-19 05:42:12,314 epoch 101 - iter 468/526 - loss 0.00121552\n", + "2019-02-19 05:42:53,265 epoch 101 - iter 520/526 - loss 0.00125339\n", + "2019-02-19 05:42:56,782 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:42:56,783 EPOCH 101 done: loss 0.0012 - lr 0.1000 - bad epochs 2\n", + "2019-02-19 05:43:32,009 DEV : loss 0.01149580 - f-score 0.9205 - acc 0.9205\n", + "2019-02-19 05:43:57,120 TEST : loss 0.01478640 - f-score 0.8867 - acc 0.8867\n", + "2019-02-19 05:43:57,122 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:43:57,792 epoch 102 - iter 0/526 - loss 0.00034308\n", + "2019-02-19 05:44:47,766 epoch 102 - iter 52/526 - loss 0.00111355\n", + "2019-02-19 05:45:32,037 epoch 102 - iter 104/526 - loss 0.00115448\n", + "2019-02-19 05:46:18,590 epoch 102 - iter 156/526 - loss 0.00119224\n", + "2019-02-19 05:46:56,421 epoch 102 - iter 208/526 - loss 0.00118233\n", + "2019-02-19 05:47:35,766 epoch 102 - iter 260/526 - loss 0.00121846\n", + "2019-02-19 05:48:21,188 epoch 102 - iter 312/526 - loss 0.00127382\n", + "2019-02-19 05:48:59,950 epoch 102 - iter 364/526 - loss 0.00126384\n", + "2019-02-19 05:49:42,131 epoch 102 - iter 416/526 - loss 0.00125549\n", + "2019-02-19 05:50:25,036 epoch 102 - iter 468/526 - loss 0.00123138\n", + "2019-02-19 05:51:08,328 epoch 102 - iter 520/526 - loss 0.00125433\n", + "2019-02-19 05:51:12,972 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:51:12,974 EPOCH 102 done: loss 0.0012 - lr 0.1000 - bad epochs 3\n", + "2019-02-19 05:51:49,285 DEV : loss 0.01211794 - f-score 0.9250 - acc 0.9250\n", + "2019-02-19 05:52:14,459 TEST : loss 0.01766142 - f-score 0.8824 - acc 0.8824\n", + "2019-02-19 05:52:14,461 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:52:15,265 epoch 103 - iter 0/526 - loss 0.00020129\n", + "2019-02-19 05:52:54,278 epoch 103 - iter 52/526 - loss 0.00117241\n", + "2019-02-19 05:53:40,566 epoch 103 - iter 104/526 - loss 0.00129302\n", + "2019-02-19 05:54:21,014 epoch 103 - iter 156/526 - loss 0.00119402\n", + "2019-02-19 05:55:07,676 epoch 103 - iter 208/526 - loss 0.00129898\n", + "2019-02-19 05:55:48,013 epoch 103 - iter 260/526 - loss 0.00130149\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019-02-19 05:56:29,273 epoch 103 - iter 312/526 - loss 0.00130189\n", + "2019-02-19 05:57:11,297 epoch 103 - iter 364/526 - loss 0.00133018\n", + "2019-02-19 05:57:49,646 epoch 103 - iter 416/526 - loss 0.00131048\n", + "2019-02-19 05:58:30,983 epoch 103 - iter 468/526 - loss 0.00130456\n", + "2019-02-19 05:59:13,014 epoch 103 - iter 520/526 - loss 0.00127761\n", + "2019-02-19 05:59:16,259 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 05:59:16,260 EPOCH 103 done: loss 0.0013 - lr 0.1000 - bad epochs 4\n", + "2019-02-19 05:59:52,479 DEV : loss 0.01174637 - f-score 0.9240 - acc 0.9240\n", + "2019-02-19 06:00:17,984 TEST : loss 0.01570701 - f-score 0.8824 - acc 0.8824\n", + "2019-02-19 06:00:17,987 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:00:18,988 epoch 104 - iter 0/526 - loss 0.00028872\n", + "2019-02-19 06:01:00,303 epoch 104 - iter 52/526 - loss 0.00128675\n", + "2019-02-19 06:01:40,773 epoch 104 - iter 104/526 - loss 0.00129726\n", + "2019-02-19 06:02:23,467 epoch 104 - iter 156/526 - loss 0.00116072\n", + "2019-02-19 06:03:01,850 epoch 104 - iter 208/526 - loss 0.00117532\n", + "2019-02-19 06:03:41,140 epoch 104 - iter 260/526 - loss 0.00118035\n", + "2019-02-19 06:04:23,657 epoch 104 - iter 312/526 - loss 0.00123913\n", + "2019-02-19 06:05:09,079 epoch 104 - iter 364/526 - loss 0.00119165\n", + "2019-02-19 06:05:52,089 epoch 104 - iter 416/526 - loss 0.00120042\n", + "2019-02-19 06:06:29,401 epoch 104 - iter 468/526 - loss 0.00124895\n", + "2019-02-19 06:07:10,132 epoch 104 - iter 520/526 - loss 0.00127027\n", + "2019-02-19 06:07:13,510 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:07:13,512 EPOCH 104 done: loss 0.0013 - lr 0.1000 - bad epochs 5\n", + "2019-02-19 06:07:49,372 DEV : loss 0.01213129 - f-score 0.9100 - acc 0.9100\n", + "2019-02-19 06:08:13,798 TEST : loss 0.02008677 - f-score 0.8485 - acc 0.8485\n", + "Epoch 103: reducing learning rate of group 0 to 5.0000e-02.\n", + "2019-02-19 06:08:13,802 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:08:14,471 epoch 105 - iter 0/526 - loss 0.00048894\n", + "2019-02-19 06:08:54,567 epoch 105 - iter 52/526 - loss 0.00089895\n", + "2019-02-19 06:09:30,302 epoch 105 - iter 104/526 - loss 0.00094203\n", + "2019-02-19 06:10:10,807 epoch 105 - iter 156/526 - loss 0.00086284\n", + "2019-02-19 06:10:49,854 epoch 105 - iter 208/526 - loss 0.00085964\n", + "2019-02-19 06:11:28,507 epoch 105 - iter 260/526 - loss 0.00080848\n", + "2019-02-19 06:12:08,794 epoch 105 - iter 312/526 - loss 0.00086415\n", + "2019-02-19 06:12:53,583 epoch 105 - iter 364/526 - loss 0.00088859\n", + "2019-02-19 06:13:34,755 epoch 105 - iter 416/526 - loss 0.00090857\n", + "2019-02-19 06:14:16,640 epoch 105 - iter 468/526 - loss 0.00090407\n", + "2019-02-19 06:15:00,598 epoch 105 - iter 520/526 - loss 0.00088821\n", + "2019-02-19 06:15:05,196 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:15:05,198 EPOCH 105 done: loss 0.0009 - lr 0.0500 - bad epochs 0\n", + "2019-02-19 06:15:58,421 DEV : loss 0.01244135 - f-score 0.9190 - acc 0.9190\n", + "2019-02-19 06:16:34,003 TEST : loss 0.01626293 - f-score 0.8862 - acc 0.8862\n", + "2019-02-19 06:16:45,196 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:16:45,951 epoch 106 - iter 0/526 - loss 0.00030530\n", + "2019-02-19 06:17:27,294 epoch 106 - iter 52/526 - loss 0.00056293\n", + "2019-02-19 06:18:11,224 epoch 106 - iter 104/526 - loss 0.00061212\n", + "2019-02-19 06:18:50,629 epoch 106 - iter 156/526 - loss 0.00069673\n", + "2019-02-19 06:19:33,765 epoch 106 - iter 208/526 - loss 0.00075924\n", + "2019-02-19 06:20:14,245 epoch 106 - iter 260/526 - loss 0.00076106\n", + "2019-02-19 06:20:52,190 epoch 106 - iter 312/526 - loss 0.00077286\n", + "2019-02-19 06:21:32,268 epoch 106 - iter 364/526 - loss 0.00074958\n", + "2019-02-19 06:22:09,558 epoch 106 - iter 416/526 - loss 0.00081282\n", + "2019-02-19 06:22:48,818 epoch 106 - iter 468/526 - loss 0.00083233\n", + "2019-02-19 06:23:31,557 epoch 106 - iter 520/526 - loss 0.00082965\n", + "2019-02-19 06:23:35,328 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:23:35,329 EPOCH 106 done: loss 0.0008 - lr 0.0500 - bad epochs 0\n", + "2019-02-19 06:24:13,622 DEV : loss 0.01348019 - f-score 0.9180 - acc 0.9180\n", + "2019-02-19 06:24:39,040 TEST : loss 0.01750593 - f-score 0.8791 - acc 0.8791\n", + "2019-02-19 06:24:49,961 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:24:51,260 epoch 107 - iter 0/526 - loss 0.00168006\n", + "2019-02-19 06:25:33,840 epoch 107 - iter 52/526 - loss 0.00066215\n", + "2019-02-19 06:26:13,859 epoch 107 - iter 104/526 - loss 0.00066321\n", + "2019-02-19 06:26:52,051 epoch 107 - iter 156/526 - loss 0.00069134\n", + "2019-02-19 06:27:36,375 epoch 107 - iter 208/526 - loss 0.00065783\n", + "2019-02-19 06:28:14,066 epoch 107 - iter 260/526 - loss 0.00063577\n", + "2019-02-19 06:28:56,302 epoch 107 - iter 312/526 - loss 0.00065161\n", + "2019-02-19 06:29:34,917 epoch 107 - iter 364/526 - loss 0.00063521\n", + "2019-02-19 06:30:11,756 epoch 107 - iter 416/526 - loss 0.00062486\n", + "2019-02-19 06:30:50,263 epoch 107 - iter 468/526 - loss 0.00060772\n", + "2019-02-19 06:31:33,289 epoch 107 - iter 520/526 - loss 0.00062081\n", + "2019-02-19 06:31:35,950 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:31:35,951 EPOCH 107 done: loss 0.0006 - lr 0.0500 - bad epochs 0\n", + "2019-02-19 06:32:11,180 DEV : loss 0.01386657 - f-score 0.9195 - acc 0.9195\n", + "2019-02-19 06:32:35,566 TEST : loss 0.01769999 - f-score 0.8848 - acc 0.8848\n", + "2019-02-19 06:32:46,461 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:32:47,097 epoch 108 - iter 0/526 - loss 0.00015158\n", + "2019-02-19 06:33:24,171 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:33:24,173 Exiting from training early.\n", + "2019-02-19 06:33:24,174 Saving model ...\n", + "2019-02-19 06:33:34,901 Done.\n", + "2019-02-19 06:33:34,902 ----------------------------------------------------------------------------------------------------\n", + "2019-02-19 06:33:34,903 Testing using best model ...\n", + "2019-02-19 06:34:03,015 MICRO_AVG: acc 0.8848 - f1-score 0.8848\n", + "2019-02-19 06:34:03,018 MARCO_AVG: acc 0.8847 - f1-score 0.8862\n", + "2019-02-19 06:34:03,019 0 tp: 894 - fp: 89 - fn: 152 - tn: 894 - precision: 0.9095 - recall: 0.8547 - accuracy: 0.8812 - f1-score: 0.8812\n", + "2019-02-19 06:34:03,020 1 tp: 957 - fp: 152 - fn: 89 - tn: 957 - precision: 0.8629 - recall: 0.9149 - accuracy: 0.8882 - f1-score: 0.8881\n", + "2019-02-19 06:34:03,020 ----------------------------------------------------------------------------------------------------\n" + ] + }, + { + "data": { + "text/plain": [ + "{'test_score': 0.8848,\n", + " 'dev_score_history': [0.7349,\n", + " 0.7599,\n", + " 0.7714,\n", + " 0.7859,\n", + " 0.7994,\n", + " 0.8054,\n", + " 0.7654,\n", + " 0.7994,\n", + " 0.8069,\n", + " 0.8179,\n", + " 0.8169,\n", + " 0.8114,\n", + " 0.8329,\n", + " 0.8289,\n", + " 0.8579,\n", + " 0.8744,\n", + " 0.8754,\n", + " 0.8739,\n", + " 0.8789,\n", + " 0.9025,\n", + " 0.8769,\n", + " 0.8749,\n", + " 0.8944,\n", + " 0.907,\n", + " 0.904,\n", + " 0.9185,\n", + " 0.9055,\n", + " 0.92,\n", + " 0.914,\n", + " 0.9065,\n", + " 0.925,\n", + " 0.9165,\n", + " 0.917,\n", + " 0.9215,\n", + " 0.9055,\n", + " 0.908,\n", + " 0.926,\n", + " 0.927,\n", + " 0.93,\n", + " 0.925,\n", + " 0.9235,\n", + " 0.921,\n", + " 0.9235,\n", + " 0.9295,\n", + " 0.9185,\n", + " 0.926,\n", + " 0.9245,\n", + " 0.9185,\n", + " 0.9195,\n", + " 0.917,\n", + " 0.9055,\n", + " 0.918,\n", + " 0.914,\n", + " 0.926,\n", + " 0.924,\n", + " 0.923,\n", + " 0.9205,\n", + " 0.9205,\n", + " 0.924,\n", + " 0.9245,\n", + " 0.9195,\n", + " 0.922,\n", + " 0.921,\n", + " 0.923,\n", + " 0.92,\n", + " 0.9135,\n", + " 0.9195,\n", + " 0.9145,\n", + " 0.922,\n", + " 0.923,\n", + " 0.9205,\n", + " 0.9195,\n", + " 0.921,\n", + " 0.927,\n", + " 0.922,\n", + " 0.9205,\n", + " 0.914,\n", + " 0.92,\n", + " 0.9245,\n", + " 0.925,\n", + " 0.903,\n", + " 0.9185,\n", + " 0.918,\n", + " 0.921,\n", + " 0.9245,\n", + " 0.9095,\n", + " 0.91,\n", + " 0.918,\n", + " 0.9235,\n", + " 0.915,\n", + " 0.924,\n", + " 0.918,\n", + " 0.922,\n", + " 0.9155,\n", + " 0.914,\n", + " 0.9145,\n", + " 0.918,\n", + " 0.9215,\n", + " 0.92,\n", + " 0.9285,\n", + " 0.9205,\n", + " 0.925,\n", + " 0.924,\n", + " 0.91,\n", + " 0.919,\n", + " 0.918,\n", + " 0.9195],\n", + " 'train_loss_history': [0.016708851694586187,\n", + " 0.015160481161020435,\n", + " 0.014552138807315904,\n", + " 0.013930917686584849,\n", + " 0.013529171745206688,\n", + " 0.013466031610253915,\n", + " 0.013145331682230189,\n", + " 0.012817235365284224,\n", + " 0.012712909168018802,\n", + " 0.012545509526708477,\n", + " 0.01243734514941351,\n", + " 0.012369954493422467,\n", + " 0.011985785183043314,\n", + " 0.011734974272046722,\n", + " 0.011265585188927707,\n", + " 0.009753199330176427,\n", + " 0.008712939202022329,\n", + " 0.008085133701183956,\n", + " 0.007628458493796058,\n", + " 0.007359891166205245,\n", + " 0.007021535409405393,\n", + " 0.0068794458783159465,\n", + " 0.006523635948451897,\n", + " 0.006310657831531399,\n", + " 0.006219421519852671,\n", + " 0.006067579466608089,\n", + " 0.006013898238806183,\n", + " 0.005733796698424447,\n", + " 0.0057139206003931345,\n", + " 0.005473889973129466,\n", + " 0.005376285016842155,\n", + " 0.00523868023881753,\n", + " 0.005051989691873922,\n", + " 0.005016283240534711,\n", + " 0.004839610288709917,\n", + " 0.004950970484230559,\n", + " 0.004769527550500547,\n", + " 0.0046601146442979335,\n", + " 0.004447404004039806,\n", + " 0.004532231647313424,\n", + " 0.00438205041639818,\n", + " 0.004246738519083316,\n", + " 0.004066525674837579,\n", + " 0.003926651166311192,\n", + " 0.004010900164831025,\n", + " 0.003835272856796392,\n", + " 0.0038848838711739663,\n", + " 0.003801890622175255,\n", + " 0.0035123873102948966,\n", + " 0.003456471815344966,\n", + " 0.0035348378520145304,\n", + " 0.0034528942777046537,\n", + " 0.003348463570674638,\n", + " 0.003193427973256063,\n", + " 0.003242392421183077,\n", + " 0.0030558225421823608,\n", + " 0.0030510075235736364,\n", + " 0.0029469775199211967,\n", + " 0.0028531293365197997,\n", + " 0.002834125804684923,\n", + " 0.0027787558807236194,\n", + " 0.0027531463259204804,\n", + " 0.0025840972514633727,\n", + " 0.0026839049507555997,\n", + " 0.002527960452501411,\n", + " 0.002543972393569869,\n", + " 0.002498156162445083,\n", + " 0.002457980479604402,\n", + " 0.0024528499806334,\n", + " 0.0023583637921873435,\n", + " 0.002392645299735235,\n", + " 0.002279001029983971,\n", + " 0.002196007255093171,\n", + " 0.002195928766141565,\n", + " 0.001935656289787772,\n", + " 0.0019363653748697648,\n", + " 0.0018713638718433575,\n", + " 0.0019595822783970668,\n", + " 0.0019903742065232113,\n", + " 0.001939045057511014,\n", + " 0.0019225626514375645,\n", + " 0.001705819316066487,\n", + " 0.0017266585037307453,\n", + " 0.0016854887821701474,\n", + " 0.0015841096522989605,\n", + " 0.001820786543977104,\n", + " 0.0016709693140520654,\n", + " 0.0016224729744373856,\n", + " 0.001661624518069777,\n", + " 0.0017472637632891504,\n", + " 0.0014731667006905014,\n", + " 0.0014054862485825485,\n", + " 0.0015519472988850594,\n", + " 0.001334842675344536,\n", + " 0.0013547355089343052,\n", + " 0.0013040071516550909,\n", + " 0.0013844019493054816,\n", + " 0.0011575900212547356,\n", + " 0.0013619943227098574,\n", + " 0.0011829861343373084,\n", + " 0.001247771065135475,\n", + " 0.0012492339696869494,\n", + " 0.0012906563962573965,\n", + " 0.0012776504237974814,\n", + " 0.000895365420656988,\n", + " 0.0008274823035215936,\n", + " 0.0006204608782981346],\n", + " 'dev_loss_history': [0.015533569268882275,\n", + " 0.014857761561870575,\n", + " 0.014346286654472351,\n", + " 0.013920259661972523,\n", + " 0.013386452570557594,\n", + " 0.012671118602156639,\n", + " 0.014364621601998806,\n", + " 0.012792730703949928,\n", + " 0.01260459516197443,\n", + " 0.012190107256174088,\n", + " 0.012093155644834042,\n", + " 0.012637223117053509,\n", + " 0.011709899641573429,\n", + " 0.01152237132191658,\n", + " 0.010071340948343277,\n", + " 0.008730717934668064,\n", + " 0.009065507911145687,\n", + " 0.008951223455369473,\n", + " 0.008494862355291843,\n", + " 0.007422446273267269,\n", + " 0.009027659893035889,\n", + " 0.010181138291954994,\n", + " 0.00811642687767744,\n", + " 0.007011303212493658,\n", + " 0.007075179368257523,\n", + " 0.006715509574860334,\n", + " 0.007419547066092491,\n", + " 0.006599108688533306,\n", + " 0.0067612831480801105,\n", + " 0.007427784148603678,\n", + " 0.006313795689493418,\n", + " 0.006555614527314901,\n", + " 0.006710393819957972,\n", + " 0.006489144638180733,\n", + " 0.007628345862030983,\n", + " 0.007547229994088411,\n", + " 0.0067196800373494625,\n", + " 0.006582622416317463,\n", + " 0.006891313940286636,\n", + " 0.006393517833203077,\n", + " 0.006469651125371456,\n", + " 0.00665303785353899,\n", + " 0.006635638885200024,\n", + " 0.006639295723289251,\n", + " 0.0068130530416965485,\n", + " 0.006843602284789085,\n", + " 0.006837761960923672,\n", + " 0.007117715664207935,\n", + " 0.007072587497532368,\n", + " 0.007978592999279499,\n", + " 0.009340363554656506,\n", + " 0.007133088540285826,\n", + " 0.007803276181221008,\n", + " 0.0067718359641730785,\n", + " 0.00798116996884346,\n", + " 0.007982995361089706,\n", + " 0.00787285715341568,\n", + " 0.008055082522332668,\n", + " 0.00815735012292862,\n", + " 0.007912601344287395,\n", + " 0.008659182116389275,\n", + " 0.007356438785791397,\n", + " 0.00804904755204916,\n", + " 0.008919219486415386,\n", + " 0.007776861544698477,\n", + " 0.01033700816333294,\n", + " 0.009298614226281643,\n", + " 0.00871719978749752,\n", + " 0.00926122721284628,\n", + " 0.009263498708605766,\n", + " 0.009112130850553513,\n", + " 0.00948996003717184,\n", + " 0.008984975516796112,\n", + " 0.009276941418647766,\n", + " 0.009573808871209621,\n", + " 0.009178363718092442,\n", + " 0.010200003162026405,\n", + " 0.008755668997764587,\n", + " 0.00981319509446621,\n", + " 0.00911485031247139,\n", + " 0.010518982075154781,\n", + " 0.009392832405865192,\n", + " 0.010198121890425682,\n", + " 0.010506096296012402,\n", + " 0.011796471662819386,\n", + " 0.012919222936034203,\n", + " 0.011561417952179909,\n", + " 0.009509583935141563,\n", + " 0.009394108317792416,\n", + " 0.010476901195943356,\n", + " 0.011427275836467743,\n", + " 0.011473114602267742,\n", + " 0.011757048778235912,\n", + " 0.012347670271992683,\n", + " 0.010681777261197567,\n", + " 0.012262973934412003,\n", + " 0.011161251924932003,\n", + " 0.01133703999221325,\n", + " 0.01141116302460432,\n", + " 0.012089996598660946,\n", + " 0.011495801620185375,\n", + " 0.012117942795157433,\n", + " 0.011746374890208244,\n", + " 0.012131287716329098,\n", + " 0.012441350147128105,\n", + " 0.013480187393724918,\n", + " 0.01386656891554594]}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 7. start the training\n", + "trainer.train('/local/burghbvander/flair_experiments/',\n", + " learning_rate=0.1,\n", + " mini_batch_size=32,\n", + " anneal_factor=0.5,\n", + " patience=5,\n", + " max_epochs=150)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# 8. plot training curves (optional)\n", + "from flair.visual.training_curves import Plotter\n", + "plotter = Plotter()\n", + "plotter.plot_training_curves('/local/burghbvander/flair_experiments/loss.tsv')\n", + "plotter.plot_weights('/local/burghbvander/flair_experiments/weights.txt')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/experiments/dutch/flair/requirements.txt b/experiments/dutch/flair/requirements.txt new file mode 100644 index 0000000..276ef1b --- /dev/null +++ b/experiments/dutch/flair/requirements.txt @@ -0,0 +1 @@ +flair==0.4.0 \ No newline at end of file diff --git a/experiments/dutch/svm/README.md b/experiments/dutch/svm/README.md new file mode 100644 index 0000000..37feef0 --- /dev/null +++ b/experiments/dutch/svm/README.md @@ -0,0 +1,7 @@ +# SVM classifier baseline + +## Description + +[LinearSVC](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html) from [scikit-learn](https://scikit-learn.org) was used to obtain a baseline for the sentiment polarity classification task. + +The folder simply includes \ No newline at end of file diff --git a/experiments/dutch/svm/requirements.txt b/experiments/dutch/svm/requirements.txt new file mode 100644 index 0000000..1afcc19 --- /dev/null +++ b/experiments/dutch/svm/requirements.txt @@ -0,0 +1 @@ +scikit-learn==0.20.1 \ No newline at end of file diff --git a/experiments/dutch/svm/svm_experiment.ipynb b/experiments/dutch/svm/svm_experiment.ipynb new file mode 100644 index 0000000..13d656d --- /dev/null +++ b/experiments/dutch/svm/svm_experiment.ipynb @@ -0,0 +1,163 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.datasets import load_files\n", + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "from sklearn.svm import LinearSVC\n", + "from sklearn.metrics import accuracy_score" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "basedir = '/local/burghbvander/110kDBRDv2/'" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "train = load_files(basedir + 'train', encoding='utf-8')\n", + "test = load_files(basedir + 'test', encoding='utf-8')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "x_orig_train, y_train = train.data, train.target\n", + "x_orig_test, y_test = test.data, test.target" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',\n", + " dtype=, encoding='utf-8', input='content',\n", + " lowercase=True, max_df=1.0, max_features=None, min_df=1,\n", + " ngram_range=(1, 4), norm='l2', preprocessor=None, smooth_idf=True,\n", + " stop_words=None, strip_accents=None, sublinear_tf=False,\n", + " token_pattern='(?u)\\\\b\\\\w\\\\w+\\\\b', tokenizer=None, use_idf=True,\n", + " vocabulary=None)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ngram_range = (1,4)\n", + "analyzer = 'word'\n", + "\n", + "vectorizer = TfidfVectorizer(\n", + " ngram_range=ngram_range,\n", + " analyzer=analyzer\n", + ")\n", + "\n", + "vectorizer.fit(x_orig_train + x_orig_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "x_train = vectorizer.transform(x_orig_train)\n", + "x_test = vectorizer.transform(x_orig_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n", + " intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n", + " multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n", + " verbose=0)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "svc = LinearSVC()\n", + "svc.fit(x_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = svc.predict(x_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8915950334288443" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accuracy_score(y_test, y_pred)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/experiments/dutch/ulmfit_no_pretrain/README.md b/experiments/dutch/ulmfit_no_pretrain/README.md new file mode 100644 index 0000000..a4d9e72 --- /dev/null +++ b/experiments/dutch/ulmfit_no_pretrain/README.md @@ -0,0 +1,9 @@ +# ULMFiT pre-trained LM experiment + +## Description + +This folder contains a Jupyter Notebook with experiments and results on the 110kDBRD dataset for sentiment polarity classification. It uses no pre-trained LM and the LM is therefore trained on all available data in 110kDBRD. + +## Run + +The `path` variable to the 110kDBRD dataset should be changed and the Jupyter Notebook should run fine. \ No newline at end of file diff --git a/experiments/dutch/ulmfit_no_pretrain/requirements.txt b/experiments/dutch/ulmfit_no_pretrain/requirements.txt new file mode 100644 index 0000000..5abc0a5 --- /dev/null +++ b/experiments/dutch/ulmfit_no_pretrain/requirements.txt @@ -0,0 +1 @@ +fastai==1.0.45 \ No newline at end of file diff --git a/experiments/dutch/ulmfit_no_pretrain/ulmfit_no_pretrain.ipynb b/experiments/dutch/ulmfit_no_pretrain/ulmfit_no_pretrain.ipynb new file mode 100644 index 0000000..571f075 --- /dev/null +++ b/experiments/dutch/ulmfit_no_pretrain/ulmfit_no_pretrain.ipynb @@ -0,0 +1,1062 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# IMDB" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%reload_ext autoreload\n", + "%autoreload 2\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from fastai.text import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparing the data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[PosixPath('/local/burghbvander/110kDBRDv2_no_pretrain/tmp_lm'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2_no_pretrain/test'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2_no_pretrain/unsup'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2_no_pretrain/urls.txt'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2_no_pretrain/tmp_clas'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2_no_pretrain/train'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2_no_pretrain/models')]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = Path('/local/burghbvander/110kDBRDv2_no_pretrain/')\n", + "path.ls()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "bs=118" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "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", + " .random_split_by_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('tmp_lm')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "data_lm = load_data(path, 'tmp_lm', bs=bs)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idxtext
0ik uiteindelijk wel zeker , xxmaj matthias was dood . \\n xxmaj uit de verschillende verhaallijnen heb ik echter nooit kunnen distilleren wie xxmaj matthias nu wel was . xxmaj wel was het duidelijk dat hij op zijn weg heel wat tegenslagen te verwerken kreeg en niet altijd begrepen werd . \\n xxmaj ik kreeg wel een beter beeld van de naasten van xxmaj matthias . \\n
1de schrijver . \\n ' xxmaj het is autobiografisch , helemaal waargebeurd maar toch zie je elementen van fictie in de stijl en vooral de opbouw , dat maakt het des te sterker . ' - xxmaj win boeken voor je hele leesclub ! \\n ' xxmaj wat beweegt de jonge zwarte deelpachter xxmaj tucker xxmaj caliban om huis , vee en akkers te vernietigen en met vrouw
2xxmaj win boeken voor je hele leesclub ! \\n ' xxmaj wat beweegt de jonge zwarte deelpachter xxmaj tucker xxmaj caliban om huis , vee en akkers te vernietigen en met vrouw en kind naar het xxmaj noorden te vertrekken?'- xxmaj win xxmaj uit de maat voor je hele leesgroep ! \\n xxmaj we gaan xxmaj wil van xxmaj jeroen xxmaj olyslaegers luisteren via de gratis xxmaj hebban
3xxmaj je leert veel over het katholieke geloof , de verschillende stromingen , geschiedenis en gebruiken . xxmaj al vanaf de eerste bladzijden toont xxmaj caldwell zich een goed onderwijzer , de inleiding is een historische kanttekening over de verschillende stromingen binnen deze religie . xxmaj in het verhaal wordt uitvoerig ingegaan op het verloop van het xxunk onderzoek binnen het xxmaj vaticaan . xxmaj de zorgvuldig uitgewerkte details hebben
4mag xxmaj ambrose van zijn moeder niet met hem omgaan . xxmaj totdat hij erachter komt dat ze allebei gek zijn op xxunk ... \\n \\n xxmaj het eerste wat mij opviel was dat xxunk een grote rol speelt in het boek . xxmaj ambrose is natuurlijk gek op xxunk , dus komt dat ook veel voor in het boek . xxmaj zo is de de titel van het
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "data_lm.show_batch()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Language model" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from fastai.text.models import AWD_LSTM" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "learn = language_model_learner(data_lm, AWD_LSTM, drop_mult=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Min numerical gradient: 1.58E-02\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "learn.recorder.plot(skip_end=15)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 44:32

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
13.8611423.6811370.362308
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "learn.fit_one_cycle(1, 1e-2, moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('fit_head')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "learn.load('fit_head');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To complete the fine-tuning, we can then unfeeze and launch a new training." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "learn.unfreeze()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Min numerical gradient: 1.45E-05\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "learn.recorder.plot(skip_end=15)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "from fastai.callbacks import SaveModelCallback\n", + "cb = SaveModelCallback(learn, every='epoch')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " \n", + " 65.00% [13/20 10:52:59<5:51:36]\n", + "
\n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
13.6710353.6039900.369439
23.6000483.5262030.377952
33.5221763.4461750.386902
43.4075563.3740150.395235
53.3594153.3147430.402030
63.3354503.2665840.407596
73.2747443.2299750.411999
83.2435053.2005300.415410
93.2091893.1776830.418160
103.2099213.1583600.420391
113.1370683.1434750.422215
123.1702853.1313290.423638
133.1180373.1218550.424704
\n", + "\n", + "\n", + "
\n", + " \n", + " \n", + " Interrupted\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit_one_cycle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1e-4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmoms\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.8\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.7\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcb\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/local/burghbvander/anaconda3/lib/python3.7/site-packages/fastai/train.py\u001b[0m in \u001b[0;36mfit_one_cycle\u001b[0;34m(learn, cyc_len, max_lr, moms, div_factor, pct_start, wd, callbacks, tot_epochs, start_epoch)\u001b[0m\n\u001b[1;32m 20\u001b[0m callbacks.append(OneCycleScheduler(learn, max_lr, moms=moms, div_factor=div_factor, pct_start=pct_start, tot_epochs=tot_epochs, \n\u001b[1;32m 21\u001b[0m start_epoch=start_epoch))\n\u001b[0;32m---> 22\u001b[0;31m \u001b[0mlearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcyc_len\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax_lr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwd\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcallbacks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 23\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mlr_find\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlearn\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mLearner\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstart_lr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mFloats\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1e-7\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mend_lr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mFloats\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_it\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstop_div\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mbool\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwd\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/local/burghbvander/anaconda3/lib/python3.7/site-packages/fastai/basic_train.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, epochs, lr, wd, callbacks)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0mcallbacks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mcb\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mcb\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcallback_fns\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mlistify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcallbacks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m fit(epochs, self.model, self.loss_func, opt=self.opt, data=self.data, metrics=self.metrics,\n\u001b[0;32m--> 178\u001b[0;31m callbacks=self.callbacks+callbacks)\n\u001b[0m\u001b[1;32m 179\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mcreate_opt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mFloats\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwd\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mFloats\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/local/burghbvander/anaconda3/lib/python3.7/site-packages/fastai/utils/mem.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 80\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 81\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 82\u001b[0m if (\"CUDA out of memory\" in str(e) or\n", + "\u001b[0;32m/local/burghbvander/anaconda3/lib/python3.7/site-packages/fastai/basic_train.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(epochs, model, loss_func, opt, data, callbacks, metrics)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mxb\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0myb\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mprogress_bar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain_dl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparent\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mpbar\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[0mxb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcb_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 90\u001b[0;31m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloss_batch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloss_func\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mopt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcb_handler\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 91\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcb_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_batch_end\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloss\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/local/burghbvander/anaconda3/lib/python3.7/site-packages/fastai/basic_train.py\u001b[0m in \u001b[0;36mloss_batch\u001b[0;34m(model, xb, yb, loss_func, opt, cb_handler)\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mopt\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 27\u001b[0;31m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcb_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_backward_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloss\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 28\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0mcb_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_backward_end\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/local/burghbvander/anaconda3/lib/python3.7/site-packages/fastai/callback.py\u001b[0m in \u001b[0;36mon_backward_begin\u001b[0;34m(self, loss)\u001b[0m\n\u001b[1;32m 240\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mon_backward_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mTensor\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 241\u001b[0m \u001b[0;34m\"Handle gradient calculation on `loss`.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 242\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msmoothener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_value\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdetach\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcpu\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 243\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstate_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'last_loss'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstate_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'smooth_loss'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msmoothener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msmooth\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 244\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mcb\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcallbacks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "learn.fit_one_cycle(20, 1e-4, moms=(0.8,0.7), callbacks=[cb])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('fine_tuned')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How good is our model? Well let's try to see what it predicts after a few given words." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "learn.load('bestmodel_13');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "TEXT = \"Wat een fantastisch boek\"\n", + "N_WORDS = 40\n", + "N_SENTENCES = 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\n\".join(learn.predict(TEXT, N_WORDS, temperature=0.75) for _ in range(N_SENTENCES)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have to save the model but also it's 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", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save_encoder('fine_tuned_enc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Classifier" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "bs = 32" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "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('tmp_clas')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "data_clas = load_data(path, 'tmp_clas', bs=bs)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
texttarget
xxbos “ xxmaj het huwelijk is het graf van de liefde . ” \\n \\n xxmaj woorden , woorden , woorden . xxmaj in de juiste volgorde vormen ze een universum waarin je helemaal wil verdwijnen . xxmaj alleen al bij het horen van de naam xxmaj proust word ik – heel toepasselijk - teruggeworpen naar die heerlijke weken waarin ik mocht verdwalen in de omgeving van xxmaj xxunkneg
xxbos xxup de xxup cover \\n \\n xxmaj de cover toont een xxunk zoals xxmaj homeros dat waarschijnlijk in zijn gedachten had toen hij de ' xxmaj odysseus ' geschreven heeft . \\n \\n xxmaj op de achtergrond zie je felle xxunk die van een onweer kunnen zijn , maar evengoed kan het de verschijning van één of andere god zijn . xxmaj het gaat nu éénmaal overpos
xxbos xxmaj het is zo treurig dat in het tijdperk waarin iedereen ( in de vrije wereld althans ) uitstekend xxunk is om de juistheid of xxunk van elke stelling , elke bewering zelf na te gaan , vrijwel niemand de moeite neemt om het te doen . xxmaj het kritisch vermogen ontbreekt kennelijk volkomen . xxmaj een paar xxunk en je duikt in gedigitaliseerde archieven , bekijkt ebook versiesneg
xxbos xxmaj david xxmaj garnett ( 1892 - 1981 ) schreef dit debuut al in 1922 en de novelle werd meteen als meesterwerk bestempeld . xxmaj hij maakte destijds deel uit van de xxmaj xxunk - die bestond uit schrijvers , kunstenaars en intellectuelen - waar onder andere ook xxmaj virginia xxmaj woolf , haar echtgenoot xxmaj leonard xxmaj woolf , xxmaj vanessa en xxmaj clive xxmaj bell , xxmajpos
xxbos xxmaj hij is wonderbaarlijk lichtvoetig , die xxmaj daniel xxmaj kehlmann , en gezegend met een onbegrijpelijk soepele pen . xxmaj ogenschijnlijk achteloos schudt hij de ene originele en vederlichte zin na de andere uit de mouw , en hij presenteert allerlei filosofische thema 's of tragische scenes met zo'n virtuositeit en souplesse dat je de zwaarte en complexiteit van hun inhoud bijna vergeet . xxmaj sommige recensenten vindenpos
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "data_clas.show_batch()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then create a model to classify those reviews and load the encoder we saved before." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "learn = text_classifier_learner(data_clas, AWD_LSTM, drop_mult=0.5)\n", + "learn.load_encoder('fine_tuned_enc')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Min numerical gradient: 1.74E-01\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "learn.recorder.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 02:47

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
10.5240420.4085990.811843
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "learn.fit_one_cycle(1, 1e-3, moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('first')" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "learn.load('first');" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 16:41

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
10.4142960.2675850.892073
20.3241290.2292280.914040
30.2995210.2259340.914518
40.2756850.2081430.927412
50.2521720.2164820.923114
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "learn.freeze_to(-2)\n", + "learn.fit_one_cycle(5, slice(1e-2/(2.6**4),1e-2), moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('second')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "learn.load('second');" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "from fastai.callbacks import SaveModelCallback\n", + "cb = SaveModelCallback(learn)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 04:43

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
10.3260480.2361890.903534
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "learn.freeze_to(-3)\n", + "learn.fit_one_cycle(1, slice(5e-6/(2.6**4),5e-5), moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "

\n", + " \n", + " \n", + " 50.00% [1/2 08:20<08:20]\n", + "
\n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
10.2429300.2177290.923114
\n", + "\n", + "\n", + "
\n", + " \n", + " \n", + " 93.89% [553/589 08:23<00:32 0.2488]\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "learn.unfreeze()\n", + "learn.fit_one_cycle(2, slice(1e-3/(2.6**4),1e-3), moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('fitted') # better train loss, same accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "learn.show_results(rows=10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "interp = learn.interpret()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "interp.plot_confusion_matrix()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/experiments/dutch/ulmfit_pretrained_wiki/README.md b/experiments/dutch/ulmfit_pretrained_wiki/README.md new file mode 100644 index 0000000..e26c313 --- /dev/null +++ b/experiments/dutch/ulmfit_pretrained_wiki/README.md @@ -0,0 +1,13 @@ +# ULMFiT pre-trained LM experiment + +## Description + +This folder contains a Jupyter Notebook with experiments and results on the 110kDBRD dataset for sentiment polarity classification. We first pre-trained a model on Dutch Wikipedia. + +## Pre-trained Dutch LM + +An LM pre-trained on the Dutch Wikipedia can be downloaded from here: http://bit.ly/2trOhzq + +## Run + +The `path` variable to the 110kDBRD dataset should be changed and the Jupyter Notebook should run fine. \ No newline at end of file diff --git a/experiments/dutch/ulmfit_pretrained_wiki/requirements.txt b/experiments/dutch/ulmfit_pretrained_wiki/requirements.txt new file mode 100644 index 0000000..5abc0a5 --- /dev/null +++ b/experiments/dutch/ulmfit_pretrained_wiki/requirements.txt @@ -0,0 +1 @@ +fastai==1.0.45 \ No newline at end of file diff --git a/experiments/dutch/ulmfit_pretrained_wiki/ulmfit_pretrain_exeperiment.ipynb b/experiments/dutch/ulmfit_pretrained_wiki/ulmfit_pretrain_exeperiment.ipynb new file mode 100644 index 0000000..ce4b01b --- /dev/null +++ b/experiments/dutch/ulmfit_pretrained_wiki/ulmfit_pretrain_exeperiment.ipynb @@ -0,0 +1,1404 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# IMDB" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%reload_ext autoreload\n", + "%autoreload 2\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from fastai.text import *" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparing the data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[PosixPath('/local/burghbvander/110kDBRDv2/tmp_lm'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2/test'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2/unsup'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2/tmp_clas_bs96'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2/urls.txt'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2/tmp_clas'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2/train'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2/tmp_clas_bs64'),\n", + " PosixPath('/local/burghbvander/110kDBRDv2/models')]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = Path('/local/burghbvander/110kDBRDv2/')\n", + "path.ls()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "bs=118" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m data_lm = (TextList.from_folder(path)\n\u001b[1;32m 2\u001b[0m \u001b[0;31m#Inputs: all the text files in path\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;34m.\u001b[0m\u001b[0mfilter_by_folder\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minclude\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'train'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'test'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'unsup'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;31m#We may have other temp folders that contain text files so we only keep what's in train and test\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mrandom_split_by_pct\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/local/burghbvander/anaconda3/lib/python3.7/site-packages/fastai/data_block.py\u001b[0m in \u001b[0;36mfilter_by_folder\u001b[0;34m(self, include, exclude)\u001b[0m\n\u001b[1;32m 155\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mexclude\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mexclude\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 156\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 157\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfilter_by_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_inner\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 158\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfilter_by_rand\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mseed\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/local/burghbvander/anaconda3/lib/python3.7/site-packages/fastai/data_block.py\u001b[0m in \u001b[0;36mfilter_by_func\u001b[0;34m(self, func)\u001b[0m\n\u001b[1;32m 144\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfilter_by_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mCallable\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0;34m'ItemList'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 145\u001b[0m \u001b[0;34m\"Only keep elements for which `func` returns `True`.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 146\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mo\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mo\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 147\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 148\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/local/burghbvander/anaconda3/lib/python3.7/site-packages/fastai/core.py\u001b[0m in \u001b[0;36marray\u001b[0;34m(a, dtype, **kwargs)\u001b[0m\n\u001b[1;32m 261\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint_\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint32\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mdtype\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mis_listy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 262\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint64\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 263\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 264\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 265\u001b[0m \u001b[0;32mclass\u001b[0m \u001b[0mEmptyLabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mItemBase\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ], + "output_type": "error" + } + ], + "source": [ + "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", + " .random_split_by_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('tmp_lm')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "data_lm = load_data(path, 'tmp_lm', bs=bs)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idxtext
0ik uiteindelijk wel zeker , xxmaj matthias was dood . \\n xxmaj uit de verschillende verhaallijnen heb ik echter nooit kunnen distilleren wie xxmaj matthias nu wel was . xxmaj wel was het duidelijk dat hij op zijn weg heel wat tegenslagen te verwerken kreeg en niet altijd begrepen werd . \\n xxmaj ik kreeg wel een beter beeld van de naasten van xxmaj matthias . \\n
1/ / xxunk / boeken / girl - online - on - tour / xxbos xxmaj tjonge wat een debuut . xxmaj ik heb van het begin tot het eind genoten . xxmaj schrijf maar lekker door xxmaj elizabeth . u heeft er een fan bij ! \\n xxmaj voor mij is dit boek 5 duimpjes waard ! xxbos xxmaj wanneer je ontwikkeling zoekt in een serie dan ben
2laten invoelen in de personages zodat je je echt één voelt met ze . xxmaj wat een verschrikkelijke mensen het soms ook zijn . \\n xxmaj dit is geen gewone thriller zoals je gewend bent , de spanning en de snelheid zitten er wel degelijk in maar op een totaal andere manier . xxmaj er worden geen mensen vermoord en achtervolgingen gedaan maar er wordt op een rustige intrigerende
3xxmaj angstaanjagend , dat wel . \\n \\n xxmaj de schrijfstijl van xxmaj lauerhohn is direct , ongenuanceerd en hier en daar zelfs hard , maar dat sluit naadloos aan bij het verhaal . xxmaj de sfeer is benauwend werkelijk , filmisch haast . \\n \\n “ xxmaj ze stond in een portiek tegenover hun bouwval en xxunk hem . xxmaj het meisje wees met een bevende vinger
4raadselachtige wijze overlijd is het voor de jonge xxmaj michele duidelijk , hij en zijn vader staan lijnrecht tegenover elkaar . \\n xxmaj dit deel van het boek vind ik ontzettend spannend en soms ook luguber , maar tegelijkertijd ook moeilijk omdat er veel politiek naar boven komt , en je goed moet opletten hoe de verschillende idealen zich ontwikkelen , en op welke manier deze tegenover elkaar komen
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_lm.show_batch()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Language model" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from fastai.text.models import AWD_LSTM" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "learn = language_model_learner(data_lm, AWD_LSTM, pretrained_fnames=['lm_best', 'itos'], drop_mult=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + }, + { + "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": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Min numerical gradient: 2.75E-02\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "learn.recorder.plot(skip_end=15)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 44:34

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
13.4969303.3678480.390874
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "learn.fit_one_cycle(1, 2.75e-2, moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('fit_head')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "learn.load('fit_head');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To complete the fine-tuning, we can then unfeeze and launch a new training." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "learn.unfreeze()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + }, + { + "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": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Min numerical gradient: 6.92E-06\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "learn.recorder.plot(skip_end=15, skip_start=15)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from fastai.callbacks import SaveModelCallback\n", + "cb = SaveModelCallback(learn, every='epoch')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 4:10:59

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
13.1862403.1533180.415778
23.0674323.0458290.429288
33.0239722.9902760.436462
42.9555882.9595680.440429
52.8965132.9535000.441327
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IOPub message rate exceeded.\n", + "The notebook server will temporarily stop sending output\n", + "to the client in order to avoid crashing it.\n", + "To change this limit, set the config variable\n", + "`--NotebookApp.iopub_msg_rate_limit`.\n", + "\n", + "Current values:\n", + "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n", + "NotebookApp.rate_limit_window=3.0 (secs)\n", + "\n" + ] + } + ], + "source": [ + "learn.fit_one_cycle(5, 1e-3, moms=(0.8,0.7), callbacks=[cb])" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('fine_tuned')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + }, + { + "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": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Min numerical gradient: 1.32E-04\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "learn.recorder.plot(skip_end=15, skip_start=15)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How good is our model? Well let's try to see what it predicts after a few given words." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "learn.load('fine_tuned');" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "cb = SaveModelCallback(learn, every='epoch', name='bestmodel_finetune_stage2')" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 4:10:56

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
12.9082932.9531300.441311
22.9085092.9499500.441765
32.8926252.9471430.442238
42.8778562.9456620.442433
52.8901442.9454290.442483
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IOPub message rate exceeded.\n", + "The notebook server will temporarily stop sending output\n", + "to the client in order to avoid crashing it.\n", + "To change this limit, set the config variable\n", + "`--NotebookApp.iopub_msg_rate_limit`.\n", + "\n", + "Current values:\n", + "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n", + "NotebookApp.rate_limit_window=3.0 (secs)\n", + "\n", + "IOPub message rate exceeded.\n", + "The notebook server will temporarily stop sending output\n", + "to the client in order to avoid crashing it.\n", + "To change this limit, set the config variable\n", + "`--NotebookApp.iopub_msg_rate_limit`.\n", + "\n", + "Current values:\n", + "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n", + "NotebookApp.rate_limit_window=3.0 (secs)\n", + "\n", + "IOPub message rate exceeded.\n", + "The notebook server will temporarily stop sending output\n", + "to the client in order to avoid crashing it.\n", + "To change this limit, set the config variable\n", + "`--NotebookApp.iopub_msg_rate_limit`.\n", + "\n", + "Current values:\n", + "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n", + "NotebookApp.rate_limit_window=3.0 (secs)\n", + "\n" + ] + } + ], + "source": [ + "learn.fit_one_cycle(5, 1e-4, moms=(0.8,0.7), callbacks=[cb])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "TEXT = \"Wat een fantastisch boek\"\n", + "N_WORDS = 40\n", + "N_SENTENCES = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wat een fantastisch boek , met een goed verhaal . Een boek waar je in je hoofd mee wilt puzzelen en dan is het ook nog eens spannend . Je krijgt een goed beeld van wat er er allemaal gebeuren is met\n", + "Wat een fantastisch boek ! Door de prachtige cover die Jef beschrijft en de prachtige kleuren , die je in zijn greep houdt , is het een boek dat je niet snel zal vergeten . \n", + " We gaan Wil van\n" + ] + } + ], + "source": [ + "print(\"\\n\".join(learn.predict(TEXT, N_WORDS, temperature=0.75) for _ in range(N_SENTENCES)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have to save the model but also it's 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", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save_encoder('fine_tuned_enc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Classifier" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "bs=32\n", + "fname = 'tmp_clas_bs{}'.format(bs)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "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(fname)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "data_clas = load_data(path, fname, bs=bs)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
texttarget
xxbos “ xxmaj het huwelijk is het graf van de liefde . ” \\n \\n xxmaj woorden , woorden , woorden . xxmaj in de juiste volgorde vormen ze een universum waarin je helemaal wil verdwijnen . xxmaj alleen al bij het horen van de naam xxmaj proust word ik – heel toepasselijk - teruggeworpen naar die heerlijke weken waarin ik mocht verdwalen in de omgeving van xxmaj xxunkneg
xxbos xxmaj van alle genres die ik lees , ben ik het meest kritisch voor fantasy . xxmaj als fantasy goed is , is hij vaak ook heel goed , maar als een fantasyboek niet echt goed is , wordt het snel kinderachtig . xxmaj nogal wat auteurs ( en lezers ) zijn al tevreden als de obligate tovenaars , draken en magische zwaarden aanwezig zijn . xxmaj het verhaalneg
xxbos xxmaj het is zo treurig dat in het tijdperk waarin iedereen ( in de vrije wereld althans ) uitstekend xxunk is om de juistheid of xxunk van elke stelling , elke bewering zelf na te gaan , vrijwel niemand de moeite neemt om het te doen . xxmaj het kritisch vermogen ontbreekt kennelijk volkomen . xxmaj een paar xxunk en je duikt in gedigitaliseerde archieven , bekijkt ebook versiesneg
xxbos xxmaj de jonge filosoof xxmaj ype de xxmaj boer ( 1989 ) , die gepromoveerd is op de postmoderne xxmaj italiaanse filosoof xxmaj xxunk , heeft onlangs een boekje gepubliceerd waarin hij xxmaj murakami 's fictie interpreteert vanuit filosofische invalshoek . xxmaj wat zijn de kernthema 's van xxmaj murakami 's fictie , zo vraagt xxmaj de xxmaj boer zich af , en wat voor waardevolle filosofische conclusies kunnenpos
xxbos xxmaj pierre xxmaj lauffer ( 1920 - 1981 ) schreef vrijwel zijn hele leven poëzie en proza . xxmaj frank xxmaj martinus xxmaj arion noemde hem de xxmaj dante van het xxmaj papiaments . ‘ xxmaj je kunt zeggen dat iedereen die in het xxmaj papiaments goede poëzie schrijft , op de ene of andere manier door xxmaj pierre beïnvloed is.’ xxmaj helaas was het juist de taal diepos
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_clas.show_batch()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then create a model to classify those reviews and load the encoder we saved before." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "learn = text_classifier_learner(data_clas, AWD_LSTM, drop_mult=0.5)\n", + "learn.load_encoder('fine_tuned_enc')" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + }, + { + "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": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Min numerical gradient: 2.29E-02\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "learn.recorder.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 02:24

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
10.4587310.3202280.860554
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "learn.fit_one_cycle(1, 1e-3, moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('first')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "learn.load('first');" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 03:03

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
10.3044650.2143480.915950
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "learn.freeze_to(-2)\n", + "learn.fit_one_cycle(1, slice(1e-2/(2.6**4),1e-2), moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('second')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "learn.load('second');" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n", + "Min numerical gradient: 3.31E-06\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "learn.lr_find()\n", + "learn.recorder.plot(skip_end=15, skip_start=15)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 05:07

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
10.2789790.1956040.922159
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "learn.freeze_to(-3)\n", + "learn.fit_one_cycle(1, slice(5e-5/(2.6**4),5e-3), moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('third')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "learn.load('third');" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 18:25

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
10.2688360.1915260.927889
20.2384360.1763440.931710
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "learn.unfreeze()\n", + "learn.fit_one_cycle(2, slice(1e-3/(2.6**4),1e-3), moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('fourth')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Total time: 44:24

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochtrain_lossvalid_lossaccuracy
10.2863340.1880370.926457
20.2676890.1768390.930277
30.2610100.1714480.934097
40.2243150.1712470.934575
50.2273270.1636050.938395
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Model seems not to overfit yet! Try again with more epochs\n", + "learn.load('third');\n", + "learn.unfreeze()\n", + "learn.fit_one_cycle(5, slice(1e-3/(2.6**4),1e-3), moms=(0.8,0.7))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "learn.save('fifth')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
texttargetprediction
xxbos xxmaj grieks drama in de xxunk \\n \\n \\n xxmaj xxunk : spoilers \\n \\n \\n ‘ xxmaj de volle maan , tragisch die avond , was reeds vroeg , nog in de laatste xxunk xxunk als een immense , xxunk bol , xxunk als een zonsondergang laag achter de xxunk van de xxmaj lange xxmaj laan en steeg , langzaam zich louterende van haar tragische tintpospos
xxbos xxmaj for xxunk : xxmaj below \\n \\n xxmaj deon xxmaj meyer is een van mijn favoriete schrijvers . xxmaj op 9 juni zou xxmaj deon zijn boeken signeren in een boekhandel van xxunk , slechts 35 km van mijn dorpje . xxmaj nou ben ik niet iemand , die snel contact maakt met allerlei schrijvers , maar als het zo dichtbij is , kon ik dit nietpospos
xxbos xxmaj giorgio xxmaj bassani ( 1916 - 2000 ) heeft tot 1981 een groot deel van leven doorgebracht in een xxmaj joodse gemeenschap in het xxmaj noord - xxmaj italiaanse stadje xxmaj ferrara aan de rivier de xxmaj po . xxmaj hij wordt gezien als een van de belangrijkste moderne schrijvers van xxmaj italië . \\n \\n xxmaj de kronieken van xxmaj ferrara ( xxmaj il xxmaj xxunkpospos
xxbos xxmaj ondanks zijn grote succes als dichter en een boekenplank vol publicaties vecht xxmaj rogi xxmaj wieg ( 1962 ) al jarenlang tegen zijn depressies . xxmaj misschien heeft het een met het ander te maken . xxmaj iemand die zo diep durft te gaan in wat hij schrijft , iemand die pijnlijk eerlijk over zichzelf durft te zijn , zoals in xxmaj kameraad xxmaj scheermes , zet zichzelfpospos
xxbos xxmaj maar de kerel staat erop . “ xxmaj in dit land , ” verklaart hij , “ moet je , als je iets wilt hebben , dwang xxunk \\n \\n ( … ) \\n \\n ‘ “ xxmaj er zitten twee mensen in een kamer , ” begin ik . “ xxmaj ineens wordt er aan de deur xxunk \\n \\n xxmaj bij dit eerstepospos
xxbos xxmaj hoewel dit boek de xxmaj man xxmaj booker prijs 2014 gewonnen heeft zijn de meningen verdeeld : sommigen vinden het een meesterwerk , terwijl bijvoorbeeld de xxmaj new xxmaj york xxmaj times sprak van een \" deeply xxunk novel \" . xxmaj zelf baalde ik als een stekker dat dit boek won terwijl prachtboeken van andere giganten ( xxmaj mitchell , xxmaj powers , xxmaj amis ) nietpospos
xxbos xxmaj achterflap : \\n xxmaj ruim zeventig jaar nadat een xxmaj duitse xxunk zijn geheime “ xxmaj wunderwaffen ” van de brandstapel wist te redden , vindt er in het grensgebied van xxmaj soedan een mysterieuze explosie plaats , waardoor de bevolking van een compleet dorp van de aardbodem verdwijnt . xxmaj als het bericht van de slachting xxmaj europa bereikt , wordt xxmaj alex xxmaj de xxmajpospos
xxbos xxmaj het leven is hardlopen , onder andere xxrep 5 . \\n \\n \\n \\n ‘ xxmaj ik hou er niet van om te veel over mezelf te vertellen , maar als ik anderzijds niet eerlijk vertel wat er te vertellen valt , heeft het schrijven van een boek als dit niet veel zin en had ik me net zo goed de moeite kunnen besparen [ xxrep 4posneg
xxbos xxmaj toen ik de voorpublicatie van dit boek van xxmaj giphart gelezen had , was ik direct gegrepen en ben ik zeer enthousiast geworden om mee te doen aan de xxmaj hebban - leesclub . xxmaj ik moet eerlijk zeggen - en ik heb dat ook eerlijk gezegd in mijn motivatie voor de leesclub - dat ik maar één boek van xxmaj giphart gelezen heb : xxmaj troost uitnegneg
xxbos ‘ xxmaj villa xxmaj toscane – xxmaj linda xxmaj van xxmaj xxunk – xxmaj een trage start met een voorspelbaar einde . \\n \\n “ xxmaj villa xxmaj toscane ” , een titel waarmee je als lezer meteen in vakantiestemming terechtkomt , maar al snel blijkt het toch niet de beste bestemming te zijn en al zeker niet met het verleden van xxmaj carlo en zijn ex -negneg
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "learn.show_results(rows=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "interp = learn.interpret()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "interp.plot_confusion_matrix()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(tensor([9.5704, 7.3124, 5.9622, 5.8540, 5.8231, 4.8916, 4.7085, 3.7781, 3.5620,\n", + " 3.4087]),\n", + " tensor([2060, 2032, 1402, 1002, 1813, 1274, 418, 380, 178, 1853]))" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "interp.top_losses(k=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(Text xxbos xxmaj met haar debuut xxmaj muidhond heeft xxmaj inge xxmaj schilperoord een gevoelig onderwerp in de literatuur aangesneden . \n", + " \n", + " xxmaj muidhond gaat over xxmaj jonathan ( 30 ) die na vrijspraak bij gebrek aan bewijs terugkeert naar huis . xxmaj hij woont samen met zijn moeder in een vissersdorpje en werkt in een xxunk . xxmaj hij heeft zijn hond xxmaj milk gemist en is blij dat hij weer met zijn hond door de duinen kan wandelen . xxmaj daar vind hij in een klein meertje een muidhond die hij mee naar huis neemt om voor te zorgen . xxmaj hij wordt rustig van het kijken naar de vis in zijn aquarium . \n", + " \n", + " xxmaj jonathan is een pedofiel die na zijn vrijspraak probeert om een ‘ nieuw mens’ te worden . xxmaj hij stelt een strak xxunk op en verplicht zichzelf aan opdrachten te werken die hij van zijn psycholoog heeft meegekregen . xxmaj dan leert hij een nieuw buurmeisje ( xxmaj elke ) kennen en wordt zijn voornemen zwaar op de proef gesteld . xxmaj om deze worsteling met zijn geaardheid draait het boek . xxmaj het stelt de vraag in hoeverre iemand wezenlijk in staat is om te veranderen . xxmaj en ook welke rol de omgeving speelt . xxmaj in hoeverre is iemand volledig toerekeningsvatbaar ? \n", + " \n", + " xxmaj het knappe van de schrijfster is dat ze de neergang van xxmaj jonathan heel geleidelijk beschrijft . xxmaj hierin zijn duidelijke overeenkomsten met ‘ xxmaj de xxunk , van xxmaj albert xxmaj camus te herkennen ( zie ook het motto in het boek ) \n", + " xxmaj de hoofdpersoon xxmaj meursault is net als xxmaj jonathan een in zichzelf gekeerde , zonderlinge man . xxmaj ook hij streeft een xxunk bestaan dat vrij is van veranderingen na . xxmaj hij heeft weinig ambitie en ervaart het leven als een opeenvolging van tragische gebeurtenissen die hun loop nemen , zonder dat je hier als mens controle over hebt . xxmaj ook de hitte speelt daarbij een grote rol . \n", + " xxmaj de neergang wordt zo als het ware onontkoombaar . \n", + " \n", + " xxmaj een belangrijk verschil is echter dat xxmaj inge xxmaj schilperoord zonder de ernst van de situatie te bagatelliseren , ze xxmaj jonathan met veel inlevingsvermogen beschrijft . xxmaj dat leidt er toe dat je hem als mens kunt zien die zowel dader als slachtoffer is . \n", + " ' xxmaj wat beweegt de jonge zwarte deelpachter xxmaj tucker xxmaj caliban om huis , vee en akkers te vernietigen en met vrouw en kind naar het xxmaj noorden te vertrekken?'- xxmaj win xxmaj uit de maat voor je hele leesgroep ! \n", + " ' xxmaj het is autobiografisch , helemaal waargebeurd maar toch zie je elementen van fictie in de stijl en vooral de opbouw , dat maakt het des te sterker . ' - xxmaj win boeken voor je hele leesclub ! \n", + " xxmaj we gaan xxmaj wil van xxmaj jeroen xxmaj olyslaegers luisteren via de gratis xxmaj hebban xxmaj luisterboeken - app . xxmaj doe je mee ?,\n", + " Category pos)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "learn.data.valid_ds[2060]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "y_probs, y_pred, y_loss = learn.get_preds(ordered=True, with_loss=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(tensor([0.0586, 0.9414]), tensor(1), tensor(9.5704))" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_probs[2060], y_pred[2060], y_loss[2060]" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}