学习分享——基于深度学习的NILM负荷分解(三)深度学习处理,基础思路

我来继续填坑了~~
给大家两周时间自习深度学习(磨蹭了两周)
不知道同学们的基础打得如何了哈
QQ群1070535031

我分两篇写网络训练的相关,本文介绍整个思路流程,下一篇提供实操代码和相关注释讲解

关注顺序建议:

1,先仔细阅读本文思路分析,认真思考,并且根据学习的深度学习的相关知识,边跟我的思路走,边考虑一下,我这么做的目的,以及优缺点。是你自己的话,如何做,以及如何优化。

2,下一篇给出代码,按功能模块,每一块叠加就是整个项目。不过我建议边思考,边自己去写一遍弄懂每句代码的含义,才是你的。不然后面我提供改进思路,大家一起实践的时候,你会盲目的手足无措。

实验需求

跟随本文进行学习和实验,需要前面博文中的环境,以及提取出来的UK数据。(学习分享——基于深度学习的NILM负荷分解(二)电器数据提取

实验环境:
pycharm,python 3.6+,keras库,numpy库,matplotlib库
以及UKData。

思路分析

进入正题~~

上一节中,我们把一号房子的所有用电器的有用功分别取出来了,电器的数据很多。在这里插入图片描述

为了我们调试和优化网络方便,前期不浪费太多时间去训练。

这里我们从中取出5个比较有区别度的电器数据,来进行流程搭建。

提高准确率,提高区分度,多个同样电器,,等问题,一点点迭代我们的网络。训练的输入数据也可以随之添加。

简单看来,负荷分解 是一个 “多分类,多标签问题”,分析N个电器的有用功变化,根据变化规律,进行多分类。

另外有的同学的思路会是去识别,开启/关闭电器的事件。但由于,这里使用的是低频数据,所以,识别短促的事件并不容易识别到,开启/关闭时候的变化也抓不打详细的变化规律。(需要高频数据,才能体现出不同电器的短时变化规律)

因此本篇的思路是,根据电荷的变化规律,识别电器的开启状态。简单说:根据电荷实时变化,识别哪些电器开着。

由上面这个思路,就可以知道,要看频率变化规律:

1,可以用傅里叶变换,分解出总负荷在哪些频段,来判断电器。

2,直接使用循环神经网络,输入总电荷,用窗口①来抓取总负荷的变化。

那我们从简入深,这里先使用上面第二个思路,这样基本上不用怎么处理数据,建立一个窗口数据的时序网络,直接输入序列数据即可。

窗口:意思如下图,去取一定长度的序列,取完一个,往后移动一段距离,取下一个窗口。
下图每个颜色就是取的一次窗口数据。可以看出其中包括两个参数:窗口长度,窗口每次移动距离(移窗)
这两个参数设置好,第一次取的数据就是1,第二次取2,,之后3,,,之后4,,,,以此列推
在这里插入图片描述
之后呢,我们就可以看看数据怎么准备了。

我们取出来的电器数据,组合五个电器,可以合成出来一个总功~~
然后将其分为,训练数据,验证数据,以及测试数据。测试数据不参与训练。

还要为训练生成一下我们训练需要的data对于的label,用于多分类的训练。

有了数据,就是设计网络了。

上面说了序列数据的处理思路,那就是用循环网络,这里我们选用GRU或LSTM来搭建。来学习数据变化的规律。

根据经验,在循环网络前,我们还要添加几层1D来提炼数据。(一维卷积)

循环网络后接全连接收敛到5个结果。

结果就是训练的五个电器的开关状态。我们定义为1为开着,0为关着。

到此,初步的思路就比较全面了,我画一张简单的步骤流程图,

1,生成五个采样电器的合并数据
在这里插入图片描述
2,生成 label 用于训练。label是五个电器每一时刻的开关状态。0为关闭状态,1为开启状态。

在这里插入图片描述
3,将Data和Label 切分成三份。用于 训练,验证,测试。
在这里插入图片描述
4,构建网络结构,使用循环网络,学习总功率变化规律,判断电器开关状态。
在这里插入图片描述
5,训练网络,验证结果,进行测试。

下一文,我们来实现上面的整个流程。
QQ群1070535031
在这里插入图片描述

  • 21
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值