【问题标题】:"TypeError: can't pickle weakref objects" when pickling a deep learning model腌制深度学习模型时出现“TypeError:无法腌制弱引用对象”
【发布时间】:2021-02-16 07:17:45
【问题描述】:

当我跑步时

pickle.dump(model,open('modelDL.pkl','wb'))

我明白了

TypeError: can't pickle weakref objects

我创建了一个深度学习模型,我正在尝试保存它。型号:

model = Sequential()

model.add( Dense(30,activation='relu') )
model.add( Dropout(0.5) ) 
model.add( Dense(20,activation='relu') )
model.add( Dropout(0.5) ) 
model.add( Dense(20,activation='relu') )
model.add( Dropout(0.5) )     
model.add( Dense(1,activation='sigmoid') )

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy']) 

【问题讨论】:

  • 你有什么理由不想使用 tensorflow 的内置模型保存功能? tensorflow.org/api_docs/python/tf/keras/Model#save
  • 谢谢巴斯卡!我可以使用 tensorflow 保存和加载模型。但我不知道为什么我不能使用 pickle 来做到这一点,因为我曾经使用 pickle.dump 方法保存机器学习模型。如果你能回答错误是什么意思,那就太好了。
  • 也许这个解决方案可以帮助stackoverflow.com/a/42763323/8196143
  • 目前tensorflow支持模型可以保存为两种不同的文件格式(SavedModelHDF5)。 TensorFlow SavedModel 格式是TF2.x 中的默认文件格式。但是,模型可以以HDF5 格式保存。在TF1.x 中默认为HDF5。谢谢!

标签: python-3.x deep-learning classification tensorflow2.0 tf.keras


【解决方案1】:

不能pickleweakref来是因为深度学习模型太大,pickle只用于存储小模型

使用这个:HDF5 用于存储大数据

from keras.models import load_model

model.save('my_model.h5')  # creates a HDF5 file 'my_model.h5'

返回一个编译好的模型

与上一个相同

model1 = load_model('my_model.h5')

y_pred = model1.predict(x_test)

【讨论】:

    猜你喜欢
    • 2019-05-11
    • 1970-01-01
    • 2017-10-23
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多