|
16 | 16 | import paddle.nn as nn
|
17 | 17 | import paddle.nn.functional as F
|
18 | 18 |
|
19 |
| -from ..ernie.modeling import ErniePretrainedModel |
| 19 | +from ..ernie.configuration import ErnieConfig |
| 20 | +from ..ernie.modeling import ErnieModel, ErniePretrainedModel |
20 | 21 |
|
21 | 22 | __all__ = ["ErnieDualEncoder", "ErnieCrossEncoder"]
|
22 | 23 |
|
23 | 24 |
|
24 | 25 | class ErnieEncoder(ErniePretrainedModel):
|
25 |
| - def __init__(self, ernie, dropout=None, output_emb_size=None, num_classes=2): |
26 |
| - super(ErnieEncoder, self).__init__() |
27 |
| - self.ernie = ernie # allow ernie to be config |
28 |
| - self.dropout = nn.Dropout(dropout if dropout is not None else 0.1) |
29 |
| - self.classifier = nn.Linear(self.ernie.config["hidden_size"], num_classes) |
| 26 | + def __init__(self, config: ErnieConfig, output_emb_size: int): |
| 27 | + super(ErnieEncoder, self).__init__(config) |
| 28 | + |
| 29 | + self.ernie = ErnieModel(config) |
| 30 | + dropout = config.classifier_dropout if config.classifier_dropout is not None else 0.1 |
| 31 | + |
| 32 | + self.dropout = nn.Dropout(dropout) |
| 33 | + self.classifier = nn.Linear(config.hidden_size, config.num_labels) |
30 | 34 | # Compatible to ERNIE-Search for adding extra linear layer
|
31 |
| - self.output_emb_size = output_emb_size |
32 | 35 | if output_emb_size is not None and output_emb_size > 0:
|
33 | 36 | weight_attr = paddle.ParamAttr(initializer=paddle.nn.initializer.TruncatedNormal(std=0.02))
|
34 |
| - self.emb_reduce_linear = paddle.nn.Linear( |
35 |
| - self.ernie.config["hidden_size"], output_emb_size, weight_attr=weight_attr |
36 |
| - ) |
| 37 | + self.emb_reduce_linear = paddle.nn.Linear(config.hidden_size, output_emb_size, weight_attr=weight_attr) |
37 | 38 | self.apply(self.init_weights)
|
38 | 39 |
|
39 | 40 | def init_weights(self, layer):
|
|
0 commit comments