pruned-nilm

所属分类:土木工程
开发工具:Python
文件大小:0KB
下载次数:1
上传日期:2020-04-25 11:18:17
上 传 者sh-1993
说明:  该报告提供了四种权重修剪算法,用于顺序到点能量分解,以及三种可选的神经...,
(This repo provides four weight pruning algorithms for use in sequence-to-point energy disaggregation as well as three alternative neural network architectures.)

文件列表:
__pycache__/ (0, 2020-04-25)
__pycache__/appliance_data.cpython-37.pyc (860, 2020-04-25)
__pycache__/data_feeder.cpython-37.pyc (6074, 2020-04-25)
__pycache__/model_structure.cpython-37.pyc (5746, 2020-04-25)
__pycache__/remove_space.cpython-37.pyc (256, 2020-04-25)
__pycache__/seq2point_test.cpython-37.pyc (6865, 2020-04-25)
appliance_data.py (1314, 2020-04-25)
data_feeder.py (7380, 2020-04-25)
dataset_generator.py (8395, 2020-04-25)
model_structure.py (8222, 2020-04-25)
pruning_algorithms/ (0, 2020-04-25)
pruning_algorithms/entropic_callback.py (6756, 2020-04-25)
pruning_algorithms/spp_callback.py (8909, 2020-04-25)
pruning_algorithms/threshold_callback.py (3196, 2020-04-25)
remove_space.py (131, 2020-04-25)
seq2point_test.py (8600, 2020-04-25)
seq2point_train.py (12855, 2020-04-25)
test_main.py (1340, 2020-04-25)
train_main.py (1416, 2020-04-25)

# Pruning Algorithms for Seq2Point Energy Disaggregation This code repository implements four weight pruning algorithms designed to reduce the size of Zhang et al.'s sequence-to-point deep learning model for use in energy disaggreation / non-intrusive load monitoring. Three alternative network architectures are also available. These include a dropout variant of Zhang et al.'s architecture, a variant with fewer weights and filters, and an architecture implementing both of these. ## Prerequisites ### Core Libraries Numpy, Pandas, and Matplotlib are required for this project: ```bash pip install numpy && pip install pandas && pip install matplotlib ``` ### TensorFlow Libraries TensorFlow 2.0 GPU is required for GPU-accelerated training and inferencing: ```bash pip install tensorflow-gpu ``` Lightweight models are produced using the Tensorflow Model Optimisation Toolkit: ```bash pip install tensorflow-model-optimization-toolkit ``` ### Datasets The REFIT: Electrical Load Measurements Dataset (Cleaned) is required to create training, validation, and testing datasets. This can be downloaded from https://pureportal.strath.ac.uk/en/datasets/refit-electrical-load-measurements-cleaned. Extract the files using 7-Zip and place all the CSV files in a folder titled "refit_dataset" in the root of the project folder. ## Getting Started To download this project, run the following command: ```bash git clone https://github.com/JackBarber98/prunedNILM.git ``` To generate the required training, testing, and validation datasets for a target appliance, run the following command: ```bash python dataset_generator.py --appliance_name="kettle" ``` Note that a new dataset must be created for each appliance you wish to train a model for. The following devices are supported: - "kettle" - "fridge" - "dishwasher" - "washingmachine" - "microwave" ## Pruning Algorithms ### Structured Probabilistic Pruning A pruning algorithm proposed by Wang et al. [2]. The probability of a non-specific weight in a layer / convolutional filter being pruned is calculated. A weight mask for each layer is produced using Monte Carlo sampling that, in turn, is used to set insignificant weights to zero. SPP pruning can be utilised during training using the following: ```bash python train_main.py --pruning_algorithm="spp" ``` ### Entropy-Based Pruning A pruning algorithm proposed by Hur et al. [3]. Gaussian distribution is used to calculate the information gain potential of a specific weight in a layer. By comparing this value to the overall entropy of a layer, weights that have a small value and are less likely to gain information as training continues can be safely removed from the network. Entropic pruning can be utilised during training using the following: ```bash python train_main.py --pruning_algorithm="entropic" ``` ### Relative Threshold Pruning An implementation of the relative threshold approach to pruning devised by Ashouri et al. [4]. The value of the n-th percentile weight is selected as a threshold, with any weights with a value less than this being set to zero during the pruning process. It is possible to conduct pruning with this algorithm after training has occurred. Relative threshold pruning can be utilised during training using the following: ```bash python train_main.py --pruning_algorithm="threshold" ``` ### Low Magnitude Pruning The default pruning algorithm utilised by the Tensorflow Model Optimisation Toolkit [5]. In this implementation, the smallest 50% of weights are removed from the model during training. TFMOT pruning can be utilised during training using the following: ```bash python train_main.py --pruning_algorithm="tfmot" ``` ## Alternative Seq2Point Architectures The default architecture used by Zhang et al. can be accessed using the following terminal command: ```bash python train_main.py --network_type="default" ``` This architecture is used when no network type is provided upon initialising the training of a model. Also available is a "reduced" architecture containing ten fewer filters per convolutional layer, and 2^9 instead of 2^10 hidden layer neurons. This can be accessed by changing the network type to ```"reduced"```. The default architecture with dropout applied to each network layer can be utilised by replacing the network type with ```"dropout"```, whilst the reduced architecture with dropout applied can be used with ```"reduced_dropout"```. ## Usage ### Training ```python train_main.py``` will train a seq2point model either with or without a pruning algorithm. The following options are available: ``` --appliance_name APPLIANCE_NAME The name of the appliance to train the network with. Default is kettle. Available are: kettle, fridge, washing machine, dishwasher, and microwave. --batch_size BATCH_SIZE The batch size to use when training the network. Default is 1000. --crop CROP The number of rows of the dataset to take training data from. Default is 10000. --pruning_algorithm PRUNING_ALGORITHM The pruning algorithm that the network will train with. Default is none. Available are: spp, entropic, threshold. --network_type NETWORK_TYPE The seq2point architecture to use. Only use if you do not want to use the standard architecture. Available are: standard, dropout, smaller, and optimal. ``` ### Testing ```python test_main.py``` will test a pre-trained seq2point model. The following options are available: ``` --appliance_name APPLIANCE_NAME The name of the appliance to perform disaggregation with. Default is kettle. Available are: kettle, fridge, dishwasher, microwave. --batch_size BATCH_SIZE The batch size to use when training the network. Default is 1000. --crop CROP The number of rows of the dataset to take training data from. Default is 10000. --pruning_algorithm PRUNING ALGORITHM The pruning algorithm of the model to test. Default is none. --network_type NETWORK TYPE The seq2point architecture to use. Only use if you do not want to use the standard architecture. Available are: standard, dropout, smaller, and optimal. ``` ## References **[1]** Zhang, C., Zhong., Wang, Z., Goddard, N., Sutton, S. (2017) _Sequence-to_Point Learning with Neural Networks for Non-Intrusive Load Monitoring_. Available from https://arxiv.org/pdf/1612.09106.pdf [accessed 17 January 2020]. **[2]** Wang, H., Zhang, Q., Wang, Y., Hu, H. (2018) _Structured Probabilistic Pruning for Convolutional Neural Network Acceleration_. Zhejiang University, China. Available from https://arxiv.org/pdf/1709.06994.pdf [accessed 17 January 2020]. **[3]** Hur, C., Kang, S. (2018) Entropy-Based Pruning Method For Convolutional Neural Networks. _The Journal of Supercomputing_, 75:2950–2963. Available from https://link-springer-com/content/pdf/10.1007/s11227-018-2684-z.pdf [accessed 17 January 2020]. **[4]** Asouri, A. H., Abdelrahman, T. S., Remedios, A. D. (2019) Retraining-Free Methods for Fast On-the-Fly Pruning of Convolutional Neural Networks. _Neurocomputing_, 370 56-59. Available from https://pdf.sciencedirectassets.com/271597/1-s2.0-S0925231219X00405/1-s2.0-S0925231219312019/main.pdf?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEGUaCXVzLWVhc3QtMSJIMEYCIQDpMg0rKLoZUhh%2BxuG4x2OZGixbPGELgt5LvXKAvYYWaAIhALvx1yf3HZ2tL5IkU%2FPocIPKz2YltzZESoMHha85CDurKr0DCO3%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQAhoMMDU5MDAzNTQ2ODY1IgxDKHKcYGfUWeEttHoqkQNlWV0O%2BATZgfLHBX208x%2FDKawz3A7VA4IWqUNa6tmX%2Ftw3DpBSCG00CLoY1tmKTzY4jFPcVW27KDJ7Fph0BEbfYZUk%2FR1cPEtmE7u8rXQL%2BYfKVbFB9%2FvyjLlOGF%2Ft283wRkPc93D7sRhe1revbh4wCEjDRe%2Fbm%2FGj%2B6qA4Vyt7LlX9YXsbTbDb3zYB7l339k4N%2BJKugHDR6lDAPEv74uPX%2FdDonSEvGl88fIv7atOxrlAUHO6WxRW0CzRE35WuJOO%2BNVCCAL45MBpeqF2XmJCOM89fxTdZOgEvE7kr5rFnySaC%2BASl0rf7a7%2Bv%2BCef265WpwQ%2BFq8KUzhnnEtLbXAN%2BWrxX10I37eoxhuz8ENy%2FIAnPmMYy7Vrmem74hVDMo%2B5tCJAWfl3HHq6pnOpdd%2B8Ewhwwj2YQbSrEvR%2Fh%2Fivrc%2Bfoald4TFvzgqRLUtjs8TSFmNkLwnYyqRYdWja7v2jjpF1aLjYRR7J8IfHwCBto7hF%2FgDbqadqBWNdMmm3OFrB8io4tCa4NQJTuKaidyYzDCRr5bxBTrqAWPEEIwzA1Hz5RwJu65xpp9%2BfSrquOnke%2FZ3q4ugl2goA7%2FwJueEWu8zPxc5FgPjLu9sIgNMizlw3cw8%2FQWk0v46%2BCYHm%2Bysb9JlChCubLDFGtHnTAD4W4t%2FnZlrC3DwtLwzqr%2BjisJOF7YJpxY9mYoVh2IUaloutPmPE1E4cZOPPQV95%2BILsXy9Ysi845mmloH5XwcgH8Fmku1URIShRMpUp%2BUssNAOxaA8RASXoXAawIyq2tYGVemqhOFOy%2BQSDtAcLotUnGnnSxh1EomSxN%2F3fzGLdfaNRchQZP%2B175Tya4oOOcQ%2FCejQoA%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20200120T130550Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=ASIAQ3PHCVTYXPIU7AHF%2F20200120%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=12a194d9fc8dbf2c0afdf5becb3484095122f29cb152b8fe9e29b64369f95d5f&hash=7e57517e09976b83550e004fe80295590eeabd8a510dbd78db0eace50b8c83a8&host=68042c943591013ac2b2430a89b270f6af2c76d8dfd086a07176afe7c76c2c61&pii=S0925231219312019&tid=spdf-e1b93937-398d-4d0f-8352-75920f99b58b&sid=5cc7b8d51dadd847c79a4ce19b8a91634fefgxrqb&type=client [accessed 20 January 2020]. **[5]** Tensorflow (undated). _Magnitude-Based Weight Pruning with Keras_. Available from https://www.tensorflow.org/model_optimization/guide/pruning/pruning_with_keras [accessed 17 January 2020].

近期下载者

相关文件


收藏者