CNN-BiLSTM-Attention模型是一种在自然语言处理(NLP)任务中常用的强大架构,如文本分类、情感分析等。它结合了卷积神经网络(CNN)、双向长短期记忆网络(BiLSTM)和注意力机制的优势,能够捕捉局部特征和序列数据中的长程依赖关系。

CNN

CNN 主要由卷积层和池化层构成,其中卷积层利用卷积核进行电力负荷数据的有效非线性局部特征提取,池化层用于压缩提取的特征并生成更重要的特征信息,提高泛化能力。卷积神经网络作为一种深度学习模型,广泛应用于图像识别、目标检测、图像分割和自然语言处理等领域。CNN的设计灵感来源于生物视觉系统,通过模拟人类视觉处理的方式来实现对图像等数据的高效识别和处理。CNN的核心是卷积层,它通过卷积操作自动提取输入数据的空间层次特征,并通过池化层降低特征的空间尺寸,同时保留最重要的特征信息。在经过多层卷积和池化层之后,通常会有全连接层来产生最终的输出结果,如图像分类的类别标签 。CNN的工作原理主要包括以下几个关键步骤:
在这里插入图片描述
局部感受野:每个神经元只响应图像的一个小区域,这与人类视觉系统的工作原理相似 。卷积操作:通过滑动窗口(卷积核)在输入图像上进行逐元素相乘然后求和的操作,以此提取图像的局部特征 。激活函数:如ReLU,用于引入非线性,帮助网络学习更复杂的特征 。池化层:通过最大池化或平均池化减少特征图的空间尺寸,降低计算量并提取重要特征 。全连接层:在网络的末端,将提取的特征映射转化为最终输出,如分类结果 。CNN的训练通常采用监督学习的方法,通过调整网络中的权重和偏置来最小化预测输出和真实标签之间的差异。在训练过程中,网络学习从简单到复杂的分层特征,低层可能学习到边缘等基础特征,而高层可能学习到更复杂的形状或纹理特征

NO.2|双向LSTM(BiLSTM)群智能算法小狂人

LSTM是一种特殊的递归神经网络(RNN),擅长捕捉时间序列中的长期依赖关系,通过引入遗忘门、输入门和输出门三种门的逻辑控制单元保持和更新细胞状态,加强了长期记忆能力,可以很好地解决RNN梯度消失与梯度爆炸的问题。LSTM 通过学习时序数据的长时间相关性,使网络可以更好、更快地收敛,有助于提高预测精度。
在这里插入图片描述
在这里插入图片描述
NO.4|CNN-BiLSTM-Attention群智能算法小狂人%% 建立模型#%% Build the

%% 建立模型#%% Build the modelfrom tensorflow.keras.layers import Input, Conv2D, ReLU, GlobalAveragePooling2D, Dense, Multiply, Reshape, Bidirectional, LSTMfrom tensorflow.keras.models import Modelfrom tensorflow.keras.optimizers import Adam
input_layer = Input(shape=(f_, 1, 1), name='sequence')
# Conv Layer 1x = Conv2D(filters=32, kernel_size=(1, 1), name='conv_1')(input_layer)x1 = x  # For SE blockx = ReLU(name='relu_1')(x)
# Conv Layer 2x = Conv2D(filters=64, kernel_size=(1, 1), name='conv_2')(x)x = ReLU(name='relu_2')(x)x2 = x  # For multiplication
# SE Attention Mechanismse = GlobalAveragePooling2D(name='gapool')(x1)se = Dense(16, activation='relu', name='fc_2')(se)se = Dense(64, activation='sigmoid', name='fc_3')(se)se = Reshape((1, 1, 64))(se)
# Multiply attention weightsx = Multiply(name='multiplication')([x2, se])
# BiLSTM and output layersx = Reshape((f_, 64))(x)  # Reshape for LSTMx = Bidirectional(LSTM(6, return_sequences=False), name='bilstm')(x)output = Dense(1, name='fc')(x)
model = Model(inputs=input_layer, outputs=output)
#%% Compile the modelmodel.compile(optimizer=Adam(learning_rate=1e-2),              loss='mean_squared_error')
#%% Train the modelhistory = model.fit(p_train, t_train,                    epochs=100,                    batch_size=32,                    shuffle=True,                    verbose=1)
----------------------- Error Metrics --------------------------Evaluation Results:Mean Absolute Error (MAE): 1.8489978987170805Mean 
Squared Error (MSE): 5.891611959966271
Root Mean Square Error (RMSE): 2.4272642954499766
R^2: 0.9020706144428995
Residual Predictive Deviation (RPD): 3.339283608704873Mean Absolute Percentage Error (MAPE): 5.175561686899579
Total execution time: 42.57008957862854 seconds

在这里插入图片描述
在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐