You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter可加载但Python脚本加载Keras模型遇OSError求助

问题原因与解决方案

错误原因

在Windows系统下,Python字符串中的反斜杠\是转义字符。你定义的路径.\saved_models\model_test.keras中,\s会被Python解析为转义序列,导致实际生成的路径与预期不符,最终load_model无法定位到正确的模型文件。

而Jupyter环境对路径的转义处理更宽松,所以能正常加载,但Python脚本严格遵循字符串转义规则,因此触发错误。

解决方法

有三种可靠的修正方式,任选其一即可:

1. 使用正斜杠替换反斜杠

正斜杠/在Python和Windows系统中均能被正确识别,无需转义:

rel_path_model = "./saved_models/model_test.keras"

2. 使用原始字符串

在路径字符串前添加r,声明为原始字符串,此时反斜杠不会被当作转义字符:

rel_path_model = r".\saved_models\model_test.keras"

3. 使用双反斜杠

用双反斜杠\\表示单个反斜杠,避免转义解析:

rel_path_model = ".\\saved_models\\model_test.keras"

验证修改后的测试代码

将测试代码中的路径替换为上述任意一种,即可正常保存和加载模型:

import tensorflow as tf
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import save_model, load_model

model = Sequential()
model.add(Dense(64, input_dim=10, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

data = np.random.random((1000, 10))
labels = np.random.randint(2, size=(1000, 1))

model.fit(data, labels, epochs=10, batch_size=32)

# 使用原始字符串示例
rel_path_model = r".\saved_models\model_test.keras"
save_model(model, rel_path_model)
loaded_model = load_model(rel_path_model)  # 现在脚本中可正常加载

内容的提问来源于stack exchange,提问作者paulinho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:10:01