news 2026/6/17 7:31:07

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/6/15 16:50:38

说说Redis的内存淘汰策略?

大家好&#xff0c;我是锋哥。今天分享关于【说说Redis的内存淘汰策略&#xff1f;】面试题。希望对大家有帮助&#xff1b; 说说Redis的内存淘汰策略&#xff1f; 超硬核AI学习资料&#xff0c;现在永久免费了&#xff01; Redis 的内存淘汰策略&#xff08;Eviction Policy…

作者头像 李华
网站建设 2026/6/16 19:14:35

LSTM - 长短时记忆网络

LSTM&#xff0c;全称长短时记忆网络&#xff0c;是一种特殊的循环神经网络&#xff0c;专门设计用来解决传统RNN在处理长序列时遇到的梯度消失/爆炸问题。它的核心特点与优势是能够学习并记住数百步之前的输入信息、通过精密的门控系统控制信息的流动、有效缓解了训练过程中的…

作者头像 李华
网站建设 2026/6/15 17:46:38

探索同步降压式单片DC - DC电源芯片:初学者的友好之选

同步降压式单片DC-DC电源芯片 1.6V-6.3V宽输入电压 500K开关频率 最大6A输出电流 软启动、过温保护、过流保护、欠压保护 适合初学者入门学习 带版图 不带版图在电源管理领域&#xff0c;同步降压式单片DC - DC电源芯片扮演着极为重要的角色&#xff0c;对于想要入门电源设计的…

作者头像 李华
网站建设 2026/6/16 23:03:54

1d 人工势场法路径规划Matlab代码实战

1d人工势场法路径规划matlab代码 自己手写的人工势场法路径规划matlab代码&#xff0c;通过设定目标点和起始点&#xff0c;人工势场法进行路径规划&#xff0c;机械臂末端按照规划好的路径移动。 通过修改参数可实现最佳配置在机器人路径规划领域&#xff0c;人工势场法是一种…

作者头像 李华
网站建设 2026/6/15 4:03:37

【C语言学习】编译和链接

一、翻译环境和运行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境&#xff1a; ①翻译环境&#xff1a;源代码被转换成可执行的机器指令&#xff08;二进制指令&#xff09;&#xff1b; ②执行环境&#xff1a;实际执行代码。二、翻译环境 翻译环境由编译和链…

作者头像 李华
网站建设 2026/6/15 20:25:32

利润暴涨的关键!企业搭建AI agent,早做早占先机

一、AI agent搭建让企业告别“低效内耗” 传统企业运营中&#xff0c;大量重复性、流程化的工作消耗了员工的大量精力&#xff0c;导致整体效率低下&#xff0c;这也是许多企业利润难以提升的重要原因。而搭建AI agent能够彻底改变这一现状&#xff0c;通过AI agent自动化处理这…

作者头像 李华