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

【PyTorch】(三)模型的创建、参数初始化、保存和加载

文章目录

  • 1. 模型的创建
    • 1.1. 创建方法
      • 1.1.1. 通过使用模型组件
      • 1.1.2. 通过继承nn.Module类
    • 1.2. 模型组件
      • 1.2.1. 网络层
      • 1.2.2. 函数包
      • 1.2.3. 容器
    • 1.3. 将模型转移到GPU
  • 2. 模型参数初始化
  • 3. 模型的保存与加载
    • 3.1. 只保存参数
    • 3.2. 保存模型和参数

1. 模型的创建

1.1. 创建方法

1.1.1. 通过使用模型组件

可以直接使用模型组件快速创建模型。

import torch.nn as nnmodel =	nn.Linear(10, 10),
print(model)

输出结果:

Linear(in_features=10, out_features=10, bias=True)

1.1.2. 通过继承nn.Module类

在__init__方法中使用模型组件定义模型各层。在forward方法中实现前向传播。

import torch.nn as nnclass Model(nn.Module):def __init__(self):super().__init__()self.layer1 = nn.Linear(10, 10)self.layer2 = nn.Linear(10, 10)self.layer3 = nn.Sequential(nn.Linear(10, 10),nn.ReLU(),nn.Linear(10, 10))def forward(self, x):x = self.layer1(x)x = self.layer2(x)x = self.layer3(x)return xmodel = Model()
print(model)

输出结果:

Model((layer1): Linear(in_features=10, out_features=10, bias=True)(layer2): Linear(in_features=10, out_features=10, bias=True)(layer3): Sequential((0): Linear(in_features=10, out_features=10, bias=True)(1): ReLU()(2): Linear(in_features=10, out_features=10, bias=True))
)

1.2. 模型组件

1.2.1. 网络层

1.2.2. 函数包

1.2.3. 容器

1.3. 将模型转移到GPU

方法与将数据转移到GPU类似,都有两种方法:

  1. model.to(device)
  2. mode.cuda()
import torch
import torch.nn as nn# 创建模型实例
model = nn.Sequential(nn.Linear(10, 10),nn.ReLU(),nn.Linear(10, 10)
)# 将模型移动到GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
# 也可以
model = model.cuda()

2. 模型参数初始化

3. 模型的保存与加载

模型保存和加载使用的python内置的pickle模块。

3.1. 只保存参数

import torch
import torch.nn as nn# 创建模型实例
model1 = nn.Sequential(nn.Linear(10, 10),nn.ReLU(),nn.Linear(10, 10)
)# 保存和加载参数
torch.save(model1.state_dict(), '../model/model_params.pkl')
model1.load_state_dict(torch.load('../model/model_params.pkl'))

3.2. 保存模型和参数

import torch
import torch.nn as nn# 创建模型实例
model1 = nn.Sequential(nn.Linear(10, 10),nn.ReLU(),nn.Linear(10, 10)
)# 保存和加载模型和参数
torch.save(model1, '../model/model.pt')
model2 = torch.load('../model/model.pt')
print(model2)

相关文章:

  • html实现360度产品预览(附源码)
  • 使用electron工具打包web端到PC端应用程序
  • PLC通过lora网关采集温室大棚温湿度数据
  • antDesignPro a-table样式二次封装
  • Redis总结
  • 简历上的工作经历怎么写
  • YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)
  • 解决Linux Visual Studio Code显示字体有问题/Liunx下Visual Studio Code更换字体
  • 【brpc学习实践十一】session-local与thread-local应用与brpc抽象工厂模式实践
  • Linux设置Nginx开机自启
  • 【Openstack Train安装】九、Nova安装
  • 【微服务】java 规则引擎使用详解
  • 《Effective C++》条款27
  • python 生成器的作用
  • sql手工注入漏洞测试(MYSQL)-墨者-url信息
  • 时间复杂度分析经典问题——最大子序列和
  • 【5+】跨webview多页面 触发事件(二)
  • 【刷算法】从上往下打印二叉树
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 2017-09-12 前端日报
  • 2017届校招提前批面试回顾
  • Electron入门介绍
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java 最常见的 200+ 面试题:面试必备
  • js正则,这点儿就够用了
  • k个最大的数及变种小结
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • PHP 7 修改了什么呢 -- 2
  • php面试题 汇集2
  • text-decoration与color属性
  • Vue2.x学习三:事件处理生命周期钩子
  • Zsh 开发指南(第十四篇 文件读写)
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 力扣(LeetCode)357
  • 浏览器缓存机制分析
  • 微信小程序开发问题汇总
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • (4) PIVOT 和 UPIVOT 的使用
  • (C++17) optional的使用
  • (LeetCode 49)Anagrams
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)Linux——Linux常用指令
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)nsfocus-绿盟科技笔试题目
  • .Net - 类的介绍
  • .net core 依赖注入的基本用发
  • .NET Core引入性能分析引导优化
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • /etc/shadow字段详解
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Autowired和@Resource装配
  • @TableLogic注解说明,以及对增删改查的影响