当前位置: 首页 > news >正文

一文看明白PyTorch 模型设计训练保存加载预测

需求

输入x
128维

fc1
Linear 128→96

ReLU激活

Dropout 0.2

fc2
Linear 96→64

ReLU激活

Dropout 0.2

fc3
Linear 64→32

输出out
32维

代码样例

包含训练 → 保存 → 加载 → 预测,代码可以直接运行:

importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorch.utils.dataimportDataLoader,TensorDataset# -----------------------------# 1. 定义模型# -----------------------------classSimpleModel(nn.Module):def__init__(self):super(SimpleModel,self).__init__()self.fc1=nn.Linear(128,96)self.fc2=nn.Linear(96,64)self.fc3=nn.Linear(64,32)self.relu=nn.ReLU()self.dropout=nn.Dropout(0.2)defforward(self,x):x=self.relu(self.fc1(x))x=self.dropout(x)x=self.relu(self.fc2(x))x=self.dropout(x)out=self.fc3(x)returnout# -----------------------------# 2. 准备数据 (示例随机数据)# -----------------------------X=torch.randn(1000,128)y=torch.randn(1000,32)dataset=TensorDataset(X,y)batch_size=32dataloader=DataLoader(dataset,batch_size=batch_size,shuffle=True)# -----------------------------# 3. 定义损失函数和优化器# MSELoss Mean Squared Error(均方误差)# -----------------------------model=SimpleModel()criterion=nn.MSELoss()optimizer=optim.Adam(model.parameters(),lr=0.001)# -----------------------------# 4. 训练循环# -----------------------------num_epochs=20forepochinrange(num_epochs):model.train()# 训练模式epoch_loss=0forbatch_X,batch_yindataloader:optimizer.zero_grad()outputs=model(batch_X)loss=criterion(outputs,batch_y)loss.backward()optimizer.step()epoch_loss+=loss.item()*batch_X.size(0)epoch_loss/=len(dataset)print(f"Epoch{epoch+1}/{num_epochs}, Loss:{epoch_loss:.4f}")# -----------------------------# 5. 保存训练好的模型参数# -----------------------------torch.save(model.state_dict(),"simple_model.pth")print("模型参数已保存到 simple_model.pth")# -----------------------------# 6. 加载模型进行预测# -----------------------------# 重新创建模型对象model_loaded=SimpleModel()# 加载保存的参数model_loaded.load_state_dict(torch.load("simple_model.pth"))# 切换到评估模式model_loaded.eval()# 假设有新样本 x_newx_new=torch.randn(5,128)withtorch.no_grad():# 推理时禁用梯度y_pred=model_loaded(x_new)print("加载模型预测结果形状:",y_pred.shape)# [5, 32]

✅ 特点

  1. 训练完成后保存权重simple_model.pth可以随时加载。
  2. 加载模型时必须重新创建类,然后load_state_dict
  3. 推理时切换到eval()模式,保证 Dropout 不随机失活。
  4. 使用torch.no_grad()提升预测效率,减少显存占用。

http://www.jsqmd.com/news/871116/

相关文章:

  • 2026天河区专利代理机构TOP5|AI、软件科技、互联网企业科创专利与补贴避坑指南 - 速递信息
  • Quantum ESPRESSO完整指南:快速掌握开源电子结构计算
  • 红小豆抗逆与品质协同改良:与工业化研发平台合作的降本增效策略
  • 基于加法链的 Harness 批量认证优化
  • 【物流人必读的AI Agent避坑白皮书】:92%企业卡在Agent编排层——资深架构师拆解7层可信协同架构
  • 第一次通过通讯节点连接实现无人机仿真模拟(ROS1 + C++ + PX4)
  • 三分钟掌握Twine.js:零代码创建交互式非线性故事
  • 如何用Akagi麻雀助手快速提升雀魂游戏水平:3个核心技巧
  • TegraRcmGUI:Windows平台Nintendo Switch注入的终极图形化解决方案
  • 文峰购物卡回收:如何实现高效安全变现 - 购物卡回收找京尔回收
  • python运行提速方案全解
  • 观察使用Taotoken聚合调用在不同时段模型响应的延迟表现
  • 2026年必看:Trae对比Claude Code详细评测,热门AI编程工具横评
  • 面向银发消费品的客服系统如何做方言适配?从普通话到各地方言的语音识别方案
  • 杭州西装定制头部品牌权威推荐榜 - 西装爱好者
  • GPU+FPGA-满足你对低延迟与大算力的双重幻想
  • Gearboy终极指南:跨平台Game Boy模拟器与AI辅助调试
  • 如何打造移动工作站:3步实现操作系统随身携带
  • Claude如何3秒定位《民法典》第584条关联条款?——基于172份裁判文书验证的法律语义映射模型
  • Cursor Pro破解工具终极指南:5步解锁AI编程助手完整功能
  • 维小达全品类上门维修 用心服务民生 守护万家安心 - 维小达科技
  • 深度解析ANTs图像配准架构设计:医学影像标准化核心技术实现
  • 基于Go+Wails的智能网络资源嗅探与下载工具:实现全平台自动化资源捕获
  • 5个维度深度解析洛雪音乐音源:从技术实现到高效部署的完整指南
  • 我为什么写了一个 Syslog 查看器
  • IDM永久激活指南:免费解锁下载神器,告别30天试用限制
  • 杰理之使用蓝牙测试盒出现升级失败问题【篇】
  • 为Claude Code配置Taotoken稳定通道避免封号与Token不足
  • 2026年期货回测防过拟合:主流平台样本外与验证工具对比
  • 告别手动抢茅台!Campus-imaotai智能预约系统终极指南