【问题标题】:How to get penultimate layer output of fastai text model?如何获得fastai文本模型的倒数第二层输出?
【发布时间】:2019-09-21 22:36:09
【问题描述】:
learn = text_classifier_learner(data_clas, AWD_LSTM, drop_mult=0.7)
learn.fit_one_cycle(1, 1e-2)

我已经按照上面的方法训练了 fastai 模型。我可以得到如下预测

preds, targets = learn.get_preds()

但我想要模型 learn 的倒数第二层嵌入(这种做法在 CNN 模型中很常见)。你能帮我怎么做吗?

【问题讨论】:

  • 您确定要分类器的倒数第二层,而不是语言模型吗?

标签: python-3.x nlp transfer-learning fast-ai


【解决方案1】:

我不确定你是否想要一个分类器,但无论如何......

learn.model 为您提供模型架构。那么learn.model[0] 将是编码器learn.model[1] 模型的另一部分。

例子:

要访问 SequentialEx(下面的架构)中的第一个线性层,您可以使用以下命令进行操作 learn.model[0].layers[0].ff.layers[0]

SequentialRNN(
    (0): TransformerXL(
      (encoder): Embedding(60004, 410)
      (pos_enc): PositionalEncoding()
      (drop_emb): Dropout(p=0.03)
      (layers): ModuleList(
        (0): DecoderLayer(
          (mhra): MultiHeadRelativeAttention(
            (attention): Linear(in_features=410, out_features=1230, bias=False)
            (out): Linear(in_features=410, out_features=410, bias=False)
            (drop_att): Dropout(p=0.03)
            (drop_res): Dropout(p=0.03)
            (ln): LayerNorm(torch.Size([410]), eps=1e-05, elementwise_affine=True)
            (r_attn): Linear(in_features=410, out_features=410, bias=False)
          )
          (ff): SequentialEx(
            (layers): ModuleList(
              (0): Linear(in_features=410, out_features=2100, bias=True)
              (1): ReLU(inplace)
              (2): Dropout(p=0.03)
              (3): Linear(in_features=2100, out_features=410, bias=True)
              (4): Dropout(p=0.03)
              (5): MergeLayer()
              (6): LayerNorm(torch.Size([410]), eps=1e-05, elementwise_affine=True)
            )
          )
        )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2020-06-07
    • 2018-05-04
    • 2021-01-06
    • 2023-01-17
    • 2021-03-14
    相关资源
    最近更新 更多