执行TensorFlow代码时出现NameError:compile_and_fit未定义
解决NameError: name 'compile_and_fit' is not defined问题
这个报错其实很好理解——compile_and_fit并不是TensorFlow的内置函数,它是TensorFlow官方Colab示例文档里自定义的辅助函数,用来封装模型编译、训练的重复逻辑。你直接复制了调用这个函数的代码,但没把前面定义它的部分一起抄过来,所以Python找不到这个函数。
解决方案:手动定义compile_and_fit函数
你只需要在调用它的代码之前,先添加这个函数的定义就行。官方Colab示例里的compile_and_fit通常长这样(和你用到的时间序列窗口逻辑完全匹配):
import tensorflow as tf def compile_and_fit(model, window, patience=2): # 定义早停回调,防止过拟合 early_stopping = tf.keras.callbacks.EarlyStopping( monitor='val_loss', patience=patience, mode='min' ) # 编译模型 model.compile( loss=tf.losses.MeanSquaredError(), optimizer=tf.optimizers.Adam(), metrics=[tf.metrics.MeanAbsoluteError()] ) # 训练模型并返回训练历史 history = model.fit( window.train, epochs=100, validation_data=window.val, callbacks=[early_stopping] ) return history
注意事项
- 确保先导入
tensorflow(上面代码里的import tensorflow as tf),不然函数里的tf.xxx会报错。 - 如果原Colab示例里的
compile_and_fit有不同的参数(比如调整了patience值、换了损失函数/优化器),你要对应修改这个自定义函数,尽量和原示例保持一致,这样后续的模型评估结果才会和文档里的预期匹配。
把这段定义代码放在你调用compile_and_fit(lstm_model, wide_window)的代码之前,再运行就不会报错啦。
内容的提问来源于stack exchange,提问作者ML Learner
相关产品推荐
相关产品推荐

