fastNLP.models.star_transformer module

Star-Transformer 的 Pytorch 实现。

class fastNLP.models.star_transformer.StarTransEnc(embed, hidden_size, num_layers, num_head, head_dim, max_len, emb_dropout, dropout)[源代码]

基类:torch.nn.modules.module.Module

别名 fastNLP.models.StarTransEnc fastNLP.models.star_transformer.StarTransEnc

带word embedding的Star-Transformer Encoder

__init__(embed, hidden_size, num_layers, num_head, head_dim, max_len, emb_dropout, dropout)[源代码]
参数
  • embed – 单词词典, 可以是 tuple, 包括(num_embedings, embedding_dim), 即 embedding的大小和每个词的维度. 也可以传入 nn.Embedding 对象,此时就以传入的对象作为embedding

  • hidden_size – 模型中特征维度.

  • num_layers – 模型层数.

  • num_head – 模型中multi-head的head个数.

  • head_dim – 模型中multi-head中每个head特征维度.

  • max_len – 模型能接受的最大输入长度.

  • emb_dropout – 词嵌入的dropout概率.

  • dropout – 模型除词嵌入外的dropout概率.

forward(x, mask)[源代码]
参数
  • x (FloatTensor) – [batch, length, hidden] 输入的序列

  • mask (ByteTensor) – [batch, length] 输入序列的padding mask, 在没有内容(padding 部分) 为 0, 否则为 1

返回

[batch, length, hidden] 编码后的输出序列

[batch, hidden] 全局 relay 节点, 详见论文

training: bool
class fastNLP.models.star_transformer.STNLICls(embed, num_cls, hidden_size=300, num_layers=4, num_head=8, head_dim=32, max_len=512, cls_hidden_size=600, emb_dropout=0.1, dropout=0.1)[源代码]

基类:torch.nn.modules.module.Module

别名 fastNLP.models.STNLICls fastNLP.models.star_transformer.STNLICls

用于自然语言推断(NLI)的Star-Transformer

__init__(embed, num_cls, hidden_size=300, num_layers=4, num_head=8, head_dim=32, max_len=512, cls_hidden_size=600, emb_dropout=0.1, dropout=0.1)[源代码]
参数
  • embed – 单词词典, 可以是 tuple, 包括(num_embedings, embedding_dim), 即 embedding的大小和每个词的维度. 也可以传入 nn.Embedding 对象, 此时就以传入的对象作为embedding

  • num_cls – 输出类别个数

  • hidden_size – 模型中特征维度. Default: 300

  • num_layers – 模型层数. Default: 4

  • num_head – 模型中multi-head的head个数. Default: 8

  • head_dim – 模型中multi-head中每个head特征维度. Default: 32

  • max_len – 模型能接受的最大输入长度. Default: 512

  • cls_hidden_size – 分类器隐层维度. Default: 600

  • emb_dropout – 词嵌入的dropout概率. Default: 0.1

  • dropout – 模型除词嵌入外的dropout概率. Default: 0.1

forward(words1, words2, seq_len1, seq_len2)[源代码]
参数
  • words1 – [batch, seq_len] 输入序列1

  • words2 – [batch, seq_len] 输入序列2

  • seq_len1 – [batch,] 输入序列1的长度

  • seq_len2 – [batch,] 输入序列2的长度

Return output

[batch, num_cls] 输出分类的概率

predict(words1, words2, seq_len1, seq_len2)[源代码]
参数
  • words1 – [batch, seq_len] 输入序列1

  • words2 – [batch, seq_len] 输入序列2

  • seq_len1 – [batch,] 输入序列1的长度

  • seq_len2 – [batch,] 输入序列2的长度

Return output

[batch, num_cls] 输出分类的概率

training: bool
class fastNLP.models.star_transformer.STSeqCls(embed, num_cls, hidden_size=300, num_layers=4, num_head=8, head_dim=32, max_len=512, cls_hidden_size=600, emb_dropout=0.1, dropout=0.1)[源代码]

基类:torch.nn.modules.module.Module

别名 fastNLP.models.STSeqCls fastNLP.models.star_transformer.STSeqCls

用于分类任务的Star-Transformer

__init__(embed, num_cls, hidden_size=300, num_layers=4, num_head=8, head_dim=32, max_len=512, cls_hidden_size=600, emb_dropout=0.1, dropout=0.1)[源代码]
参数
  • embed – 单词词典, 可以是 tuple, 包括(num_embedings, embedding_dim), 即 embedding的大小和每个词的维度. 也可以传入 nn.Embedding 对象, 此时就以传入的对象作为embedding

  • num_cls – 输出类别个数

  • hidden_size – 模型中特征维度. Default: 300

  • num_layers – 模型层数. Default: 4

  • num_head – 模型中multi-head的head个数. Default: 8

  • head_dim – 模型中multi-head中每个head特征维度. Default: 32

  • max_len – 模型能接受的最大输入长度. Default: 512

  • cls_hidden_size – 分类器隐层维度. Default: 600

  • emb_dropout – 词嵌入的dropout概率. Default: 0.1

  • dropout – 模型除词嵌入外的dropout概率. Default: 0.1

forward(words, seq_len)[源代码]
参数
  • words – [batch, seq_len] 输入序列

  • seq_len – [batch,] 输入序列的长度

Return output

[batch, num_cls] 输出序列的分类的概率

predict(words, seq_len)[源代码]
参数
  • words – [batch, seq_len] 输入序列

  • seq_len – [batch,] 输入序列的长度

Return output

[batch, num_cls] 输出序列的分类

training: bool
class fastNLP.models.star_transformer.STSeqLabel(embed, num_cls, hidden_size=300, num_layers=4, num_head=8, head_dim=32, max_len=512, cls_hidden_size=600, emb_dropout=0.1, dropout=0.1)[源代码]

基类:torch.nn.modules.module.Module

别名 fastNLP.models.STSeqLabel fastNLP.models.star_transformer.STSeqLabel

用于序列标注的Star-Transformer模型

__init__(embed, num_cls, hidden_size=300, num_layers=4, num_head=8, head_dim=32, max_len=512, cls_hidden_size=600, emb_dropout=0.1, dropout=0.1)[源代码]
参数
  • embed – 单词词典, 可以是 tuple, 包括(num_embedings, embedding_dim), 即 embedding的大小和每个词的维度. 也可以传入 nn.Embedding 对象, 此时就以传入的对象作为embedding

  • num_cls – 输出类别个数

  • hidden_size – 模型中特征维度. Default: 300

  • num_layers – 模型层数. Default: 4

  • num_head – 模型中multi-head的head个数. Default: 8

  • head_dim – 模型中multi-head中每个head特征维度. Default: 32

  • max_len – 模型能接受的最大输入长度. Default: 512

  • cls_hidden_size – 分类器隐层维度. Default: 600

  • emb_dropout – 词嵌入的dropout概率. Default: 0.1

  • dropout – 模型除词嵌入外的dropout概率. Default: 0.1

forward(words, seq_len)[源代码]
参数
  • words – [batch, seq_len] 输入序列

  • seq_len – [batch,] 输入序列的长度

Return output

[batch, num_cls, seq_len] 输出序列中每个元素的分类的概率

predict(words, seq_len)[源代码]
参数
  • words – [batch, seq_len] 输入序列

  • seq_len – [batch,] 输入序列的长度

Return output

[batch, seq_len] 输出序列中每个元素的分类

training: bool