我已经在 Python 上训练了一个机器学习模型3.5,现在我切换到使用 Python 的 Google Colab,3.6当我尝试加载我在 Python 上训练的模型时3.5,它给出了这个错误:
SystemError: unknown opcode.
google了一下,发现这个错误是因为环境变化造成的,然后我交叉检查了我的python版本,两个python版本都不一样。如何在 Python 上加载我的模型3.6?
我已经在 Python 上训练了一个机器学习模型3.5,现在我切换到使用 Python 的 Google Colab,3.6当我尝试加载我在 Python 上训练的模型时3.5,它给出了这个错误:
SystemError: unknown opcode.
google了一下,发现这个错误是因为环境变化造成的,然后我交叉检查了我的python版本,两个python版本都不一样。如何在 Python 上加载我的模型3.6?
你不应该。
即使您让它在没有错误/警告的情况下运行,引擎盖下也可能会发生细微的变化,从而改变模型的行为/性能。
您应该在 Python 3.6 上重新训练模型,或者为您的模型创建一个运行 Python 3.5 的虚拟环境,以确保它按预期执行。还要始终确保实际的库(例如 keras ...)具有相同的版本。
我遇到了和你一样的问题。我在 python 3.5 上的 GCP 上训练了我的模型,并将其移至 colab 以继续评估,即 python 3.6。
我所做的是从代码中重新实例化确切的模型,然后调用 load_weights:
model = create_my_model()
model.load_weights('my_model_trained_with_py_35.h5')
model.save('my_model_py36.h5')
就我而言,除了 Lambda 之外,我没有很多自定义代码:
def abs_diff(x):
return tf.abs(x[0] - x[1])
由于您的模型可能会更加复杂,因此这可能有效也可能无效,但值得一试,尤其是。如果重新培训太贵。像往常一样,用相同的数据评估模型并确保没有什么奇怪的。