news 2026/8/22 8:26:03

day41早停策略和模型权重的保存@浙大疏锦行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
day41早停策略和模型权重的保存@浙大疏锦行

day41早停策略和模型权重的保存@浙大疏锦行

基于day40代码实现模型权重的保存和早停

# 定义损失函数和优化器criterion=nn.CrossEntropyLoss()optimizer=optim.Adam(model.parameters(),lr=0.001)# 训练参数num_epochs=1000check_interval=10# 每多少轮检查一次验证集# 记录列表train_losses=[]test_losses=[]epochs_rec=[]# ===== 早停策略参数 =====best_test_loss=float('inf')patience=20# 容忍多少次验证集loss不下降 (20 * 10 = 200 epochs)counter=0early_stopped=Falsebest_model_path='best_credit_model.pth'# ======================start_time=time.time()# 使用tqdm显示进度条withtqdm(total=num_epochs,desc="训练进度",unit="epoch")aspbar:forepochinrange(num_epochs):model.train()# 前向传播outputs=model(X_train)loss=criterion(outputs,y_train)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()# 定期评估和检查早停if(epoch+1)%check_interval==0:model.eval()withtorch.no_grad():test_outputs=model(X_test)test_loss=criterion(test_outputs,y_test)model.train()# 记录train_losses.append(loss.item())test_losses.append(test_loss.item())epochs_rec.append(epoch+1)pbar.set_postfix({'Train Loss':f'{loss.item():.4f}','Test Loss':f'{test_loss.item():.4f}','Best':f'{best_test_loss:.4f}','Patience':f'{counter}/{patience}'})# ===== 早停逻辑 =====iftest_loss.item()<best_test_loss:best_test_loss=test_loss.item()counter=0# 保存最佳模型权重torch.save(model.state_dict(),best_model_path)else:counter+=1ifcounter>=patience:print(f"\n早停触发!在第{epoch+1}轮停止训练。")print(f"最佳测试集损失:{best_test_loss:.4f}")early_stopped=Truebreak# ===================pbar.update(1)print(f"训练耗时:{time.time()-start_time:.2f}秒")# 绘制损失曲线plt.figure(figsize=(10,6))plt.plot(epochs_rec,train_losses,label='Train Loss')plt.plot(epochs_rec,test_losses,label='Test Loss')plt.title('Training and Test Loss (with Early Stopping)')plt.xlabel('Epoch')plt.ylabel('Loss')plt.legend()plt.grid(True)plt.show()

训练进度: 31% 309/1000 [00:01<00:02, 292.95epoch/s, Train Loss=0.4183, Test Loss=0.4887, Best=0.4769, Patience=19/20]

早停触发!在第 310 轮停止训练。 最佳测试集损失: 0.4769 训练耗时: 1.06 秒

# 模型评估 - 加载最佳模型print("\n--- 加载最佳模型进行评估 ---")ifos.path.exists(best_model_path):# 重新初始化模型结构best_model=CreditModel(input_dim).to(device)# 加载权重best_model.load_state_dict(torch.load(best_model_path))best_model.eval()withtorch.no_grad():outputs=best_model(X_test)_,predicted=torch.max(outputs.data,1)total=y_test.size(0)correct=(predicted==y_test).sum().item()accuracy=100*correct/totalprint(f'最佳模型测试集准确率:{accuracy:.2f}%')# 简单的推理示例print("\n--- 推理示例 ---")print(f"真实标签:{y_test[:10].cpu().numpy()}")print(f"预测标签:{predicted[:10].cpu().numpy()}")else:print("未找到保存的模型文件。")


@浙大疏锦行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 6:57:58

OpenAI 的反击!GPT-5.2 强行拉开代差,Gemini 3 和 Claude 4 还有机会吗?

2025 年 12 月&#xff0c;全球 AI 领域爆发了一场足以载入史册的“圣诞闪击战”。 当谷歌的Gemini 3凭借其深度多模态能力刚刚在创意界站稳脚跟&#xff0c;Anthropic 的 Claude 4 靠着“软工程最强”的口碑收割开发者时&#xff0c;OpenAI 突然抛出了王牌——GPT-5.2。这不仅…

作者头像 李华
网站建设 2026/8/20 23:56:41

零售打工人加薪难?靠这张证,我在激烈竞争里站稳了脚跟

在零售商贸行业摸爬滚打三年&#xff0c;我深刻体会到“内卷”二字的重量。货架补货、客户接待、业绩冲刺&#xff0c;每天重复的工作占据了大部分时间&#xff0c;可薪资条上的数字却始终原地踏步。看着身边同事为了一个晋升名额争得头破血流&#xff0c;新人带着新鲜技能不断…

作者头像 李华
网站建设 2026/8/22 1:07:28

从离线语音到多模态智能体四博智联 AI 硬件整体解决方案全景解析

下面是一篇完整、可直接对外发布的推广文章&#xff0c;我已经严格基于你提供的《四博智联 AI 开发宝典》内容进行整理与升华&#xff0c;把零散的技术说明统一成一条清晰的 「四博智联 AI 方案全景路线」&#xff0c;适合用于&#xff1a;官网 / 公众号招商 / 客户方案介绍AI …

作者头像 李华
网站建设 2026/8/21 4:37:18

性能压测工具:wrk

一般我们压测的时候&#xff0c;需要了解衡量系统性能的一些参数指标&#xff0c;比如。 1、性能指标简介 1.1 延迟 简单易懂。green:一般指响应时间 95线&#xff1a;P95。平均100%的请求中95%已经响应的时间 99线&#xff1a;P99。平均100%的请求中99%已经响应的时间 平…

作者头像 李华