python 数据结构转换层_python – 具有Maxpooling1D和channel_first的Keras模型

我目前尝试在Keras中为时间序列分类构建顺序模型时遇到问题.我想使用channels_first数据,因为从处理的角度来看它更方便(不过我只使用一个通道).这适用于我正在使用的Convolution1D图层,因为我可以指定data_sample =’channels_first’,但不知何故这对Maxpooling1D不起作用,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,808

Trainable params: 1,808

Non-trainable params: 0

现在,我想知道这是否正确,因为我期望第三维(即特征图中的神经元数)而不是第二维(即过滤器的数量)被汇集层减少?正如我所看到的,MaxPooling1D无法识别channels_first排序,而Keras documentation表示MaxPooling2D存在关键字data_format,MaxPooling1D没有这样的关键字.

我使用channels_last数据格式测试了整个设置,它按预期工作.但是因为从channels_first转换为channels_last需要花费相当长的时间,所以我真的宁愿使用channels_first.我觉得我只是遗漏了一些东西.

如果您需要更多信息,请与我们联系.


版权声明:本文为weixin_42187923原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。