Jupyter运行LSTM模型时build_model函数return报语法错误
问题根因
报错由两处代码书写错误共同导致:
- 缩进错误:Python通过缩进判定代码块归属,
return grid_model未做缩进,不属于build_model函数内部语句 - 换行缺失:return语句和函数外的
KerasRegressor初始化代码被误写在同一行,解释器会将grid_model = KerasRegressor(...)整体识别为return的返回值内容,解析到=时触发非法语法错误,报错箭头指向的位置正好对应这个问题点。
修复方案
将return语句缩进至与函数内其他代码同级,同时把粘连的KerasRegressor初始化代码拆分到单独一行,放在函数定义外部。
修正后的代码如下:
def build_model(optimizer): grid_model = Sequential() grid_model.add(LSTM(50,return_sequences=True,input_shape=(30,5))) grid_model.add(LSTM(50)) grid_model.add(Dropout(0.2)) grid_model.add(Dense(1)) grid_model.compile(loss = 'mse',optimizer = optimizer) # 调整缩进,对齐函数内代码 return grid_model # 拆分到单独一行,放在函数外部 grid_model = KerasRegressor(build_fn=build_model,verbose=1,validation_data=(testX,testY))
注意事项
- Python为缩进敏感语言,函数、循环、条件判断等代码块的内部语句需保持统一缩进,避免混用空格与Tab
- 复制粘贴代码后注意检查行首尾是否有粘连的其他代码,这类低级语法错误排查成本很高。
内容的提问来源于stack exchange,提问作者PiCubed
相关产品推荐
相关产品推荐

