From 620ad161e0b4dc61fa239b9d053808885409a109 Mon Sep 17 00:00:00 2001 From: zide05 <845465009@qq.com> Date: Fri, 16 Aug 2019 13:16:45 +0800 Subject: [PATCH 1/8] Update tutorial_4_loss_optimizer.rst --- docs/source/tutorials/tutorial_4_loss_optimizer.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/source/tutorials/tutorial_4_loss_optimizer.rst b/docs/source/tutorials/tutorial_4_loss_optimizer.rst index a6e1730a..f863a7a8 100644 --- a/docs/source/tutorials/tutorial_4_loss_optimizer.rst +++ b/docs/source/tutorials/tutorial_4_loss_optimizer.rst @@ -158,6 +158,7 @@ Vocabulary 的使用 损失函数 训练模型需要提供一个损失函数 ,fastNLP中提供了直接可以导入使用的四种loss,分别为: + * :class:`~fastNLP.CrossEntropyLoss`:包装了torch.nn.functional.cross_entropy()函数,返回交叉熵损失(可以运用于多分类场景) * :class:`~fastNLP.BCELoss`:包装了torch.nn.functional.binary_cross_entropy()函数,返回二分类的交叉熵 * :class:`~fastNLP.L1Loss`:包装了torch.nn.functional.l1_loss()函数,返回L1 损失 @@ -209,7 +210,7 @@ Vocabulary 的使用 #使用CNNText的时候第一个参数输入一个tuple,作为模型定义embedding的参数 #还可以传入 kernel_nums, kernel_sizes, padding, dropout的自定义值 - model_cnn = CNNText((len(vocab),EMBED_DIM), num_classes=3, padding=2, dropout=0.1) + model_cnn = CNNText((len(vocab),EMBED_DIM), num_classes=3, dropout=0.1) #如果在定义trainer的时候没有传入optimizer参数,模型默认的优化器为torch.optim.Adam且learning rate为lr=4e-3 #这里只使用了optimizer_1作为优化器输入,感兴趣可以尝试optimizer_2或者其他优化器作为输入 From cd395a7cdf9461d6e0b5866f6c29e6d6b598c8f8 Mon Sep 17 00:00:00 2001 From: zide05 <845465009@qq.com> Date: Fri, 16 Aug 2019 13:18:35 +0800 Subject: [PATCH 2/8] Update tutorial_5_datasetiter.rst --- docs/source/tutorials/tutorial_5_datasetiter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/tutorials/tutorial_5_datasetiter.rst b/docs/source/tutorials/tutorial_5_datasetiter.rst index 23d26deb..e81b18dd 100644 --- a/docs/source/tutorials/tutorial_5_datasetiter.rst +++ b/docs/source/tutorials/tutorial_5_datasetiter.rst @@ -192,7 +192,7 @@ sampler import time embed_dim = 100 - model = CNNText((len(vocab),embed_dim), num_classes=3, padding=2, dropout=0.1) + model = CNNText((len(vocab),embed_dim), num_classes=3, dropout=0.1) def train(epoch, data, devdata): optimizer = torch.optim.Adam(model.parameters(), lr=0.001) From 31f35ad61736432923706c13ecfc123eab03e130 Mon Sep 17 00:00:00 2001 From: zide05 <845465009@qq.com> Date: Fri, 16 Aug 2019 13:57:24 +0800 Subject: [PATCH 3/8] Update bert_embedding.py --- fastNLP/embeddings/bert_embedding.py | 1 + 1 file changed, 1 insertion(+) diff --git a/fastNLP/embeddings/bert_embedding.py b/fastNLP/embeddings/bert_embedding.py index aa72898a..5d46d98c 100644 --- a/fastNLP/embeddings/bert_embedding.py +++ b/fastNLP/embeddings/bert_embedding.py @@ -27,6 +27,7 @@ class BertEmbedding(ContextualEmbedding): >>> import torch >>> from fastNLP import Vocabulary + >>> from fastNLP.embeddings import BertEmbedding >>> vocab = Vocabulary().add_word_lst("The whether is good .".split()) >>> embed = BertEmbedding(vocab, model_dir_or_name='en-base-uncased', requires_grad=False, layers='4,-2,-1') >>> words = torch.LongTensor([[vocab.to_index(word) for word in "The whether is good .".split()]]) From d631d136dc69cb0c23fc999a175c0296a505d7af Mon Sep 17 00:00:00 2001 From: zide05 <845465009@qq.com> Date: Fri, 16 Aug 2019 14:00:38 +0800 Subject: [PATCH 4/8] Update char_embedding.py --- fastNLP/embeddings/char_embedding.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fastNLP/embeddings/char_embedding.py b/fastNLP/embeddings/char_embedding.py index b9e6659e..b0bd6796 100644 --- a/fastNLP/embeddings/char_embedding.py +++ b/fastNLP/embeddings/char_embedding.py @@ -24,6 +24,9 @@ class CNNCharEmbedding(TokenEmbedding): Example:: + >>> import torch + >>> from fastNLP import Vocabulary + >>> from fastNLP.embeddings import CNNCharEmbedding >>> vocab = Vocabulary().add_word_lst("The whether is good .".split()) >>> embed = CNNCharEmbedding(vocab, embed_size=50) >>> words = torch.LongTensor([[vocab.to_index(word) for word in "The whether is good .".split()]]) @@ -167,6 +170,9 @@ class LSTMCharEmbedding(TokenEmbedding): Example:: + >>> import torch + >>> from fastNLP import Vocabulary + >>> from fastNLP.embeddings import LSTMCharEmbedding >>> vocab = Vocabulary().add_word_lst("The whether is good .".split()) >>> embed = LSTMCharEmbedding(vocab, embed_size=50) >>> words = torch.LongTensor([[vocab.to_index(word) for word in "The whether is good .".split()]]) From 7fe4223d10934ab4f15ffeec1b9399a1415731ea Mon Sep 17 00:00:00 2001 From: zide05 <845465009@qq.com> Date: Fri, 16 Aug 2019 14:14:30 +0800 Subject: [PATCH 5/8] Update embedding.py --- fastNLP/embeddings/embedding.py | 1 + 1 file changed, 1 insertion(+) diff --git a/fastNLP/embeddings/embedding.py b/fastNLP/embeddings/embedding.py index 111bacd0..a02e7a20 100644 --- a/fastNLP/embeddings/embedding.py +++ b/fastNLP/embeddings/embedding.py @@ -20,6 +20,7 @@ class Embedding(nn.Module): Example:: >>> import numpy as np + >>> from fastNLP.embeddings import Embedding >>> init_embed = (2000, 100) >>> embed = Embedding(init_embed) # 随机初始化一个具有2000个词,每个词表示为100维的词向量 >>> init_embed = np.zeros((2000, 100)) From 3eb986f86fa806a7577779e1e9849baffcb701a1 Mon Sep 17 00:00:00 2001 From: zide05 <845465009@qq.com> Date: Fri, 16 Aug 2019 16:16:55 +0800 Subject: [PATCH 6/8] Update elmo_embedding.py --- fastNLP/embeddings/elmo_embedding.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fastNLP/embeddings/elmo_embedding.py b/fastNLP/embeddings/elmo_embedding.py index af94e8ec..73def086 100644 --- a/fastNLP/embeddings/elmo_embedding.py +++ b/fastNLP/embeddings/elmo_embedding.py @@ -21,6 +21,9 @@ class ElmoEmbedding(ContextualEmbedding): Example:: + >>> import torch + >>> from fastNLP import Vocabulary + >>> from fastNLP.embeddings import ElmoEmbedding >>> vocab = Vocabulary().add_word_lst("The whether is good .".split()) >>> # 使用不同层的concat的结果 >>> embed = ElmoEmbedding(vocab, model_dir_or_name='en', layers='1,2', requires_grad=False) From 5fac9867ae8290cb337584ca04d7bd22d96ded9e Mon Sep 17 00:00:00 2001 From: zide05 <845465009@qq.com> Date: Fri, 16 Aug 2019 16:45:21 +0800 Subject: [PATCH 7/8] Update stack_embedding.py --- fastNLP/embeddings/stack_embedding.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fastNLP/embeddings/stack_embedding.py b/fastNLP/embeddings/stack_embedding.py index 8091d598..d3ce462b 100644 --- a/fastNLP/embeddings/stack_embedding.py +++ b/fastNLP/embeddings/stack_embedding.py @@ -17,7 +17,7 @@ class StackEmbedding(TokenEmbedding): >>> from fastNLP import Vocabulary >>> from fastNLP.embeddings import StaticEmbedding >>> vocab = Vocabulary().add_word_lst("The whether is good .".split()) - >>> embed_1 = StaticEmbedding(vocab, model_dir_or_name='en-glove-6b-50', requires_grad=True) + >>> embed_1 = StaticEmbedding(vocab, model_dir_or_name='en-glove-6b-50d', requires_grad=True) >>> embed_2 = StaticEmbedding(vocab, model_dir_or_name='en-word2vec-300', requires_grad=True) :param embeds: 一个由若干个TokenEmbedding组成的list,要求每一个TokenEmbedding的词表都保持一致 @@ -91,4 +91,4 @@ class StackEmbedding(TokenEmbedding): for embed in self.embeds: outputs.append(embed(words)) outputs = self.dropout(torch.cat(outputs, dim=-1)) - return outputs \ No newline at end of file + return outputs From e22a94f9f08346dca9132768b7dba455af246b3e Mon Sep 17 00:00:00 2001 From: zide05 <845465009@qq.com> Date: Fri, 16 Aug 2019 16:46:53 +0800 Subject: [PATCH 8/8] Update static_embedding.py --- fastNLP/embeddings/static_embedding.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fastNLP/embeddings/static_embedding.py b/fastNLP/embeddings/static_embedding.py index 94f7adb5..c2aa1c49 100644 --- a/fastNLP/embeddings/static_embedding.py +++ b/fastNLP/embeddings/static_embedding.py @@ -20,12 +20,14 @@ class StaticEmbedding(TokenEmbedding): 当前支持自动下载的预训练vector有以下的几种(待补充); Example:: - + + >>> from fastNLP import Vocabulary + >>> from fastNLP.embeddings import StaticEmbedding >>> vocab = Vocabulary().add_word_lst("The whether is good .".split()) - >>> embed = StaticEmbedding(vocab, model_dir_or_name='en-glove-50') + >>> embed = StaticEmbedding(vocab, model_dir_or_name='en-glove-50d') >>> vocab = Vocabulary().add_word_lst(["The", 'the', "THE"]) - >>> embed = StaticEmbedding(vocab, model_dir_or_name="en-glove-50", lower=True) + >>> embed = StaticEmbedding(vocab, model_dir_or_name="en-glove-50d", lower=True) >>> # "the", "The", "THE"它们共用一个vector,且将使用"the"在预训练词表中寻找它们的初始化表示。 >>> vocab = Vocabulary().add_word_lst(["The", "the", "THE"])