液体神经网络LNN-Attention创新结合——基于液体神经网络的时间序列预测(PyTorch框架)

1.数据集介绍

ETT(电变压器温度):由两个小时级数据集(ETTh)和两个 15 分钟级数据集(ETTm)组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。

traffic(交通) :描述了道路占用率。它包含 2015 年至 2016 年旧金山高速公路传感器记录的每小时数据

electrity(电力):从 2012 年到 2014 年收集了 321 个客户每小时电力消耗。

exchange_rate(汇率):收集了 1990 年至 2016 年 8 个国家的每日汇率。

Weather:包括 21 个天气指标,例如空气温度和湿度。它的数据在 2020 年的每 10 分钟记录一次。

ILLNESS:描述了患有流感疾病的患者与患者数量的比率。它包括 2002 年至 2021 年美国疾病控制和预防中心每周数据。

 数据集链接:

https://drive.google.com/drive/folders/1ZOYpTUa82_jCcxIdTmyr0LXQfvaM9vIy

参考文献:

[1]https://ojs.aaai.org/index.php/AAAI/article/view/16936

[2]https://www.nature.com/articles/s41597-022-01721-8

[3]https://www.nature.com/articles/s42256-022-00556-7

2.处理方法

(1)方法

·液体神经网络

Ramin Hasani 等人首次引入了液体时间常数网络Liquid Time-constant networks,这使得网络具有可变的非线性关系,而不是预先定义固定的非线性。随后,他们将这类LTC细胞应用于神经回路策略(NCP)架构中。

Liquid Neural Networks (LNNs) 是一种连续时间循环神经网络(CT-RNN),它们通过微分方程(ODE)来描述隐藏状态随时间的演化过程。在 LNNs 中,隐藏状态的导数和时间常数不是固定的,而是由神经网络动态生成的,这种机制被称为 Liquid Time Constant (LTC)。

图片

而 CfC(Closed-form Continuous-depth)网络 是 LNNs 的一种高效实现方式。与传统 LNN(例如 LTC)通过数值求解器解 ODE 不同,CfC 使用了一个近似的闭式解(closed-form solution),这使得它在训练和推理过程中显著更快。在 CfC 中,隐藏状态 x(t)x(t)x(t) 在任意时间点 t的更新方式如下:

图片

图片

三个神经网络共享一个前馈骨干网络,它是由多个全连接层和非线性激活函数组成。然后分别接入三种不同的“头部”,其中f的头是一个放射函数b+a(Δt),其中Δt是时间步长,a和b是由两层线性全连接层计算得出。g和h的头是使用tanh激活函数的全连接层。

·Attention机制

缩放点积Attention 是 Transformer 模型中的核心机制,能够高效捕获序列数据中的全局依赖关系。它的目标是基于查询(Query)、键(Key)和值(Value)之间的相似性计算加权输出。公式如下:

图片

优势在于:全局信息建模,每个查询都能与所有键进行匹配,捕获序列的全局依赖。计算高效,点积操作简单且易于并行化。适应不同权重,Softmax 的归一化使模型能够灵活关注重要位置。

图片

(2)实验结果

训练集、验证集和测试集划分设置为6:2:2。

注:需根据数据集的特征进一步探索最合适的参数组合,以提升模型性能。

本文方法ETTm1数据集

图片

图片

本文方法ETTh1数据集

图片

图片

3.代码下载

液体神经网络LNN-Attention创新结合——基于液体神经网络的时间序列预测(PyTorch框架)

代码结构清晰,注释加明,尊重原创成果,请勿随意转发,谢谢理解!!!

图片

最后:

小编会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

 

### 使用PyTorch构建液态神经网络(LNN) #### 定义网络架构 在构建液态神经网络时,定义合适的网络结构至关重要。对于LNN而言,这种特殊类型的循环神经元模型模拟生物大脑中的动态行为,其内部状态随时间变化而演变。因此,在设计之初应考虑如何表示这些不断演化的特性。 ```python import torch.nn as nn class LiquidNeuralNetwork(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(LiquidNeuralNetwork, self).__init__() # 初始化网络层... # 自定义初始化或其他设置 def forward(self, x): # 实现前向传播逻辑... pass ``` [^1] #### 实现ODE求解器 由于LNN依赖于微分方程来描述节点间的交互作用,所以需要引入常微分方程(Ordinary Differential Equation, ODE)求解机制。这可以通过调用`torchdiffeq`库完成,该库提供了高效的数值积分算法支持。 ```python from torchdiffeq import odeint_adjoint as odeint def odesys(t, y): """定义系统动力学""" dydt = ... # 计算导数项 return dydt time_steps = torch.linspace(0., T_final, steps=N_timepoints) initial_state = ... solution = odeint(odesys, initial_state, time_steps) ``` #### 参数优化 最后一步是对已建立的模型进行训练调整权重参数直至收敛至最优解。通常采用随机梯度下降法(SGD)或Adam等自适应学习率的方法来进行迭代更新操作。 ```python optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) for epoch in range(num_epochs): optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, targets) loss.backward() optimizer.step() print('Finished Training') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值