python深度学习--一维cnn处理序列

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import pylab
from pandas import DataFrame, Series
from keras import models, layers, optimizers, losses, metrics
from keras.models import Sequential
from keras.utils.np_utils import to_categorical

#一维卷积神经网络[通常与空洞卷积核(dilated kernel)一起使用]已经在音 频生成和机器翻译领域取得了巨大成功。另外,对于文本分类和时间序列预测等简单任务,小型的一维卷积神经网络可以替代RNN,而且速度更快

#序列的一维卷积:可以识别序列中的局部模式。因为对每个序列段执行相同的输入变换,所以在句子中某个位置学到的模式稍后可以在其他位置被识别,这使得一维卷积神经网络具有平移不变性(对于时间平移而言)
#一维卷积神经网络的工作原理:每个输出时间步都是利用输入序列在时间维度上的一小段得到的

#序列的一维池化:从输入中提取一维序列段(即子序列),然后输出其最大值(最大池化)或平均值(平均池化)。与二维卷积神经网络一样,该运算也是 用于降低一维输入的长度(子采样)

#实现一维卷积神经网络
#Keras 中的一维卷积神经网络是 Conv1D 层,其接口类似于 Conv2D
from keras.datasets import imdb
from keras.preprocessing import sequence
fname='F:/jena_climate_2009_2016.csv'#jena天气数据集(2009—2016 年的数据,每 10 分钟记录 14 个不同的量)
#对于.csv数据格式等用pandas操作更加方便
df=pd.read_csv(fname,)

#数据类型不同,所以需要标准化
#预处理数据的方法是,将每个时间序列减去其平均值,然后除以其标准差
df=df.drop(['Date Time'],axis=1)
float_data=df.ix[:,:]
# print(train_data)
mean=float_data.mean(axis=0)
# print(mean)
float_data-=mean
std=float_data.std(axis=0)
float_data /=std
# print(float_data)

#生成时间序列样本及其目标的生成器
def generator(data,lookback,delay,min_index,max_index,shuffle=False,batch_size=128,step=6):
    if max_index is None:
        max_index=len(data)-delay-1
        #[0--min_index--lookback--max_index--delay--len(data)]
        #                       i
    i=min_index+lookback
    while 1:
        if shuffle:
            rows=np.random.randint(min_index+lookback,max_index,size=batch_size)
        else:
            if i+batch_size>=max_index:#表明取到最后一批(数量

 IMDB数据集使用一维cnn

 python深度学习--一维cnn处理序列_第1张图片

jena温度预测数据集使用一维cnn

python深度学习--一维cnn处理序列_第2张图片
'''
    1.二维卷积神经网络在二维空间中处理视觉模式时表现很好,与此相同,一维卷积神经网络在处理时间模式时表现也很好。对于某些问题,特别是自然语言处理任务,它可以替代RNN,并且速度更快。
    2.通常情况下,一维卷积神经网络的架构与计算机视觉领域的二维卷积神经网络很相似,它将 Conv1D 层和 MaxPooling1D 层堆叠在一起,最后是一个全局池化运算或展平操作。
    3.因为RNN在处理非常长的序列时计算代价很大,但一维卷积神经网络的计算代价很小, 所以在RNN之前使用一维卷积神经网络作为预处理步骤是一个好主意,这样可以使序列变短,并提取出有用的表示交给RNN来处理
'''
'''
你可以用RNN进行时间序列回归(“预测未来”)、时间序列分类、时间序列异常检测和序列标记(比如找出句子中的人名或日期)。
同样,你可以将一维卷积神经网络用于机器翻译(序列到序列的卷积模型,比如 SliceNet)、文档分类和拼写校正。
'''

 

 

 

你可能感兴趣的:(DeepLearning)