Python 获得;TypeError:无法pickle'_thread.RLock';“对象”;使用pickle保存模型时
我试图将我的keras模型保存到pickle文件中,但我遇到了这个错误。有什么办法?或者,保存和加载模型的更好方法是什么?我正在预测480x640灰度图像 我的代码如下:Python 获得;TypeError:无法pickle'_thread.RLock';“对象”;使用pickle保存模型时,python,keras,model,pickle,Python,Keras,Model,Pickle,我试图将我的keras模型保存到pickle文件中,但我遇到了这个错误。有什么办法?或者,保存和加载模型的更好方法是什么?我正在预测480x640灰度图像 我的代码如下: def trainModel(data): batch_size = 3 img_height = 480 img_width = 640 trainDataset = tf.keras.preprocessing.image_dataset_from_directory( data, val
def trainModel(data):
batch_size = 3
img_height = 480
img_width = 640
trainDataset = tf.keras.preprocessing.image_dataset_from_directory(
data,
validation_split=0.25,
subset="training",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size,
#class_names={"nao_doentes", "doentes"}
)
valDataset = tf.keras.preprocessing.image_dataset_from_directory(
data,
validation_split=0.25,
subset="validation",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size,
#class_names={"nao_doentes", "doentes"}
)
AUTOTUNE = tf.data.experimental.AUTOTUNE
trainDataset = trainDataset.cache().prefetch(buffer_size=AUTOTUNE)
valDataset = valDataset.cache().prefetch(buffer_size=AUTOTUNE)
num_classes = 2
model = tf.keras.Sequential([
layers.experimental.preprocessing.Rescaling(1./255),
layers.Conv2D(32, 3, activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(32, 3, activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(32, 3, activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(num_classes)
])
model.compile(
optimizer='adam',
loss=tf.keras.losses.BinaryCrossentropy(),
metrics=['accuracy']
)
model.fit(
trainDataset,
validation_data=valDataset,
epochs=10
)
return model
model = trainModel(training_data)
with open('model.sav', 'wb') as f:
pickle.dump(model, f)
with open('model.sav', 'rb') as f:
model = pickle.load(f)
testing = np.ndarray(shape=(1, 1, 480, 640), dtype=np.float32)
image = load_img(os.path.join(test_data, "doentes/doente_6.jpg"), target_size=(480,640))
x = img_to_array(image)
x = np.expand_dims(x, axis=0)
testing = np.vstack([x])
print(model.predict(testing))
另外,当处理图像分类情况时,您是否愿意提供一些好的实践和解释来源?我是这个地区的新手,因此在搜索和链接不同来源的信息时,我会有点挣扎。一般来说,pickle在保存pytorch、tensorflow和keras的ml模型权重时会遇到问题。要保存您的keras模型,请查看 具体而言,请尝试在keras中使用函数save and load_module:
model.save('path/to/location'))
重建模型=keras.models.load模型(“路径/目的地/位置”)
通常,pickle在保存pytorch、tensorflow和keras的ml模型重量时存在问题。要保存您的keras模型,请查看
具体而言,请尝试在keras中使用函数save and load_module:
model.save('path/to/location'))
重建模型=keras.models.load模型(“路径/目的地/位置”)