基于keras的1DCNN时间序列分析

上传人:lil****ar 文档编号:333429183 上传时间:2022-09-02 格式:PDF 页数:11 大小:551.69KB
返回 下载 相关 举报
基于keras的1DCNN时间序列分析_第1页
第1页 / 共11页
基于keras的1DCNN时间序列分析_第2页
第2页 / 共11页
基于keras的1DCNN时间序列分析_第3页
第3页 / 共11页
基于keras的1DCNN时间序列分析_第4页
第4页 / 共11页
基于keras的1DCNN时间序列分析_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于keras的1DCNN时间序列分析》由会员分享,可在线阅读,更多相关《基于keras的1DCNN时间序列分析(11页珍藏版)》请在金锄头文库上搜索。

1、基于keras的1DCNN时间序列分析介绍许多章关注维卷积神经络。它们特别于图像识别问题。1D CNN在定程度上被涵盖,例如于然语处理(NLP)。很少有章解释如何构建个1D CNN。本试图弥补这差距。什么时候应1D CNN?CNN可以很好地识别数据中的简单模式,然后使这些模式在更的层中形成更复杂的模式。当您希望从整体数据集的较短(固定长度)段中获得有趣的特征,且特征在段中的位置相关性不时,1D CNN常有效。这适于传感器数据(如陀螺仪或加速度计数据)的时间序列分析。它还适于分析固定长度周期内的任何类型的信号数据(如频信号)。另个应程序是NLP(尽管在这LSTM络更有前途,因为单词的接近程度可能

2、并不总是个可训练模式的良好指器)1D CNN和2D CNN有什么区别?论是1D、2D还是3D, CNN都有相同的特点,采相同的法。关键的区别是输数据的维度以及特征检测器(或过滤器)如何在数据中滑动:问题陈述如何在Python中构造个维CNN ?有许多标准的CNN模型可供选择。我选择了上描述的个模型,并对其进了稍微修改,以适应上描述的问题。下的图提供了构建模型的级概览。将进步解释每层。让我们先看下Python代码,以便构建这个模型:model_m = Sequential()model_m.add(Reshape(TIME_PERIODS, num_sensors), input_shape=(

3、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.

4、add(Dropout(0.5)model_m.add(Dense(num_classes, activation=softmax)print(model_m.summary()运这段代码将得到以下深度神经络:_Layer (type) Output Shape Param # =reshape_45 (Reshape) (None, 80, 3) 0 _conv1d_145 (Conv1D) (None, 71, 100) 3100 _conv1d_146 (Conv1D) (None, 62, 100) 100100 _max_pooling1d_39 (MaxPooling (None,

5、 20, 100) 0 _conv1d_147 (Conv1D) (None, 11, 160) 160160 _conv1d_148 (Conv1D) (None, 2, 160) 256160 _global_average_pooling1d_29 (None, 160) 0 _dropout_29 (Dropout) (None, 160) 0 _dense_29 (Dense) (None, 6) 966 =Total params: 520,486Trainable params: 520,486Non-trainable params: 0_None让我们深每层,看看发了什么:输

6、数据: 数据经过预处理,每个数据记录包含80个时间(数据以20赫兹采样率记录,因此每个时间间隔包含加速度计读取的4秒数据)。在每个时间间隔内,存储x轴、y轴和z轴的三个加速度计值。这就得到了个80 x3矩阵。由于我通常在iOS中使神经络,所以数据必须作为长度为240的平向量传递到神经络中。络的第层必须将其重塑为原来的形状,即80 x 3。第1D CNN层: 个度为10(也称为内核)的过滤器(或也称为特征检测器)。只定义个过滤器将允许神经络学习第层中的个单特征。这可能还不够,因此我们将定义100个过滤器。这允许我们在络的第层训练100个不同的特征。第个神经络层的输出是个71 x 100的神经元矩

7、阵。输出矩阵的每列包含个过滤器的权重。根据定义的内核和考虑输矩阵的长度,每个过滤器将包含71个权重。第个维CNN层:第个CNN的结果将被输第个CNN层。我们将再次定义100个不同的过滤器在这个级别上进训练。按照与第层相同的逻辑,输出矩阵的将为62 x 100。最池化层: 为了降低输出的复杂性,防数据过拟合,在CNN层之后,通常使pooling层。在我们的例中,我们选择的为3。这意味着该层的输出矩阵的只有输矩阵的三分之。第三和第四个维CNN层: 下是维CNN层的另个序列,以便学习更层次的特征。这两层之后的输出矩阵是个2x160矩阵。平均池化层: 多个池化层,进步避免过拟合。这次不是取最值,是取神

8、经络中两个权值的平均值。输出矩阵的为1 x160个神经元。每个特征检测器在这层的神经络中只剩下个权值。Dropout层: Dropout层将随机分配权值0给络中的神经元。因为我们选择了0.5的概率,50%的神经元将获得0权值。通过这种操作,络对数据中较的变化不那么敏感。因此,它应该进步提我们对不可见数据的准确性。这层的输出仍然是1160个神经元矩阵。使Softmax激活的全连接层: 最后层将度160的向量减少到6,因为我们要预测6个类(“慢跑”、“坐下”、“”、“站”、“上楼”、“下楼”)。这由个矩阵乘法完成。使Softmax作为激活函数。它使神经络的所有6个输出加起来等于1。因此,输出值将表

9、这六个类中的每个类的概率。神经络的训练与测试下是训练模型的Python代码,批处理为400,训练和验证拆分为80到20。callbacks_list = keras.callbacks.ModelCheckpoint( filepath=best_model.epoch:02d-val_loss:.2f.h5, monitor=val_loss, save_best_only=True), keras.callbacks.EarlyStopping(monitor=acc, patience=1)model_pile(loss=categorical_crossentropy, optimiz

10、er=adam, metrics=accuracy)BATCH_SIZE = 400EPOCHS = 50history = model_m.fit(x_train, y_train, batch_size=BATCH_SIZE, epochs=EPOCHS, callbacks=callbacks_list, validation_split=0.2, verbose=1)该模型对训练数据的精度达到97%。.Epoch 9/5016694/16694 = - 16s 973us/step - loss: 0.0975 - acc: 0.9683 - val_loss: 0.7468 - va

11、l_acc: 0.8031Epoch 10/5016694/16694 = - 17s 989us/step - loss: 0.0917 - acc: 0.9715 - val_loss: 0.7215 - val_acc: 0.8064Epoch 11/5016694/16694 = - 17s 1ms/step - loss: 0.0877 - acc: 0.9716 - val_loss: 0.7233 - val_acc: 0.8040Epoch 12/5016694/16694 = - 17s 1ms/step - loss: 0.0659 - acc: 0.9802 - val_

12、loss: 0.7064 - val_acc: 0.8347Epoch 13/5016694/16694 = - 17s 1ms/step - loss: 0.0626 - acc: 0.9799 - val_loss: 0.7219 - val_acc: 0.8107根据测试数据运它,准确率为92%Accuracy on test data: 0.92Loss on test data: 0.39考虑到我们使的是标准1D CNN模型之。我们的模型在精确度、召回率和f1评分上也得分很,,这是个不错的数字 precision recall f1-score support0 0.76 0.78

13、0.77 6501 0.98 0.96 0.97 19902 0.91 0.94 0.92 4523 0.99 0.84 0.91 3704 0.82 0.77 0.79 7255 0.93 0.98 0.95 2397avg / total 0.92 0.92 0.92 6584以下是对这些分数含义的简要回顾:准确度: 正确预测结果与所有预测结果之和之间的率。精确度: 当模型预测为正例时,所有正确的预测除以所有正例。(TP/ (TP + FP)Recall: 在所有可能的正例中,模型确定了多少正例呢?真正的正例除以所有实际的正例。F1-score: 精确度和召回率的加权平均值。与测试数据相关

14、联的混淆矩阵如下所。总结(TP + TN)/(TP + TN + FP + FN)(TP/(TP + FN)(2xrecallxprecision/(recall + precision)在本中,您已经看到了个例,如何使1D CNN训练络,以便基于智能机的组给定加速度计数据预测户为。完整的Python代码可以在上找到。# Compatibility layer between Python 2 and Python 3from _future_ import print_functionfrom matplotlib import pyplot as pltimport numpy as np

15、import pandas as pdimport seaborn as snsfrom scipy import statsfrom sklearn import metricsfrom sklearn.metrics import classification_reportfrom sklearn import preprocessingimport kerasfrom keras.models import Sequentialfrom keras.layers import Dense, Dropout, Flatten, Reshape, GlobalAveragePooling1D

16、from keras.layers import Conv2D, MaxPooling2D, Conv1D, MaxPooling1Dfrom keras.utils import np_utils# %def feature_normalize(dataset): mu = np.mean(dataset, axis=0) sigma = np.std(dataset, axis=0) return (dataset - mu)/sigmadef show_confusion_matrix(validations, predictions): matrix = metrics.confusion_matrix(validations, predictions) plt.figure(figsize=(6, 4) sns.heatmap(matrix, cmap=coolwarm, linecolor=white, linewidths=1, xticklabels=LABELS, yticklabels=LABELS, annot=True, fmt=d) plt.title(Con

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号