(self, x_enc, x_mark_enc)
| 407 | return dec_out_list |
| 408 | |
| 409 | def classification(self, x_enc, x_mark_enc): |
| 410 | x_enc, _ = self.__multi_scale_process_inputs(x_enc, None) |
| 411 | x_list = x_enc |
| 412 | |
| 413 | # embedding |
| 414 | enc_out_list = [] |
| 415 | for x in x_list: |
| 416 | enc_out = self.enc_embedding(x, None) # [B,T,C] |
| 417 | enc_out_list.append(enc_out) |
| 418 | |
| 419 | # MultiScale-CrissCrossAttention as encoder for past |
| 420 | for i in range(self.layer): |
| 421 | enc_out_list = self.pdm_blocks[i](enc_out_list) |
| 422 | |
| 423 | enc_out = enc_out_list[0] |
| 424 | # Output |
| 425 | # the output transformer encoder/decoder embeddings don't include non-linearity |
| 426 | output = self.act(enc_out) |
| 427 | output = self.dropout(output) |
| 428 | # zero-out padding embeddings |
| 429 | output = output * x_mark_enc.unsqueeze(-1) |
| 430 | # (batch_size, seq_length * d_model) |
| 431 | output = output.reshape(output.shape[0], -1) |
| 432 | output = self.projection(output) # (batch_size, num_classes) |
| 433 | return output |
| 434 | |
| 435 | def anomaly_detection(self, x_enc): |
| 436 | B, T, N = x_enc.size() |
no test coverage detected