外贸网站 开源站建设行吗,瑞安学校网站建设,wordpress html5 音乐,南海网站制作公司作者主页#xff1a; 七七的个人主页 文章收录专栏#xff1a; 论文复现 欢迎大家点赞 #x1f44d; 收藏 ⭐ 加关注哦#xff01;#x1f496;#x1f496; 短期电力负荷 论文发表问题背景一. 基本问题二. 本论文发现的问题 对于论文发现问题的解决方案#xff1a;复现… 作者主页 七七的个人主页 文章收录专栏 论文复现 欢迎大家点赞 收藏 ⭐ 加关注哦 短期电力负荷 论文发表问题背景一. 基本问题二. 本论文发现的问题 对于论文发现问题的解决方案复现一. 多维特征提取的提取框架二. 论文中进行性能测试的MultiTag2Vec-STLF模型三. 与整数编码IE的特征处理方法进行对比 部署方式 本文所涉及所有资源均在这里可获取。
论文发表
来自《IEEE Transactions on Smart Grid》2022年7月的13卷第4期《IEEE Transactions on Smart Grid》在中科院升级版中大类工程技术位于1区小类工程电子与电气位于1区非综述类期刊。作者包括IEEE会员Nakyoung Kim、IEEE学生会员Hyunseo Park、IEEE高级会员Joohyung Lee以及IEEE高级会员Jun Kyun Choi。链接地址。
问题背景
一. 基本问题
短期电力负荷预测STLF即对未来几小时到几周的电力负荷进行准确预测。
二. 本论文发现的问题
在电力负荷预测中由于数据的高维性和波动性传统的特征提取方法往往难以捕捉到负荷数据中的复杂模式和关系。
对于论文发现问题的解决方案 本论文通过提出一个名为MultiTag2Vec的特征提取框架来解决短期电力负荷预测STLF中的特征工程问题。该框架包括两个主要过程标记tagging和嵌入embedding。
标记过程首先通过从高维时间序列数据中提取关键信息将电气负荷数据转换成紧凑形式。这一步通过聚类子序列来发现重复出现的模式并为每个模式分配唯一的标签从而实现数据的标记。嵌入过程接下来通过学习标签序列中的时间和维度关系来提取特征。为了捕捉这些关系提出了一个带有卷积层的网络模型该模型采用数学分析设计的多输出结构。通过训练可以从任何任意多维标签中提取特征。
复现
一. 多维特征提取的提取框架
时间序列切分聚类打标签
def segment_time_series(X, T):将时间序列 X 分段为长度为 T 的子序列。X: 多元时间序列 (N x D), N 为时间序列长度, D 为维度数T: 每个子序列的长度返回: 分段后的子序列集合形状为 (N_segment, T, D)N, D X.shapeN_segment N // T # 计算分段后的子序列数量segments np.array([X[i*T:(i1)*T] for i in range(N_segment)])return segments# 2. 模式发现
def discover_patterns(segments, K):对分段后的子序列进行聚类提取模式。segments: 分段后的子序列集合, 形状为 (N_segment, T, D)K: 聚类的数量即模式的数量返回: 每个维度的模式集合形状为 (K, T, D)N_segment, T, D segments.shapepatterns []# 对每个维度单独进行聚类for d in range(D):# 提取第 d 个维度的所有子序列data_d segments[:, :, d] # 形状为 (N_segment, T)# 使用 KMeans 进行聚类kmeans KMeans(n_clustersK, random_state42)kmeans.fit(data_d)# 保存聚类中心模式patterns.append(kmeans.cluster_centers_)# patterns 为 D 维的聚类中心集合形状为 (D, K, T)return np.array(patterns)# 3. 数据标记
def tag_data(segments, patterns):对每个子序列打标签标签为距离最近的聚类中心。segments: 分段后的子序列集合, 形状为 (N_segment, T, D)patterns: 每个维度的聚类中心集合形状为 (D, K, T)返回: 每个子序列的标签集合形状为 (N_segment, D)N_segment, T, D segments.shapeK patterns.shape[1] # 模式的数量labels np.zeros((N_segment, D), dtypeint)# 对每个维度进行标记for d in range(D):for i in range(N_segment):# 计算当前子序列与所有聚类中心的距离distances np.linalg.norm(segments[i, :, d] - patterns[d], axis1)# 选择最小距离的聚类中心的标签labels[i, d] np.argmin(distances)return labels嵌入网络定义
class EmbeddingNetwork(nn.Module):def __init__(self, D, K, M):super(EmbeddingNetwork, self).__init__()# 卷积层用于提取输入张量的特征self.conv nn.Conv2d(in_channelsD, out_channelsM, kernel_size(1, K), stride1) self.pool nn.AdaptiveAvgPool2d((1, 1))# 两个并行的全连接层用于预测两个维度的输出标签self.fc1 nn.Linear(M, K)self.fc2 nn.Linear(M, K)def forward(self, x):# 卷积层print(x.shape)x self.conv(x) # 卷积操作print(x.shape)x self.pool(x) # 使用自适应平均池化将每个样本缩减为大小为 (M, 1)print(x.shape)x x.view(x.size(0), -1) # 展平张量形状变为 (batch_size, M)# 两个并行的全连接层output1 self.fc1(x) # 维度1的输出output2 self.fc2(x) # 维度2的输出# 将两个输出拼接在一起形成最后的输出output torch.stack((output1, output2), dim1)return output二. 论文中进行性能测试的MultiTag2Vec-STLF模型
class FeatureExtractor(nn.Module):def __init__(self, embedding_network):super(FeatureExtractor, self).__init__()self.conv embedding_network.convdef forward(self, x):x self.conv(x) # 卷积层x x.view(x.size(0), -1) # 展平张量return x# 初始化特征提取器
feature_extractor FeatureExtractor(embedding_network)# 4. 定义 MultiTag2Vec-STLF 模型
class MultiTag2VecSTLF(nn.Module):def __init__(self, input_dim, hidden_dim, output_dim, feature_extractor):super(MultiTag2VecSTLF, self).__init__()self.feature_extractor feature_extractor# 冻结特征提取器的参数for param in self.feature_extractor.parameters():param.requires_grad False# 双向 LSTM 层self.lstm nn.LSTM(input_dim, hidden_dim, batch_firstTrue, bidirectionalTrue)# 自注意力机制self.attention nn.MultiheadAttention(embed_dim2 * hidden_dim, num_heads1, batch_firstTrue)# 全连接层用于预测下一天 24 小时的负荷self.fc nn.Linear(2 * hidden_dim, output_dim)def forward(self, x):x self.feature_extractor(x)x x.view(x.size()[0], seg_c, -1)# LSTM 前向传播lstm_out, _ self.lstm(x) # lstm_out 形状: (batch_size, seq_length, 2 * hidden_dim)# 注意力机制attn_output, _ self.attention(lstm_out, lstm_out, lstm_out) # 计算自注意力形状: (batch_size, seq_length, 2 * hidden_dim)context_vector torch.sum(attn_output, dim1) # 计算上下文向量形状: (batch_size, 2 * hidden_dim)# 全连接层预测output self.fc(context_vector) # 预测输出形状: (batch_size, output_dim)return output三. 与整数编码IE的特征处理方法进行对比
使用论文中的GEFCom2014数据集中的温度和负荷数据训练的参数设置按照论文中最优效果的参数设置。论文中使用的温度数据来自于数据集中的哪一个气象站论文中没有说此处是选择w1气象站的温度数据训练的结果和论文中的RMSE指标不太一样但是从IE和MultiTag2Vec的RMSE指标对比可以看到论文提出的特征提取方法具有一定优势。 部署方式
Python 3.9.12 Pytorch 以及其他的常用python库 详细复现过程的项目源码、数据和预训练好的模型可从该文章下方链接获取https://www.aspiringcode.com/content。 关于 【论文复现】短期电力负荷的详细讲解七七就先分享到这里了如果你认为这篇文章对你有帮助请给七七点个赞吧如果发现什么问题欢迎评论区留言