提问人:Sid R. 提问时间:11/14/2023 更新时间:11/14/2023 访问量:34
AttributeError:无法腌制本地对象。如何解决这个问题?
AttributeError: Can't pickle local object. How to fix this issue?
问:
我正在尝试保存 BERT 模型,但出现以下错误。我已经尝试使用model.save(),但这给了我另一个错误,所以我正在尝试寻找解决方法。
这是我用来保存模型的代码
tf.saved_model.save(bert_tf, 'my_model3')
loaded_model = tf.saved_model.load('my_model3')
with open('model_pickle.pkl', 'wb') as f:
pickle.dump(loaded_model, f)
这是错误消息:
AttributeError Traceback (most recent call last)
Cell In[89], line 6
3 loaded_model = tf.saved_model.load('my_model3')
5 with open('model_pickle.pkl', 'wb') as f:
----> 6 pickle.dump(loaded_model, f)
AttributeError: Can't pickle local object 'Loader._recreate_base_user_object.<locals>._UserObject'
作为参考,这是我正在使用的源笔记本(除了添加开头和上面的代码外,我没有更改任何内容): https://www.kaggle.com/code/amirhoseinsedaghati/sentiment-analysis-on-reviews-mchcnn-bert-textblobfrom tensorflow import keras
谁能给我一些支持?
答:
0赞
Antonio Bejar
11/14/2023
#1
如果我没记错的话,由于兼容性问题,TensorFlow 模型不能直接使用“pickle”进行酸洗。
您应该使用 TensorFlow 的内置方法来保存和加载模型,而不是使用 pickle。
尝试:
保存模型:
tf.saved_model.save(bert_tf, 'my_model3')
加载模型:
loaded_model = tf.saved_model.load('my_model3')
评论
0赞
Sid R.
11/14/2023
我想保存模型并将其加载到 Kaggle 上的另一个笔记本中。这种方法仍然有效吗?
0赞
Antonio Bejar
11/14/2023
它应该可以工作,如果它不适合您,您可以尝试像“bert_tf.save('my_model3', save_format='tf')”一样保存您的模型,然后像“loaded_model = tf.keras.models.load_model('my_model3')”一样加载。我希望它能解决你的问题。
评论