我試圖保存 keras 完整模型,但遇到了這個錯誤Traceback (most recent call last): File "d:/Workspace/College/Semester 8/Tugas Akhir/Keras-RFCN-master/Keras-RFCN-master/testing.py", line 133, in <module> main() File "d:/Workspace/College/Semester 8/Tugas Akhir/Keras-RFCN-master/Keras-RFCN-master/testing.py", line 96, in main model.save("D:/weight.h5") File "d:\Workspace\College\Semester 8\Tugas Akhir\Keras-RFCN-master\Keras-RFCN-master\KerasRFCN\Model\Model.py", line 560, in save self.model.save(save_path) File "C:\Users\kevin\anaconda3\envs\tf-gpu\lib\site-packages\keras\engine\network.py", line 1139, in save save_model(self, filepath, overwrite, include_optimizer) File "C:\Users\kevin\anaconda3\envs\tf-gpu\lib\site-packages\keras\engine\saving.py", line 415, in save_wrapper save_function(obj, filepath, overwrite, *args, **kwargs) File "C:\Users\kevin\anaconda3\envs\tf-gpu\lib\site-packages\keras\engine\saving.py", line 507, in save_model _serialize_model(model, h5dict, include_optimizer) File "C:\Users\kevin\anaconda3\envs\tf-gpu\lib\site-packages\keras\engine\saving.py", line 101, in _serialize_model model_config = json.dumps(model_config, default=get_json_type) File "C:\Users\kevin\anaconda3\envs\tf-gpu\lib\json\__init__.py", line 238, in dumps **kw).encode(obj) File "C:\Users\kevin\anaconda3\envs\tf-gpu\lib\json\encoder.py", line 199, in encode chunks = self.iterencode(o, _one_shot=True) File "C:\Users\kevin\anaconda3\envs\tf-gpu\lib\json\encoder.py", line 257, in iterencode return _iterencode(o, 0) File "C:\Users\kevin\anaconda3\envs\tf-gpu\lib\site-packages\keras\engine\saving.py", line 91, in get_json_type raise TypeError('Not JSON Serializable: %s' % (obj,))TypeError: Not JSON Serializable: <KerasRFCN.Config.Config object at 0x0000029B0A3BD248>通過該錯誤,很明顯 JSON 無法序列化我的類,該類返回一個名為 config 的對象。那么如何確保 Keras 可以序列化我的配置..??我認為在init中定義的所有定義都可以序列化。我真的是 python、Keras 和 TensorFlow 的新手。
1 回答

嗶嗶one
TA貢獻1854條經(jīng)驗 獲得超8個贊
如果您使用的是子類模型,那么在定義模型之后,您需要在一些數(shù)據(jù)上調(diào)用模型,例如model.predict(x)
這將創(chuàng)建權(quán)重并使模型能夠使用model.save
或'model.save_weights and
load_weights`保存
首先,一個從未使用過的子類模型是無法保存的。
這是因為需要在某些數(shù)據(jù)上調(diào)用子類模型才能創(chuàng)建其權(quán)重。
在調(diào)用模型之前,它不知道它應(yīng)該期望的輸入數(shù)據(jù)的形狀和 dtype,因此無法創(chuàng)建其權(quán)重變量。
有關(guān)該方法的更多詳細信息,請參見此處的示例
添加回答
舉報
0/150
提交
取消