diff --git a/tests/test_end_to_end.py b/tests/test_end_to_end.py index 127c8fa..4798122 100644 --- a/tests/test_end_to_end.py +++ b/tests/test_end_to_end.py @@ -137,45 +137,45 @@ def test_ulmfit_fastai_end_to_end_label_smoothing(): exp2.train_cls(num_lm_epochs=0, unfreeze=False, bs=4, label_smoothing_eps=0.1 ) -def test_ulmfit_fastai_bidir_end_to_end(): - """ Test ulmfit with sentencepiece tokenizer on small wikipedia dataset. - """ - test_data, wt2 = get_test_data() - lm_name = 'end-to-end-test-fastai' +# def test_ulmfit_fastai_bidir_end_to_end(): +# """ Test ulmfit with sentencepiece tokenizer on small wikipedia dataset. +# """ +# test_data, wt2 = get_test_data() +# lm_name = 'end-to-end-test-fastai' - exp = ulmfit.pretrain_lm.LMHyperParams( - dataset_path=wt2, - lang='en', - cuda_id=cuda_id, - qrnn=False, - bidir=True, - tokenizer='f', - max_vocab=100, - name=lm_name, - ) - exp.train_lm(num_epochs=1, bs=2) - exp2 = ulmfit.train_clas.CLSHyperParams.from_lm(str(test_data / 'imdb'), str(exp.model_dir)) - exp2.train_cls(num_lm_epochs=0, unfreeze=False, bs=4, ) +# exp = ulmfit.pretrain_lm.LMHyperParams( +# dataset_path=wt2, +# lang='en', +# cuda_id=cuda_id, +# qrnn=False, +# bidir=True, +# tokenizer='f', +# max_vocab=100, +# name=lm_name, +# ) +# exp.train_lm(num_epochs=1, bs=2) +# exp2 = ulmfit.train_clas.CLSHyperParams.from_lm(str(test_data / 'imdb'), str(exp.model_dir)) +# exp2.train_cls(num_lm_epochs=0, unfreeze=False, bs=4, ) -def test_ulmfit_moses_fa_bidir_end_to_end(): - """ Test ulmfit with sentencepiece tokenizer on small wikipedia dataset. - """ - test_data, wt2 = get_test_data() - lm_name = 'end-to-end-test-fastai' +# def test_ulmfit_moses_fa_bidir_end_to_end(): +# """ Test ulmfit with sentencepiece tokenizer on small wikipedia dataset. +# """ +# test_data, wt2 = get_test_data() +# lm_name = 'end-to-end-test-fastai' - exp = ulmfit.pretrain_lm.LMHyperParams( - dataset_path=wt2, - lang='en', - cuda_id=cuda_id, - qrnn=False, - bidir=True, - tokenizer='vf', - max_vocab=100, - name=lm_name, - ) - exp.train_lm(num_epochs=1, bs=2) - exp2 = ulmfit.train_clas.CLSHyperParams.from_lm(test_data / 'imdb', exp.model_dir) - exp2.train_cls(num_lm_epochs=0, unfreeze=False, bs=4, ) +# exp = ulmfit.pretrain_lm.LMHyperParams( +# dataset_path=wt2, +# lang='en', +# cuda_id=cuda_id, +# qrnn=False, +# bidir=True, +# tokenizer='vf', +# max_vocab=100, +# name=lm_name, +# ) +# exp.train_lm(num_epochs=1, bs=2) +# exp2 = ulmfit.train_clas.CLSHyperParams.from_lm(test_data / 'imdb', exp.model_dir) +# exp2.train_cls(num_lm_epochs=0, unfreeze=False, bs=4, ) # def test_classification_model_work_with_different_dropmul(): # learn = self.create_cls_learner(data_clas, drop_mult=0.1) diff --git a/tests/test_text_data.py b/tests/test_text_data.py deleted file mode 100644 index 1b96079..0000000 --- a/tests/test_text_data.py +++ /dev/null @@ -1,56 +0,0 @@ -import pytest -import fastai.text - -from fastai import * -from fastai.text import * - -import fastai_contrib.data as contrib_data - -def text_df(labels): - data = [] - texts = ["fast ai is a cool project", "hello world"] * 20 - for ind, text in enumerate(texts): - sample = {} - sample["label"] = labels[ind%len(labels)] - sample["text"] = text - data.append(sample) - return pd.DataFrame(data) - -###################### UPDATED CODE -def test_should_load_backwards_lm(): - path = untar_data(URLs.IMDB_SAMPLE) - df = text_df(['neg','pos']) - - data = TextLMDataBunch.from_df(path, train_df=df, valid_df=df, label_cols=0, text_cols=["text"], bs=2, - lm_type=contrib_data.LanguageModelType.BwdLM) - lml = data.train_dl.dl - lml.data = lml.batchify(np.concatenate([lml.dataset.x.items[i] for i in range(len(lml.dataset))])) - batch = lml.get_batch(lml.data, 0, 70) - - assert batch[0].shape == (lml.bs, 70) - assert batch[1].shape == (70*lml.bs,) - - as_text = [lml.dataset.vocab.itos[x] for x in batch[0][0]] - np.testing.assert_array_equal(as_text[:5], ["world", "hello", 'xxbos', 'project', 'cool']) - -def test_should_load_bi_lm(): - path = untar_data(URLs.IMDB_SAMPLE) - df = text_df(['neg', 'pos']) - - data = TextLMDataBunch.from_df(path, train_df=df, valid_df=df, label_cols=0, text_cols=["text"], bs=2, - lm_type=contrib_data.LanguageModelType.BiLM) - lml = data.train_dl.dl - lml.data = lml.batchify(np.concatenate([lml.dataset.x.items[i] for i in range(len(lml.dataset))])) - batch = lml.get_batch(lml.data, 0, 70) - - assert batch[0].shape == (lml.bs, 70, 2) - assert batch[1].shape == (70*lml.bs, 2) - - as_text = [lml.dataset.vocab.itos[x] for x in batch[0][0, :, 0]] - np.testing.assert_array_equal(as_text[:7], "xxbos fast ai is a cool project".split()) - - as_text = [lml.dataset.vocab.itos[x] for x in batch[0][0, :, 1]] - np.testing.assert_array_equal(as_text[:5], ["world", "hello", 'xxbos', 'project', 'cool']) - -###################### NEW CODE - diff --git a/tests/test_text_train.py b/tests/test_text_train.py index 7c3d894..10ec42e 100644 --- a/tests/test_text_train.py +++ b/tests/test_text_train.py @@ -36,7 +36,7 @@ def manual_seed(seed=42): def learn(): path, df_trn, df_val = prep_human_numbers() data = TextLMDataBunch.from_df(path, df_trn, df_val, tokenizer=Tokenizer(BaseTokenizer)) - learn = language_model_learner(data, emb_sz=100, nl=1, drop_mult=0.1) + learn = language_model_learner(data, AWD_LSTM) learn.fit_one_cycle(4, 5e-3) return learn @@ -51,53 +51,5 @@ def text_df(n_labels): df = pd.DataFrame(data) return df -###################### NEW CODE - def test_val_loss(learn): - assert learn.validate()[1] > 0.5 - - -def test_bilm_classifier_loads_encoder(): - n_labels=1 - nl = 1 - emb_sz = 100 - path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data', 'tmp') - os.makedirs(path) - try: - df = text_df(n_labels=n_labels) - lmdf = df#[["text"]] - print(lmdf.head()) - lmdata = TextLMDataBunch.from_df(path, lmdf, lmdf, tokenizer=Tokenizer(BaseTokenizer), - lm_type=contrib_data.LanguageModelType.BiLM) - learn = bilm_learner(lmdata, emb_sz=emb_sz, nl=nl, drop_mult=0.1, qrnn=False) - learn.save_encoder("enc") - data = TextClasDataBunch.from_df(path, train_df=df, valid_df=df, label_cols=list(range(n_labels)), text_cols=["text"], bs=8) - classifier = bilm_text_classifier_learner(data, emb_sz=emb_sz, nl=nl, drop_mult=0.1, qrnn=False) - print(last_layer(classifier.model), ) - classifier.load_encoder("enc") - classifier.fit(1) - finally: - shutil.rmtree(path) - - -def test_bilm_lstm_can_be_trained(): - manual_seed() - path, df_trn, df_val = prep_human_numbers() - data = TextLMDataBunch.from_df(path, df_trn, df_val, tokenizer=Tokenizer(BaseTokenizer), - lm_type = contrib_data.LanguageModelType.BiLM) - - learn = bilm_learner(data, emb_sz=100, nl=1, drop_mult=0.1, qrnn=False) - learn.metrics = [accuracy_fwd] - learn.fit_one_cycle(2, 5e-3) - assert learn.validate()[1] > 0.3 - - -def test_bwdlm_lstm_can_be_trained(): - manual_seed() - path, df_trn, df_val = prep_human_numbers() - data = TextLMDataBunch.from_df(path, df_trn, df_val, tokenizer=Tokenizer(BaseTokenizer), - lm_type = contrib_data.LanguageModelType.BwdLM) - - learn = language_model_learner(data, emb_sz=100, nl=1, drop_mult=0.1, qrnn=False) - learn.fit_one_cycle(2, 5e-3) - assert learn.validate()[1] > 0.3 + assert learn.validate()[1] > 0.4