(self,
num_classes=None,
dim_input=512,
dim_model=128,
hybrid_decoder_rnn_layers=2,
hybrid_decoder_dropout=0,
position_decoder_rnn_layers=2,
max_len=40,
start_idx=0,
mask=True,
padding_idx=None,
end_idx=0,
encode_value=False)
| 623 | """ |
| 624 | |
| 625 | def __init__(self, |
| 626 | num_classes=None, |
| 627 | dim_input=512, |
| 628 | dim_model=128, |
| 629 | hybrid_decoder_rnn_layers=2, |
| 630 | hybrid_decoder_dropout=0, |
| 631 | position_decoder_rnn_layers=2, |
| 632 | max_len=40, |
| 633 | start_idx=0, |
| 634 | mask=True, |
| 635 | padding_idx=None, |
| 636 | end_idx=0, |
| 637 | encode_value=False): |
| 638 | super().__init__() |
| 639 | self.num_classes = num_classes |
| 640 | self.dim_input = dim_input |
| 641 | self.dim_model = dim_model |
| 642 | self.max_seq_len = max_len |
| 643 | self.encode_value = encode_value |
| 644 | self.start_idx = start_idx |
| 645 | self.padding_idx = padding_idx |
| 646 | self.end_idx = end_idx |
| 647 | self.mask = mask |
| 648 | |
| 649 | # init hybrid decoder |
| 650 | self.hybrid_decoder = SequenceAttentionDecoder( |
| 651 | num_classes=num_classes, |
| 652 | rnn_layers=hybrid_decoder_rnn_layers, |
| 653 | dim_input=dim_input, |
| 654 | dim_model=dim_model, |
| 655 | max_seq_len=max_len, |
| 656 | start_idx=start_idx, |
| 657 | mask=mask, |
| 658 | padding_idx=padding_idx, |
| 659 | dropout=hybrid_decoder_dropout, |
| 660 | encode_value=encode_value, |
| 661 | return_feature=True) |
| 662 | |
| 663 | # init position decoder |
| 664 | self.position_decoder = PositionAttentionDecoder( |
| 665 | num_classes=num_classes, |
| 666 | rnn_layers=position_decoder_rnn_layers, |
| 667 | dim_input=dim_input, |
| 668 | dim_model=dim_model, |
| 669 | max_seq_len=max_len, |
| 670 | mask=mask, |
| 671 | encode_value=encode_value, |
| 672 | return_feature=True) |
| 673 | |
| 674 | self.fusion_module = RobustScannerFusionLayer( |
| 675 | self.dim_model if encode_value else dim_input) |
| 676 | |
| 677 | pred_num_classes = num_classes |
| 678 | self.prediction = nn.Linear(dim_model if encode_value else dim_input, |
| 679 | pred_num_classes) |
| 680 | |
| 681 | def forward_train(self, feat, out_enc, target, valid_ratios, |
| 682 | word_positions): |
no test coverage detected