TensorFlow训练完成后无法找到保存的模型权重文件求助
问题分析与解决办法
1. 未提前创建保存目录
代码仅定义了保存目录路径,但未确保目录存在。若./model目录不存在,TensorFlow保存权重时可能静默失败,不会抛出明确错误。
修改方式:在定义保存路径前添加目录创建逻辑:
save_dir = './model' # 确保保存目录存在,不存在则自动创建 os.makedirs(save_dir, exist_ok=True) encoder_prefix = os.path.join(save_dir, "encoder_weights") decoder_prefix = os.path.join(save_dir, "decoder_weights")
2. 最佳损失判断逻辑错误
- 初始
best_total_loss = 0.0071,若首个epoch的平均损失(total_loss / N_BATCH)大于0.0071,将直接跳过权重保存。 - 更新
best_total_loss时错误赋值为total_loss(未除以N_BATCH),导致后续epoch的判断逻辑完全混乱,几乎无法触发保存。
修改方式:修正损失比较与更新逻辑:
# 初始值设为极大值,确保首次训练会触发保存 best_total_loss = float('inf') # ... 训练循环内 ... epoch_avg_loss = total_loss / N_BATCH print('Epoch {} Loss {:.4f}'.format(epoch + 1, epoch_avg_loss)) if best_total_loss > epoch_avg_loss: best_total_loss = epoch_avg_loss # 保存平均损失,而非总损失 encoder.save_weights(encoder_prefix) decoder.save_weights(decoder_prefix) print('Saving weights at epoch {} with Loss {:.4f}'.format(epoch + 1, epoch_avg_loss))
3. 权重保存格式设置(可选)
若使用较新版本TensorFlow,save_weights默认保存为TensorFlow检查点格式(多文件),而非单一.h5文件。若需要.h5格式,需指定保存格式参数:
修改方式:
encoder.save_weights(encoder_prefix, save_format='h5') decoder.save_weights(decoder_prefix, save_format='h5')
4. 权限排查(可选)
若上述修改后仍无法保存,需检查当前用户对./model目录是否有写入权限,可手动创建目录后再运行训练。
内容的提问来源于stack exchange,提问作者fovad rasoli
相关产品推荐
相关产品推荐

