为了账号安全,请及时绑定邮箱和手机立即绑定

具有Maxpooling1D和channel_first的Keras模型

具有Maxpooling1D和channel_first的Keras模型

鸿蒙传说 2021-05-30 14:48:22
我目前尝试为Keras中的时间序列分类建立顺序模型时遇到问题。我想使用channels_first数据,因为从perprocessing的角度来看它更方便(不过,我只使用一个通道)。Convolution1D正如我可以指定的那样data_sample='channels_first',这对于我正在使用的图层来说效果很好,但是某种程度上Maxpooling1D,这对它是行不通的,它似乎没有此选项。我要构建的模型结构如下:model = Sequential()model.add(Convolution1D(filters=16, kernel_size=35, activation='relu', input_shape=(1, window_length), data_format='channels_first'))model.add(MaxPooling1D(pool_size=5)model.add(Convolution1D(filters=16, kernel_size=10, activation='relu', data_format='channels_first'))[...] #several other layers here在window_length = 5000添加了所有三个层之后,我得到以下摘要:_________________________________________________________________Layer (type)                 Output Shape              Param #  =================================================================conv1d_1 (Conv1D)           (None, 32, 4966)          1152     _________________________________________________________________max_pooling1d_1 (MaxPooling1 (None, 4, 4966)           0        _________________________________________________________________conv1d_2 (Conv1D)           (None, 16, 4957)          656      =================================================================Total params: 1,808Trainable params: 1,808Non-trainable params: 0现在,我想知道这是否正确,因为我希望池化层减少第三维(即特征图中的神经元数量)而不是第二维(即过滤器的数量)?正如我所见,MaxPooling1D它无法识别channels_first排序,虽然Keras 文档说存在一个关键字data_formatfor MaxPooling2D,但没有这样的关键字 for MaxPooling1D。我用一种channels_last数据格式测试了整个设置,它按我的预期工作。但是由于从channels_first到的转换channels_last对我来说需要相当长的时间,所以我真的宁愿将这项工作与channels_first. 而且我有一种感觉,我只是想念一些东西。如果您需要更多信息,请告诉我。
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

一种替代方法是使用该Permute层(并删除channels_first第二个 conv 层的 ):


model = Sequential()

model.add(Convolution1D(filters=16, kernel_size=35, activation='relu', input_shape=(1, 100), data_format='channels_first'))

model.add(Permute((2, 1)))

model.add(MaxPooling1D(pool_size=5))

model.add(Convolution1D(filters=16, kernel_size=10, activation='relu'))


model.summary()

型号概要:


Layer (type)                 Output Shape              Param #   

=================================================================

conv1d_7 (Conv1D)            (None, 16, 66)            576       

_________________________________________________________________

permute_1 (Permute)          (None, 66, 16)            0         

_________________________________________________________________

max_pooling1d_2 (MaxPooling1 (None, 13, 16)            0         

_________________________________________________________________

conv1d_8 (Conv1D)            (None, 4, 16)              2096      

=================================================================

Total params: 2,672

Trainable params: 2,672

Non-trainable params: 0

_________________________________________________________________


查看完整回答
反对 回复 2021-06-01
  • 1 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号