
算法
文章平均质量分 79
雨微尘
只要专注于某一项事,就一定会做出使自己感到吃惊的成绩来——成功源于坚持。
展开
-
时间序列(Time-Series)SelfAttention_Family.py代码解析
前向传播函数,首先处理时间序列数据并使用注意力机制,然后通过一个路由器(router)处理数据的维度。#前向传播函数,和DSAttention类似,计算注意力分数,并应用掩码和dropout。#在初始化函数中,设置了一些基础的参数,如缩放因子、掩码标志、是否输出注意力矩阵等。#前向传播函数,先对查询、键、值进行线性变换,然后通过内部注意力机制计算输出。#定义了一个内部函数,用于调整查询长度,以适应LSH自注意力要求的特定长度。#定义了一个内部函数,用于从K中对Q进行采样,并选出Q中的top-k项。原创 2024-02-06 15:15:41 · 1440 阅读 · 0 评论 -
时间序列(Time-Series)Pyraformer_EncDec.py代码解析
定义了一个函数来获取注意力掩码,这个掩码用于PAM-Naive(Pyramid Attention Mechanism)的注意力层。#定义了编码器层,由两个子层组成:一个自注意力层和一个位置前馈网络。#定义了一个瓶颈卷积层结构,用于构造跨尺度卷积(CSCM)。# #最终反转掩码矩阵以创建实际使用的掩码。#定义了一个函数来收集来自PAM层级结构序列的特征。#初始化一个列表,用于存放每一层的尺寸。#定义了一个包含自注意力机制的编码器模型。#定义了一个卷积层类,用于降低序列的维度。#定义了一个常规掩码类。原创 2024-02-06 15:14:24 · 968 阅读 · 0 评论 -
时间序列(Time-Series)MultiWaveletCorrelation.py代码解析
定义了一个执行多小波变换卷积操作的神经网络模块。这个类结合了多小波变换和卷积操作,用于深度学习模型中的特征提取。#定义了一个基于傅里叶变换的交叉注意力模块。#定义了一个基于多小波变换的交叉注意力模块。这个类结合了交叉注意力和多小波变换,用于捕捉序列间的关系。#定义了一个执行稀疏核傅里叶变换的神经网络模块。#定义了一个基于多小波变换的神经网络模块。这个类执行多小波变换,用于深度学习模型中的特征变换。#这两行导入了PyTorch的神经网络模块和函数模块。#这个函数计算多项式基函数和关于基base的检验函数。原创 2024-02-06 14:48:04 · 912 阅读 · 0 评论 -
时间序列(Time-Series)FourierCorrelation.py代码解析
modes是频率域关注的模式数,mode_select_method是选择这些模式的方法,默认为'random'。#这行定义了一个名为get_frequency_modes的函数,它接受序列长度seq_len,模式数modes,和模式选择方法mode_select_method作为参数。#返回处理后的结果x和一个占位符None,因为通常注意力机制会返回一个额外的输出,例如注意力权重,但在这里并未使用。#在FourierBlock的实例中,调用get_frequency_modes函数来获取频率模式的索引。原创 2024-02-06 14:01:22 · 838 阅读 · 2 评论 -
时间序列(Time-Series)ETSformer_EncDec.py代码解析
self.conv1和self.conv2、self.norm1、self.norm2、self.norm3、self.dropout:与编码层类似,定义相应的卷积层、归一化层和dropout层。#self.self_attention和self.cross_attention:定义自注意力机制和交叉注意力机制。#self.conv1和self.conv2:定义两个1维卷积层用于在注意力操作后对特征进行转换。#self.norm1和self.norm2:定义两个层归一化操作用于稳定网络输出。原创 2024-02-04 18:36:04 · 647 阅读 · 0 评论 -
时间序列(Time-Series)Embed.py代码解析
x = self.tokenConv(x.permute(0, 2, 1)).transpose(1, 2) #在前向传播中,对输入x进行维度交换,应用卷积,然后再次交换维度,使其回到原始的形状。# position = torch.arange(0, max_len).float().unsqueeze(1) 创建一个0到max_len的连续值,并增加一个维度。# x = self.value_embedding(x) + self.position_embedding(x) 应用值嵌入和位置嵌入。原创 2024-01-30 17:18:44 · 990 阅读 · 1 评论 -
时间序列(Time-Series)Crossformer_EncDec.py代码解析
初始化方法,参数包括模型的配置configs,窗口大小win_size,模型维度d_model,注意力头数n_heads,前馈网络的维度d_ff,模块的深度depth,dropout率,段数seg_num以及一个因子factor。#初始化方法接收自注意力和交叉注意力层,段长度seg_len,模型维度d_model,可选的前馈网络维度d_ff,以及dropout率。#如果是第一次迭代,将最终预测设置为该层预测,否则将该层预测累加到最终预测上。#将注意力层的输出加到输入上,并应用dropout。原创 2024-01-26 17:23:53 · 691 阅读 · 0 评论 -
时间序列(Time-Series)AutoCorrelation.py代码解析
它接受查询 (queries),键 (keys),值 (values) 以及注意力掩码 (attn_mask),应用傅立叶变换来发现周期性依赖,然后使用聚合函数来处理时间延迟。self.dropout = nn.Dropout(attention_dropout) #注意力机制的dropout率。self.mask_flag = mask_flag #掩码。#实现自相关的训练聚合,该方法首先要找到最重要的时间延迟,然后根据延迟进行聚合。#提供完整的注意力层接口。原创 2024-01-24 17:03:18 · 533 阅读 · 1 评论 -
时间序列(Time-Series)TimesNet.py代码解析
top_list = top_list.detach().cpu().numpy() #从gpu转移cpu并转换为numpy数组。return period, abs(xf).mean(-1)[:, top_list] #返回周期和这些周期对应的平均振幅。_, top_list = torch.topk(frequency_list, k) #找到top k个频率成分。frequency_list = abs(xf).mean(0).mean(-1) #计算变换后振幅的均值。原创 2024-01-24 11:45:11 · 1515 阅读 · 3 评论 -
时间序列(Time-Series)exp_short_term_forecasting.py代码解析
from utils.losses import mape_loss, mase_loss, smape_loss #自定义损失函数。from data_provider.data_factory import data_provider #数据提供模块。#选择优化器,该函数使用adam优化器,从传入的参数self 添加self.args.learning_rate学习率。#验证方法,通过计算模型验证的误差来评估模型性能,即向前传播时不根据学习率计算梯度。原创 2024-01-23 17:25:26 · 903 阅读 · 2 评论 -
时间序列(Time-Series)exp_imputation.py代码解析
mask[mask <= self.args.mask_rate] = 0 # masked #被掩盖。mask[mask > self.args.mask_rate] = 1 # remained #保留。mask[mask <= self.args.mask_rate] = 0 # masked #被掩盖。mask[mask > self.args.mask_rate] = 1 # remained #保留。#将数据的数据类型转化为浮点型,加载到GPU或CPU。原创 2024-01-23 17:22:43 · 640 阅读 · 0 评论 -
时间序列(Time-Series)exp_long_term_forecasting.py代码解析
将输入数据和真实标签的最后一维拼接起来,形成gt(真实值图),将输入数据和预测结果的最后一维拼接起来,形成pd预测图。#选择优化器,该函数使用adam优化器,从传入的参数self 添加self.args.learning_rate学习率。#从data_provider函数获取数据集合和数据加载器,并提供标志(train,val,test)#将输出和真实标签从模型运行的设备转移到cpu,并将数据转换为numpy格式。#验证方法,通过计算模型验证的误差来评估模型性能,即向前传播时不根据学习率计算梯度。原创 2024-01-22 18:41:32 · 820 阅读 · 2 评论