Keras中使用channels_first的Conv1D报错问题求助
问题解析与解决方案
你遇到的这个错误,核心原因是Keras早期版本的Conv1D层并不支持data_format这个参数——这个参数是为Conv2D/Conv3D这类处理多维数据的卷积层设计的,Conv1D会自动根据你传入的输入形状来推断通道维度的位置,不需要手动指定。
错误原因拆解
你在调用Conv1D时显式传入了data_format='channels_first',但你使用的旧版Keras(对应Python3.6环境的版本)中,Conv1D的初始化方法根本没有这个参数,这就导致了"got multiple values for keyword argument"的参数冲突错误。
修正后的代码
只需要移除Conv1D中的data_format参数,同时保持输入形状为(1, 100)(对应channels_first的格式)即可正常运行:
n_class = 10 input_shape = (1, 100) # channels_first格式:(通道数, 时间步长) inp = Input(shape=input_shape) x = Conv1D(4, kernel_size=9, activation=activations.relu, padding='same')(inp) x = MaxPool1D(pool_size=5)(x) x = Flatten()(x) out = Dense(n_class, activation='softmax')(x) model = Model(inputs=inp, outputs=out)
补充说明
对于Conv1D来说:
- 当使用
channels_last时,输入形状是(steps, channels)(比如你最初的(100, 1)) - 当使用
channels_first时,输入形状是(channels, steps)(即你设置的(1, 100))
Conv1D会自动识别输入形状中的通道位置,不需要额外指定data_format参数,这也是和Conv2D最大的区别之一。
内容的提问来源于stack exchange,提问作者dave
相关产品推荐
相关产品推荐

