ModelCheckpoint保存路径错误:如何将模型权重存入指定子目录?
解决模型权重保存到指定子目录的问题
问题根源是保存路径的构造错误,没有让模型文件指向目标子目录内部。以下是具体修复步骤:
第一步:确保目标子目录存在(Colab不会自动创建不存在的目录)
import os # 定义model3的目标子目录路径 model3_save_dir = '/content/gdrive/My Drive/Colab/checkpoints/model3/' # 递归创建目录,exist_ok=True避免目录已存在时报错 os.makedirs(model3_save_dir, exist_ok=True)第二步:根据你使用的保存方式,构造正确的路径
情况1:用ModelCheckpoint回调保存权重(训练时自动保存)from tensorflow.keras.callbacks import ModelCheckpoint # 构造子目录内的模型权重保存路径 checkpoint_full_path = os.path.join(model3_save_dir, 'model3') # 初始化回调 cp_callback = ModelCheckpoint( filepath=checkpoint_full_path, save_weights_only=True, verbose=1 ) # 训练模型时传入回调 model3.fit(train_images, train_labels, callbacks=[cp_callback])情况2:手动保存模型权重
# 直接指定子目录内的保存路径 model3.save_weights(os.path.join(model3_save_dir, 'model3'))情况3:保存完整模型(而非仅权重)
# 直接将子目录路径传入save方法,模型文件会自动存入该目录 model3.save(model3_save_dir)
错误原因说明
之前的操作中,你可能直接将model3作为文件名前缀放在父目录下,而非让路径指向子目录内部。比如错误路径是/content/gdrive/My Drive/Colab/checkpoints/model3,TensorFlow会将其识别为文件名,而非目录,因此权重文件会直接生成在父目录,同时你手动创建的model3子目录就会是空的。
内容的提问来源于stack exchange,提问作者HankY
相关产品推荐
相关产品推荐

