Keras-2.1.3+Theano-1.0.1运行SAM代码时conv2d报border_mode参数异常
解决方案
别担心,这个问题很常见,是Keras版本迭代带来的参数名变更导致的:
Keras 2.x版本(包括你用的2.1.3)已经将卷积操作的边界填充参数从旧版的border_mode更名为padding,而你运行的代码是针对Keras 1.x编写的,所以出现了参数不识别的错误。
只需要修改一行代码就能解决:
将K.conv2d调用中的border_mode='same'替换为padding='same',修改后的完整代码如下:
def get_initial_states(self, x): initial_state = K.sum(x, axis=1) initial_state = K.conv2d(initial_state, K.zeros((self.nb_filters_out, self.nb_filters_in, 1, 1)), padding='same') initial_states = [initial_state for _ in range(len(self.states))] return initial_states
额外适配提示
如果后续还遇到类似的参数不兼容问题,可以留意这些Keras 1.x到2.x的常见API变更:
- 维度顺序参数:
dim_ordering→data_format - 滤波器数量参数:
nb_filters→filters - 卷积核尺寸参数:
nb_rows/nb_cols→kernel_size(部分层)
这些变更都是为了让API更统一直观,你可以根据所用Keras版本的官方文档调整对应参数。
内容的提问来源于stack exchange,提问作者mageshwaran
相关产品推荐
相关产品推荐

