近期仍然在使用keras进行模型的设计和算法的实验,在使用过程中,发现Conv1D可以处理可变长度的序列输入,在使用Conv1D的过程中,和使用其他卷积层稍有不同,这里不仅在1维空间中用kernel来进行平面卷积,而且使用的一个概念很好,那就是基于序列的处理方法,也就是有一批要学习的数据,这一批中的数据,每一个样本都是一个序列,也就是(sequence_size,fea_size),同时,keras提供了对可变长度的数据进行处理。
1维卷积层的输入:input_shape用来制定当前每一个样本的序列长度以及特征维度,即(sequence_size, fea_size),与此同时,输入数据x_train也应该这个维度,只是还要多一维度,那就是有多少样本量。
同样要注意卷积的结果输出,到下一层的输入维度要匹配,同样的,其中有一点区别,那就是当不使用Flatten层来构建网络结构时,一定要时刻计算清楚每层的链接权重,keras中提供了查看网络结构的方法,当构建比较复杂的,无法搞清楚层与层之间的输入输出维度时,可以可视化网络结构图。
from keras.models import Sequential from keras.layers import Dense, Dropout from keras.layers