当前位置: 首页 > news >正文

肇庆市网站建设_网站建设公司_服务器维护_seo优化

做网站一般按什么报价,道路建设网站专题,搜索引擎下载安装,可以用AI做网站上的图吗1.任务场景 以家庭为例#xff0c;假设该家庭有m种电器和总负荷的曲线#xff0c;其中#xff0c;总负荷为,各个电器的负荷有#xff08;m是电器个数#xff0c;n是n个时刻#xff09;。我们需要通过对总负荷曲线进行分解#xff0c;识别出该负荷有几种电器同时运行实现…1.任务场景 以家庭为例假设该家庭有m种电器和总负荷的曲线其中总负荷为,各个电器的负荷有m是电器个数n是n个时刻。我们需要通过对总负荷曲线进行分解识别出该负荷有几种电器同时运行实现。 之前的博客已经用NILMTK的组合优化和因子隐马尔可夫实现过了因为效果不是很好考虑用LSTM实现。 2.算法原理 RNN是循环神经网络与CNN不同循环神经网络可以很好地处理文本数据变长且有序的输入序列。RNN设计的初衷是解决长距离输入之间的依赖但是在用基于时间距离的反向传播算法BPTT时会出现神经网络中的梯度消失问题。LSTM长短时记忆网络和GRU通过加入门控机制来弥补梯度消失问题。 遗忘门损失函数是sigmoid。 记忆门损失函数是tanh函数生成候选记忆。 输出门损失函数是sigmoid。 当输入的序列中没有重要信息时LSTM的遗忘门的值接近于1输入门的值接近于0此时过去的记忆将会被保存从而实现长期记忆的功能。当输出的序列中有重要信息时输入门为1遗忘门接近于0这样旧的记忆就会被遗忘新的重要记忆被重新记忆。 3.理论实现 1基于Tensorflow的Keras 首先建立一个LSTM模型输入维度是批次大小batch_size特征向量值n_invector因为这里是1对多因此n_in应为1。 RepeatVector是如果输入的形状为None,32经过添加RepeatVector(3)层之后输出变为None,3,32,RepeatVector不改变我们的步长改变我们的每一步的维数即属性长度 TimeDistributed和Dense一起配合使用主要应用于一对多多对多的情况。首先使用TimeDistributedDense8input_shape (1,16)把每一步的维度为16变成8不改变步长的大小若该层的批输入形状然后(50, 10, 16)则这一层之后的输出为(50, 10, 8) 这里vetor120经数据处理之后时间并非是一秒一个负荷数据。代表每120个时刻的负荷数据构成一组输入变量。 model Sequential() model.add(LSTM(150, batch_input_shape(batch_size, n_in, vector), statefulTrue)) model.add(RepeatVector(n_out)) model.add(LSTM(150, return_sequencesTrue, statefulTrue)) model.add(TimeDistributed(Dense(vector, activationsoftmax))) print(model.summary()) 2基于pytorch 暂时不会后期更新 4.实战 1基于Tensorflow的Keras 读取数据redd的功率数据集 import pandas as pd import numpy as np import os from keras.models import Sequential from keras.layers import LSTM,Dense,TimeDistributed,RepeatVector import tensorflow as tffrom sklearn.model_selection import train_test_splitdef read_data_all(file_dir): data []for parent, dirnames, filenames in os.walk(file_dir):if parentfile_dir:print(父目录)else:for curDir, dirs, files in os.walk(parent):print(当前文件夹,curDir) # fl open(parent/labels.dat,r,encodingutf-8) # for f in fl.readlines(): # f f.split( )[1].strip() # labels.append(f)for i in range(len(files)-1):fo open(parent/files[i],r,encodingutf-8) # fo pd.DataFrame(fo.readlines(),columns[1])# channel_1 fo[1].str.strip().str.split( ,expandTrue) # channel_1 channel_1.rename(columns{0:date,1:power}) # channel_1[date]channel_1[date].astype(int) # channel_1[label]labels[i] # data pd.concat([data,channel_1],axis0)for file in fo.readlines():file file.strip()file [float(i) for i in file.split( )]data.append((int(file[0]),file[1],str(i1),curDir.split(/)[-1]))return data#获取数据 file_dir F:/aayu/负荷分解/low_freq/ data read_data_all(file_dir) 选择house_1为训练数据并进行数据预处理 #选择第一个家庭进行训练 data pd.DataFrame(data,columns[date,power,type,house]) house_1 data[data[house]house_1] #house_1 house_1.set_index([date])#各个电器时间点拼接 elec_type list(set(house_1[type].tolist())) house pd.DataFrame() for i in elec_type:print(i)e house_1[house_1[type]i][[date,power]]e e.rename(columns{power:i})e e.set_index([date])print(e.shape)house pd.concat([house,e],axis1)print(house.shape)#处理缺失 rows [] for row in house.index[house.isnull().sum(axis1)0]:rows.append(row) house house.drop(rows,axis0) # for i in list(Udata.columns[Udata.isnull().sum(axis0)0]): # columnsU.append(i) house house.drop([12],axis1)填充1mains #house[1] house[1].fillna(house[1].mean())#将用电量小的电器也做剔除 #columns house[[3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20]].sum().sort_values(ascendingFalse)[:5].index #columns np.append(columns,[1]) #columns np.append(columns,[2]) #househouse[columns]elec_y [] elec_X_1 [] elec_X_2 [] for j in range(0,house.shape[0],120): # print(j)if j120house.shape[0]: #print(data limits)else: # print(j) # print(len(elec[j:j3600]))elec_X_1.append((np.array(house[j:j120][[1]]).T))elec_X_2.append((np.array(house[j:j120][[2]]).T))elec_y.append((np.array(house[j:j120][[3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19]]).T))X np.array(elec_X_1) y np.array(elec_y)通过sklearn进行数据集划分 X_train, X_test, y_train, y_test train_test_split(X, y, random_state42, test_size0.1) 使用Keras进行模型训练 batch_size 2 n_in 1 vector 120 n_out 20model Sequential() model.add(LSTM(150, batch_input_shape(batch_size, n_in, vector), statefulTrue)) model.add(RepeatVector(n_out)) model.add(LSTM(150, return_sequencesTrue, statefulTrue)) model.add(TimeDistributed(Dense(vector, activationsoftmax))) print(model.summary())model.compile(optimizeradam, lossbinary_crossentropy, metrics[accuracy]) model.fit(X_train, y_train, epochs20, validation_data(X_test, y_test), batch_sizebatch_size) 5.模型优化 在进行模型训练时表现性并不好忽略数据质量的问题可以考虑进行模型调参。模型调参一般从以下方面进行考虑 神经网络的层数 每层神经元的个数 如何初始化Weights和biases loss函数选择哪一个 选择何种RegularizationL1,L2 Regularization parameter lambda 选择多大合适 激励函数如何选择 是否使用dropout 训练集多大比较合适 mini-batch选择多大 学习率多少合适 选择何种梯度下降算法 何时停止Epoch训练 自己模型的超参数 参考资料 keras中TimeDistributed和RepeatVector的解释 Pytorch TimeDistributed 层封装器 keras中使用LSTM实现一对多和多对多
http://www.ihoyoo.com/news/91926.html

相关文章:

  • 网站运行时错误如何做中山外贸网站建设价格
  • 求个免费网站好人有好报已有网站开发app
  • 比较好的手机网站无锡市政设施建设工程有限公司
  • 用html制作个人网站濮阳网络直播
  • 建立一个平台网站需要多少钱网站503错误怎么解决
  • 兰州做网站咨询兰州做网站公司网页游戏源码下载
  • 长沙做网站微联讯点很好织梦网站模板视频
  • 长沙网站建设论坛为什么网站生成后不显示
  • 景安网站备案幕布semcms外贸网站管理系统
  • 记账凭证做网站摘要怎么写简单网页设计html代码
  • 如何建手机网站怎么使用模板建设网站
  • 网站运营代理在建设局网站上怎么样总监解锁
  • 百度如何才能搜索到你的网站深圳做网页
  • wordpress 多语言 站点网站建设通俗讲
  • 深圳那个网站建设上班族怎样提升学历
  • 服务器 无法访问网站重庆sem优化
  • 下载wix做的网站湖南邵阳建设局网站
  • 用dw软件做网站栅格系统wordpress 已登录用户登录
  • 吴江规划建设局网站网站 详细设计
  • 网站建设平台价位淮北网站建设求职简历
  • ps网站切图教程中国寰球工程有限公司网站设计
  • 旅行社做网站微信链接网页网站制作
  • 网站建设和客户对接内容做网站的得多少钱
  • 网站制作制作西宁网站公司
  • 哪些网站做推广比较有效果wordpress 5.1不提示自动更新
  • m开头的网站建设公司经济技术开发区人才网
  • 南阳建站公司深圳微商城网站设计电话
  • 论网站建设的重要性织梦网站定时
  • php红酒网站建设效果图网址
  • 东莞手机网站建设入门重庆网站推广入口