具有单变量输入的CNN-LSTM编解码器模型

本文介绍了如何在一个编解码器结构中结合使用卷积神经网络(CNN)和长短期记忆网络(LSTM),形成CNN-LSTM模型。此模型适用于具有单变量输入的序列数据。CNN作为编码器捕捉序列的特征,而LSTM作为解码器进行解码。示例中,输入序列是14天的日总功耗数据。CNN部分包含两个卷积层和一个最大池化层,LSTM解码器保持不变。整个模型用于预测序列数据。
摘要由CSDN通过智能技术生成

        卷积神经网络(CNN)可以作为编解码器结构中的编码器。CNN不直接支持序列输入;相反,一维CNN能够读取序列输入并自动学习显著特征。然后可以按照正常情况由LSTM解码器解释这些。我们将使用CNN和LSTM的混合模型称为cn -LSTM模型,在本例中,我们将在一个编解码器体系结构中同时使用它们。CNN希望输入的数据具有与LSTM模型相同的3D结构,尽管多个特性被读取为不同的通道,最终具有相同的效果。我们将简化这个示例,并将重点放在具有单变量输入的cn - lstm上,但是它也可以很容易地更新为使用多元输入,这只是一个练习。与之前一样,我们将使用由14天的日总功耗组成的输入序列。我们将为编码器定义一个简单但有效的CNN架构,它由两个卷积层和一个最大池化层组成,然后将结果扁平化。第一个卷积层读取输入序列并将结果投影到特征图上。第二层对第一层创建的特征图执行相同的操作,试图放大任何显著的特征。我们将在每个卷积层使用64个feature map,读取内核大小为3个时间步长的输入序列。最大池层通过保留最大信号值的1/4来简化特征映射。在池化层之后提取的特征映射被压扁成一个长向量,然后可以用作解码过程的输入。

model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(n_timesteps,n_features)))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())

解码器与前面几节定义的解码器相同。唯一的其他变化是将训练时间设置为20个。带有这些更改的build_model()函数如下所示。

# train the model
def build_model(train, n_input):
	# prepare data
	train_x, train_y = to_supervised(train, n_input)
	# define parameters
	verbose, epochs, batch_size = 0, 20, 16
	n_timesteps, n_features, n_outputs = train_x.shape[1], train_x.shape[2], train_y.shape[1]
	# reshape output into [samples, timesteps, features]
	train_y = train_y.reshape((train_y.shape[0], train_y.shape[1], 1))
	# define model
	model = Sequential()
	model.add(Conv1D(filte
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值