学习分享——基于深度学习的NILM负荷分解(一)对DL的看法准备工作
好啦,我來填坑啦哈哈
經(jīng)過了幾個月的對深度學習的學習、了解和實踐,
對于用深度學習來做NILM的經(jīng)驗也是積累了不少。
在此,做以小結(jié)。
在此,感謝~柳柳,小張,小田,小劉的支持和鼓勵。
話不多說,下面開始!~
一,心里上的準備
本文開始的一系列文字,是基于深度學習的方法,來做負荷有用功分解預測以及電器識別的。
如果是要用傳統(tǒng)的概率模型,可以參照我之前的幾篇,傳送門:https://blog.csdn.net/wwb1990/category_9655726.html
說到深度學習,行業(yè)內(nèi)俗稱 “煉丹”,用什么煉(各種架構(gòu)),煉多久(各種參數(shù)),怎么煉(網(wǎng)絡結(jié)構(gòu)),煉出來的好不好(標準),,,以上基本沒有個統(tǒng)一的說法,充滿著不確定性(刺激)
而且很多時候,是不能用人的理解方式,去評判訓煉出的模型結(jié)果的對錯的。只能說是網(wǎng)絡學到了我們想讓他學到的邏輯,或者是學的不是我們期待他學的。
我認為這是個心態(tài)問題,即結(jié)果的正確率很低,那這時候要思考的,首先應該是,
1,我給網(wǎng)絡學習的材料(輸入),是不是包含我希望他學的知識。
舉個栗子,輸入的數(shù)據(jù)包含了太多的繁雜的信息,那么少量數(shù)據(jù)的學習,不一定就學到關鍵信息。
再來個貼切的例子,給網(wǎng)絡訓練時候,訓練紅衣服,藍褲子,讓它分類。它可以分出來了,但是有可能你再給他一個藍衣服的時候,它認成了褲子。
這里面又涉及了兩個問題,
一個是訓練的數(shù)據(jù)集少,如果訓的數(shù)據(jù)集包括藍衣服,那就能將藍衣服分到衣服里面。這個是數(shù)據(jù)集的涵蓋范圍,即,如果你也不清楚用什么特征可以區(qū)分分類的話,那就盡可能多的給出各種數(shù)據(jù)參數(shù)來學習,以及盡可能多數(shù)量和多樣的數(shù)據(jù)。
第二個是關鍵屬性的提取,也就是數(shù)據(jù)的預處理。以上面的例子來說,我們?nèi)艘呀?jīng)知道了,通過顏色是肯定不能區(qū)分衣服還是褲子,那為了避免網(wǎng)絡學到這個(出現(xiàn)上面藍衣服問題),在輸入數(shù)據(jù)的時候,可以預處理數(shù)據(jù),歸納到只輸入衣服和褲子的形狀等。
2,它學習的方式(網(wǎng)絡結(jié)構(gòu)和類型),能不能總結(jié)或提煉出我希望他學的知識。
這個就很好說多了,
循環(huán)網(wǎng)絡就是提煉一個序列中變化的規(guī)律,
卷積網(wǎng)絡就是提取圖中的細節(jié)中找規(guī)律
全連接網(wǎng)絡就是從一堆數(shù)據(jù)中找到規(guī)律,
卷積+循環(huán)就是從序列的圖中的細節(jié)中找到變化規(guī)律
卷積+全連接就是從圖中的細節(jié)提取的數(shù)據(jù)中找規(guī)律
。。。。
我上面說的都是幫助理解的舉例哈,
實際上與輸入,網(wǎng)絡層間關系,以及輸出都有關。也就是說用,舉例:全連接也可以學習圖的規(guī)律,也可以找序列變化規(guī)律,但是網(wǎng)絡結(jié)構(gòu),輸入輸出要做出相應調(diào)整。
意思就是,你的網(wǎng)絡設計要能學會你需要學到的規(guī)律。
3,我如何去改進它
這方面,也是初入丹道的我一直在追尋的,目前認為比較玄學。
因為看書也好,看大神們的博客論文也好,會發(fā)現(xiàn),每個使用場景,甚至每個數(shù)據(jù)集,每次訓練,都是不一樣的。
因為深度學習的核心就是隨機,所以沒有絕對正確的方法。
但這個正是大家在同一起跑線的優(yōu)勢,
而大神們也僅僅是比你的經(jīng)驗多一些(有用的和失敗的)
只有不斷的開拓創(chuàng)新,實驗調(diào)參,改善結(jié)構(gòu),,,各種方案無所不用其極。才能龜速的提升你的模型~~hhhh
所以不用著急,就算一開始正確率比較低,那也不是網(wǎng)絡的錯(網(wǎng)絡他爹的?)
去思考前兩點,然后調(diào)整各種參數(shù)的實驗,才能有感覺~~
(這里我用的是感覺,而不是理性思維推導,,因為可能你在嘗試了幾次某一個參數(shù)改大,正確率就降低,然后要放棄的時候,又多改大了一點點,就突然神奇的正確率提升了(匪夷所思就對了~))
二,技能和環(huán)境上的準備
前面說了一堆對于深度學習的理解哈,下面開始本項目的切實準備工作。
Python不多說了,我這里用的3.6
pytorch,keras 建議二選一,深度學習新人建議keras。高手直接用TF或者其他網(wǎng)絡隨意隨意。(舉個例子:同一個網(wǎng)絡,TF要寫50行代碼,pytorch寫20行,keras寫10行。當然論靈活性TF原架構(gòu)最高,pytorch其次,keras低點。易用性keras最高,初學者(我目前= =)能想到的網(wǎng)絡都能輕松構(gòu)建)
初學深度學習的同學,我推薦一本keras的書,我自己就是1個月左右的業(yè)余時間,通讀+所有代碼都是通透了一遍。
(不做廣告,只發(fā)個豆瓣的,各種網(wǎng)上有書賣的都有,自己去查吧長下面這樣https://book.douban.com/subject/30293801/)
安裝pytorch和TF2的網(wǎng)上頁多得是,我也有篇文字可以參考(RNN & LSTM 學習筆記 —— Anaconda安裝,Python安裝,PyTorch,Tensorflow配置)
Keras的安裝和TF2 GPU版本的安裝在這篇文章(深度學習 從零開始 —— 神經(jīng)網(wǎng)絡(三),安裝配置keras,GPU版本TensorFlow,安裝CUDA各種坑~~~)
最好是有GPU的電腦,TF2-GPU版本能讓你時半功成~~
當然,沒有GPU或者裝CUDA懵圈的同學,那就簡單安裝普通CUP的TF2吧。就是跑的慢點,結(jié)果都一樣。去上一天課回來就訓完了 hhhhh
這里列一下我使用的一些關鍵庫的版本:
除了nilmtk用的panda庫需要0.25.0的以外。其他應該是新的就好吧(大概是)
剩下需要的sci,numpy等等的庫就裝新的就好。
二,數(shù)據(jù)集的準備
之前用的是REDD的數(shù)據(jù)集,用過的同學,打印一下全部就知道,中間時間缺失了一大部分的數(shù)據(jù)、、、
所以這次我們使用UK-DALE的數(shù)據(jù)集 https://ukerc.rl.ac.uk/DC/cgi-bin/edc_search.pl?GoButton=Detail&WantComp=41
而且其中已經(jīng)有轉(zhuǎn)好格式的h5文件,只下載這個就包含前面的原始數(shù)據(jù)內(nèi)容了。
以上準備好了
可以開始我們《深度學習大冒險》了
To be continued.
總結(jié)
以上是生活随笔為你收集整理的学习分享——基于深度学习的NILM负荷分解(一)对DL的看法准备工作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序加壳和侦壳
- 下一篇: 点云离群点剔除 — open3d pyt