1、GRU-selfAttention模型背景简介
GRU全名Gated Recurrent Units,是一种递归神经网络的变种。它改变了LSTM中的记忆单元和门的结构,只使用了两个门(重置门和更新门)并且直接传递当前状态到输出。
self-attention机制同样适用于GRU网络,可以根据输入序列自适应地计算各个时间步的权重。
因此,GRU-selfAttention模型采用GRU网络结合self-attention机制,来更好地解决序列数据中存在的长期依赖关系和局部依赖之间的复杂关系。
2、GRU-selfAttention模型优点总结
本模型的优点有:
-
GRU结构相对LSTM更加轻量级,计算速度更快,可以更快地进行训练和预测;
-
self-attention机制能够更好地处理序列数据之间的关系,为GRU网络提供各个时间步不同的辅助信息,帮助提高预测准确率。
train_ratio = 0.7 # 训练集比例
val_ratio = 0.15 # 验证集比例
test_ratio = 0.15 # 测试集比例
input_length = 48 # 输入数据长度,多步预测建议长,单步预测建议短
output_length = 1 # 输出数据长度,1为单步预测,1以上为多步预测 请注意,随着输出长度的增长,模型训练时间呈指数级增长
learning_rate = 0.1 # 学习率
estimators = 100 # 迭代次数
max_depth = 5 # 树模型的最大深度
interval_length = 2000 # 预测数据长度,最长不可以超过总数据条数
scalar = True # 是否使用归一化
scalar_contain_labels = True # 归一化过程是否包含目标值的历史数据
target_value = 'load' # 需要预测的列名,可以在excel中查看
基于卷积门控循环单元结合注意力机制(CNN-
GRU
-
Attention
)时间序列预测(Matlab完整源码和数据)
基于卷积神经网路-门控循环单元结合SE注意力机制的时间序列预测
单输出单输出,时间序列预测。
运行环境Matlab2021及以上。
评价指标包括:MAE、MBE、RMSE等,代码质量极高,方便学习和替换数据
2 对数据进行清洗,并告知清洗方法
3 将最有优的预测方案与其他方法进行比较,显示出其构建模型的优越性,例如最终,注意力机制的
gru
神经网络与lstm、svr、神经网络进行比较,得出注意力机制的
GRU
神经网络效果最好
4参与比较的模型其预测结果要以图的形式展现
wenzuoyinshiyan3
gpu-
attention
-mse: 6124.498347838368
gpu-
attention
-rmse: 78.25917420876844
gpu-
attention
-r2: 0.2341441452949955
lstm-mse: 131972.16113071027
lstm-rmse: 363.27972848854404
lstm-r2: -15.502845869115102
BP_mse: 4545.954265780895
BP_rmse: 67.42369216959936
BP_r2: 0.4409765028724697
SVR_mse: 6420.551494229659
有问题请关注私聊,包此代码的答疑服务,基本秒回,不满意加球球包退款,可接受定制服务
3、相关技术
相比LSTM,使用
GRU
能够达到相当的效果,准确率不会差多少,并且相比之下
GRU
更容易进行训练,能够很大程度上提高训练效率,因此硬件资源有限时会更倾向于使用
GRU
。
GRU
结构图如下:
4、完整代码和步骤
此代码的依赖环境如下:
tensorflow==2.5.0
numpy==1.19.5
keras==2.6.0
matplotlib==3.5.2
————————————————
版权声明:本文为CSDN博主「AI信仰者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_30803353/article/details/129108978
注意-
GRU
-3M
论文“具有自适应
Attention
-
GRU
模型的品牌级排名系统[C]”的代码。 (接受IJCAI 2018)
运行命令:python train.py --buckets“ ./data/” --checkpointDir ./log/ --exp debug --m1 1 --m2 0 --m3 1 参数:“ buckets”是输入数据的文件夹,“ checkpointDir”是输出数据的折叠,“ debug”仅是文件夹名称(不重要),“ m1 m2 m3”表示激活了哪个修改。
运行上述命令一段时间后,在目录根目录下运行:tensorboard --logdir =“ ./ log /”,然后可以通过网站链接查看性能。
虚拟环境:virtualenv -p python2 env 源环境/ bin /激活
在Linux上安装TensorFlow: pip安装-
Matlab实现基于BO-CNN-
GRU
贝叶斯优化卷积神经网络-门控循环单元时间序列预测(完整程序和数据)
基于贝叶斯算法(bayes)优化卷积神经网络-门控循环单元(CNN-
GRU
)时间序列预测,单列数据集
贝叶斯算法(bayes)优化学习率,隐藏层节点,正则化系数
评价指标包括:R2、MAE、MSE、RMSE等,代码质量极高,
方便学习和替换数据。
运行环境Matlab2020及以上。
输入一个序列,输出长度由模型决定。例如语音识别,输入的语音信号就是一串向量,输出就是语音信号对应的文字。但是语音信号的长度和输出的文字个数并无直接联系,因此需要机器自行决定:
对于世界上没有文字的语言,我们可以对其直接做语音翻译。另外,Seq2seq 还可以用来训练聊天机器人:输入输出都是文字(向量序列),训练集示例如下图:
各式各样的NLP问题,往往都可以看作QA问题,例如问答系统(QA),让机器读一篇文章,读入一个问题,就输出一个答案。而该问题就可以用 Seq2seq 的模型来解决:question
state = [0.0, 0.0]
w_cell_state = np.asarray([[0.1, 0.2], [0.3, 0.4]])
w_cell_input = np.asarray([0.5, 0.6])
b_cell = np.asarray([0.1, -0.1])
w_outp...
但是这种方式是基于RNN模型,存在两个问题。
一是RNN存在梯度消失的问题。(LSTM/
GRU
只是缓解这个问题)
二是RNN 有时间上的方向性,不能用于并行操作。Transformer 摆脱了RNN这种问题。
2.Transformer 的整体框架
输入的x1,x2x_{1},x_{2}x1,x2,共同经过
Self
-
attention
机制后,在
Self
-
attention
中实现了信息的交互,分别得到了z1,z2z_{1},z_{2}z1,z2,将z1,z2
1. 准备训练数据
单轮次的聊天数据非常不好获取,所以这里我们从github上使用一些开放的数据集来训练我们的闲聊模型
数据地址:https://github.com/codemayq/chaotbot_corpus_Chinese
主要的数据有两个:
小黄鸡的聊天语料:噪声很大
微博的标题和评论:质量相对较高
class
Attention
(Layer):
def __init__(
self
, step_dim,
W_regularizer=None, b_regularizer=None,
W_constraint=None, b_constraint=None,
bias=True, **kwargs):
self
.suppor...