cnn 一维时序数据_时间序列中Keras中的一维卷积神经网络介绍

介绍

许多文章专注于二维卷积神经网络。 它们特别用于图像识别问题。 一维CNN涵盖了一定范围,例如 用于自然语言处理(NLP)。 尽管我们可能会遇到其他机器学习问题,但很少有文章提供有关如何构造一维CNN的解释性演练。 本文试图弥补这一差距。

何时应用一维CNN?

CNN可以很好地识别数据中的简单模式,然后将其用于在更高层中形成更复杂的模式。 当我们希望从整体数据集的较短(定长)片段中获得有趣的特征,并且该特征在该片段中的位置不相关时,一维CNN会非常有效。

这非常适用于分析传感器数据(例如陀螺仪或加速度计数据)的时间序列。 它还适用于在固定长度的时间段内分析任何种类的信号数据(例如音频信号)。 另一个应用是NLP(尽管在这里LSTM网络更有希望,因为单词的接近性可能并不总是可训练模式的良好指示)。

1D CNN和2D CNN有什么区别?

无论是1D,2D还是3D,CNN都具有相同的特征并采用相同的方法。 关键区别在于输入数据的维度以及特征检测器(或过滤器)如何在数据上滑动:

问题陈述

在本文中,我们将重点介绍时间分段的加速度传感器数据,这些数据来自用户腰间携带的智能手机。 根据x,y和z轴的加速度计数据,一维CNN应该预测用户正在执行的活动类型(例如“走路”,“慢跑”或“站立”)。 对于各种活动,数据的每个时间间隔看起来都与此相似。

如何在Python中构建一维CNN?

有许多标准的CNN模型可用。 我选择了Keras网站上描述的模型之一,并对其进行了少许修改以适应上述问题。 下图提供了所构建模型的高级概述。 每层将进一步说明。

但首先让我们看一下Python代码,以构建此模型:

model_m = Sequential()

model_m.add(Reshape((TIME_PERIODS, num_sensors), input_shape=(input_shape,)))

model_m.add(Conv1D(100, 10, activation='relu', input_shape=(TIME_PERIODS, num_sensors)))

model_m.add(Conv1D(100, 10, activation='relu'))

model_m.add(MaxPooling1D(3))

model_m.add(Conv1D(160, 10, activation='relu'))

model_m.add(Conv1D(160, 10, activation='relu'))

model_m.add(GlobalAveragePooling1D())

model_m.add(Dropout(0.5))

model_m.a

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值