all convolutional blocks 4 kinds of conv blocks, which #feature_map are 64,128,256,512 Depth: 9 17 29 49 ------------------------------ conv block 512: 2 4 4 6 conv block 256: 2 4 4 10 conv block 128: 2 4 10 16 con
(self, dataset, config)
| 25 | |
| 26 | class TextVDCNN(Classifier): |
| 27 | def __init__(self, dataset, config): |
| 28 | """all convolutional blocks |
| 29 | 4 kinds of conv blocks, which #feature_map are 64,128,256,512 |
| 30 | Depth: 9 17 29 49 |
| 31 | ------------------------------ |
| 32 | conv block 512: 2 4 4 6 |
| 33 | conv block 256: 2 4 4 10 |
| 34 | conv block 128: 2 4 10 16 |
| 35 | conv block 64: 2 4 10 16 |
| 36 | First conv. layer: 1 1 1 1 |
| 37 | """ |
| 38 | super(TextVDCNN, self).__init__(dataset, config) |
| 39 | |
| 40 | self.vdcnn_num_convs = {} |
| 41 | self.vdcnn_num_convs[9] = [2, 2, 2, 2] |
| 42 | self.vdcnn_num_convs[17] = [4, 4, 4, 4] |
| 43 | self.vdcnn_num_convs[29] = [10, 10, 4, 4] |
| 44 | self.vdcnn_num_convs[49] = [16, 16, 10, 6] |
| 45 | self.num_kernels = [64, 128, 256, 512] |
| 46 | |
| 47 | self.vdcnn_depth = config.TextVDCNN.vdcnn_depth |
| 48 | self.first_conv = torch.nn.Conv1d(config.embedding.dimension, 64, 3, |
| 49 | padding=2) |
| 50 | last_num_kernel = 64 |
| 51 | self.convs = torch.nn.ModuleList() |
| 52 | self.batch_norms = torch.nn.ModuleList() |
| 53 | for i, num_kernel in enumerate(self.num_kernels): |
| 54 | tmp_convs = torch.nn.ModuleList() |
| 55 | tmp_batch_norms = torch.nn.ModuleList() |
| 56 | for _ in range(0, self.vdcnn_num_convs[self.vdcnn_depth][i]): |
| 57 | tmp_convs.append( |
| 58 | torch.nn.Conv1d(last_num_kernel, num_kernel, 3, padding=2)) |
| 59 | tmp_batch_norms.append(torch.nn.BatchNorm1d(num_kernel)) |
| 60 | last_num_kernel = num_kernel |
| 61 | self.convs.append(tmp_convs) |
| 62 | self.batch_norms.append(tmp_batch_norms) |
| 63 | |
| 64 | self.top_k = self.config.TextVDCNN.top_k_max_pooling |
| 65 | hidden_size = self.num_kernels[-1] * self.top_k |
| 66 | self.linear1 = torch.nn.Linear(hidden_size, 2048) |
| 67 | self.linear2 = torch.nn.Linear(2048, 2048) |
| 68 | self.linear = torch.nn.Linear(2048, len(dataset.label_map)) |
| 69 | self.dropout = torch.nn.Dropout(p=config.train.hidden_layer_dropout) |
| 70 | |
| 71 | def get_parameter_optimizer_dict(self): |
| 72 | params = list() |
nothing calls this directly
no outgoing calls
no test coverage detected