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

b站小土堆pytorch学习记录—— P25-P26 网络模型的使用和修改、保存和读取

文章目录

  • 一、修改
    • 1.方法
    • 2.代码
  • 二、保存和读取
    • 1.方法
    • 2.代码
      • (1)保存
      • (2)加载
    • 3.陷阱

一、修改

1.方法

add_module(name: str, module: Module) -> None

name 是要添加的子模块的名称。
module 是要添加的子模块。
调用 add_module 方法会向当前模块中添加一个子模块,并使用指定的名称进行标识。

2.代码

import torchvision
from torch import nn# 实例化一个未经过预训练的 VGG16 模型
vgg16_false = torchvision.models.vgg16(pretrained=False)# 实例化一个经过预训练的 VGG16 模型
vgg16_true = torchvision.models.vgg16(pretrained=True)print("ok")# 输出经过预训练的 VGG16 模型及修改后的模型
print(vgg16_true)
vgg16_true.classifier.add_module("add_linear", nn.Linear(1000, 10))
print(vgg16_true)# 输出未经过预训练的 VGG16 模型及修改后的模型
print(vgg16_false)
vgg16_false.classifier[6] = nn.Linear(4096, 10)
print(vgg16_false)

修改前的vgg16_true:

在这里插入图片描述
修改后的vgg16_true:

在这里插入图片描述

修改前的vgg16_true:

在这里插入图片描述

修改后的vgg16_true:

在这里插入图片描述

二、保存和读取

1.方法

保存: torch.save(要保存的模型,“文件路径”)

加载: torch.load(“文件路径”)

2.代码

(1)保存

import torch
import torchvisionvgg16 = torchvision.models.vgg16(pretrained=False)# 保存方式1:模型结构+模型参数
torch.save(vgg16, "vgg16_module1.pth")# 保存方式2:模型参数(官方推荐)
torch.save(vgg16.state_dict(), "vgg16_module2.pth")

(2)加载

import torch
import torchvision# 方式1 加载模型
module1 = torch.load("vgg16_module1.pth")
print(module1)#
module2 = torch.load("vgg16_module2.pth")
print(module2)# 方式2 加载模型
vgg16 = torchvision.models.vgg16(pretrained=False)
vgg16.load_state_dict(torch.load("vgg16_module2.pth"))
print(vgg16)

运行加载的代码后,打印结果如下

module1:

在这里插入图片描述
module2:

在这里插入图片描述

vgg16:

在这里插入图片描述

可以看到,第二种方式保存的数据,加载后是向量形式,需要通过别的方法加载为模型

3.陷阱

第一种方式加载,在某些条件下可能会报错

例如:

假设自定义一个神经网络,保存:

import torch
import torchvision
from torch import nn# 陷阱
class Guodong(nn.Module):def __init__(self):super(Guodong,self).__init__()self.conv1 = nn.Conv2d(3, 64, kernel_size=3)def forward(self,x):x = self.conv1(x)return xguodong = Guodong()
torch.save(guodong,"guodong_method1.pth")

在另一个文件中加载:

import torch# 陷阱
module = torch.load("guodong_method1.pth")
print(module)

就会报错:

AttributeError: Can’t get attribute ‘Guodong’ on <module ‘main’ from ‘E:\deepLearning\Pycharm\pytroch_project\theFirstFile\module_load.py’>

解决办法:

(1)把Guodong类放在这个文件里

import torch
from torch import nn
import torchvisionclass Guodong(nn.Module):def __init__(self):super(Guodong,self).__init__()self.conv1 = nn.Conv2d(3, 64, kernel_size=3)def forward(self,x):x = self.conv1(x)return x# 陷阱
module = torch.load("guodong_method1.pth")
print(module)

(2)from module_save import *

(module_save)是保存自定义模型的文件

from module_save import *# 陷阱
module = torch.load("guodong_method1.pth")
print(module)

相关文章:

b站小土堆pytorch学习记录—— P25-P26 网络模型的使用和修改、保存和读取

文章目录 一、修改1.方法2.代码 二、保存和读取1.方法2.代码&#xff08;1&#xff09;保存&#xff08;2&#xff09;加载 3.陷阱 一、修改 1.方法 add_module(name: str, module: Module) -> None name 是要添加的子模块的名称。 module 是要添加的子模块。 调用 add_m…...

[数据结构]OJ用队列实现栈

225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 官方题解&#xff1a;https://leetcode.cn/problems/implement-stack-using-queues/solutions/432204/yong-dui-lie-shi-xian-zhan-by-leetcode-solution/ 首先我们要知道 栈是一种后进先出的数据结构&#xff0c…...

「优选算法刷题」:最长回文子串

一、题目 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba"…...

Java项目:41 springboot大学生入学审核系统的设计与实现010

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本大学生入学审核系统管理员和学生。 管理员功能有个人中心&#xff0c;学生管理&#xff0c;学籍信息管理&#xff0c;入学办理管理等。 学生功能有…...

【数据结构与算法】常见排序算法(Sorting Algorithm)

文章目录 相关概念1. 冒泡排序&#xff08;Bubble Sort&#xff09;2. 直接插入排序&#xff08;Insertion Sort&#xff09;3. 希尔排序&#xff08;Shell Sort&#xff09;4. 直接选择排序&#xff08;Selection Sort&#xff09;5. 堆排序&#xff08;Heap Sort&#xff09;…...

Unity3D学习之XLua实践——背包系统

文章目录 1 前言2 新建工程导入必要资源2.1 AB包设置2.2 C# 脚本2.3 VSCode 的环境搭建 3 面板拼凑3.1 主面板拼凑3.2 背包面板拼凑3.3 格子复合组件拼凑3.4 常用类别名准备3.5 数据准备3.5.1 图集准备3.5.2 json3.5.3 打AB包 4 Lua读取json表及准备玩家数据5 主面板逻辑6 背包…...

前端技术研究越深入,越觉得技术不是决定录用唯一条件。

一、拒绝抬杠 我说技能不是唯一条件&#xff0c;不是说技能不重要&#xff0c;招聘前端条件是1X,其中1是技能&#xff0c;X是其他条件。 如果X条件很优秀&#xff0c;1这个条件可以降格为0.8、0.5&#xff0c;甚至更低。 有人就抬杠&#xff0c;那为啥不招聘清洁工来干前端&…...

vue组件的重新渲染的问题

目录 1.方式1 2.方式2 1.方式1 修改组件上的key属性 Vue是通过diffing算法比较虚拟DOM和真实DOM&#xff0c;来判断新旧 DOM 的变化。key是虚拟DOM对象的标识&#xff0c;在更新显示时key表示着DOM的唯一性。 DOM是否变化的核心是通过判断新旧DOM的key值是否变化&#xff0c…...

opengl 学习(二)-----你好,三角形

你好&#xff0c;三角形 分类demo效果解析 分类 opengl c demo #include "glad/glad.h" #include "glfw3.h" #include <iostream> #include <cmath> #include <vector>using namespace std;/** * 在学习此节之前&#xff0c;建议将这…...

mongodb4.2升级到5.0版本,升级到6.0版本, 升级到7.0版本案例

今天一客户想把自己当前使用的mongodb数据库4.2版本升级到7.0版本。难道mongodb能直接跳跃升级吗? 经过几经查找资料&#xff0c;貌似真不行呀。确定升级流程如下: 还得从mongo4.2升级到5.0。其次再从5.0升级到6.0。最后再从6.0升级到7.0。 开始升级之前将数据进行备份 这一步…...

CPU处理器模式与异常

ARM架构中的Exception Level&#xff08;EL&#xff09; 在ARM架构中&#xff0c;Exception Level&#xff08;EL&#xff09;是一个关键概念&#xff0c;它表示了处理器当前处理异常或中断的层次。ARMv8-A架构定义了四个Exception Levels&#xff1a;EL0、EL1、EL2和EL3&…...

Day 53 |● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和

1143.最长公共子序列 class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size()1,vector<int>(text2.size()1,0));int res 0;for(int i 1; i < text1.size(); i){for(int j 1; j <…...

ant-desgin charts双轴图DualAxes,柱状图无法立即显示,并且只有在调整页面大小(放大或缩小)后才开始显示

摘要 双轴图表中&#xff0c;柱状图无法立即显示&#xff0c;并且只有在调整页面大小&#xff08;放大或缩小&#xff09;后才开始显示 官方示例代码 在直接复制&#xff0c;替换为个人数据时&#xff0c;出现柱状图无法显示问题 const config {data: [data, data],xFiel…...

获取别人店铺的所有商品API接口

使用淘宝淘口令接口的步骤通常包括&#xff1a; 注册成为淘宝开放平台的开发者&#xff1a;在淘宝开放平台网站上注册账号并完成认证。 创建应用以获取API密钥&#xff1a;在您的开发者控制台中创建一个应用&#xff0c;并获取用于API调用的密钥&#xff0c;如Client ID和Clie…...

成都正信:亲戚借了钱一直不还怎么委婉的说

在中国传统文化中&#xff0c;亲情关系往往被视为最为重要和敏感的部分。当亲戚间发生借贷时&#xff0c;若出现拖欠不还的情形&#xff0c;处理起来尤为棘手。面对这样的尴尬局面&#xff0c;采取委婉而有效的沟通方式至关重要。 张华最近就遇到了这样的困扰。他的表弟去年因急…...

Truenas入门级教程

Truenas入门教程 前言&#xff1a;系统相关配置 采用I3 4160&#xff0c;采用了2块500G的硬盘&#xff0c;内存为8G&#xff0c;两个网卡只用了其中一个&#xff0c;系统安装的是core版本 硬件采用DELL3020MT机箱&#xff0c;自带3个SATA网口&#xff0c;后期网口不够&#…...

窗口函数dense() over(条件)

力扣题目连接 https://leetcode.cn/problems/rank-scores/ 在 SQL 中&#xff0c;DENSE_RANK() 是一个窗口函数&#xff0c;用于计算结果集中每行的稠密排名&#xff08;dense rank&#xff09;。DENSE_RANK() 函数会为具有相同排序字段值的行分配相同的排名&#xff0c;但不会…...

蓝牙APP开发实现汽车遥控钥匙解锁汽车智能时代

在现代社会&#xff0c;随着科技的不断发展&#xff0c;汽车已经不再是简单的交通工具&#xff0c;而是与智能科技紧密相连的载体。其中&#xff0c;通过开发APP蓝牙程序实现汽车遥控钥匙成为了一种趋势&#xff0c;为车主带来了便捷与安全的体验。虎克技术公司作为行业领先者&…...

第三天 Kubernetes进阶实践

第三天 Kubernetes进阶实践 本章介绍Kubernetes的进阶内容&#xff0c;包含Kubernetes集群调度、CNI插件、认证授权安全体系、分布式存储的对接、Helm的使用等&#xff0c;让学员可以更加深入的学习Kubernetes的核心内容。 ETCD数据的访问 kube-scheduler调度策略实践 预选与…...

redis小结

1.mysql是数据库,redis是数据库&#xff0c;那么什么时候使用应该使用哪种数据库? redis做缓存是为了缓解mysql的压力&#xff0c;在数据库表数据量上千万&#xff0c;并且访问频繁时&#xff0c;mysql压力增大&#xff0c;在有索引的情况下依旧效果不佳&#xff0c;需要使用…...

DS4Windows完全指南:3步解决PlayStation手柄在Windows的兼容性问题

DS4Windows完全指南&#xff1a;3步解决PlayStation手柄在Windows的兼容性问题 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 你是否曾经遇到过这样的问题&#xff1a;购买了心爱的PlayS…...

深度学习优化算法(三)—— 自适应学习率(AdaGrad/RMSProp/Adam/AdamW)(三十五)

1. 定位导航 第 34 篇我们解决了"方向"问题(Momentum 让训练快 10)。本篇解决另一个核心问题:每个参数应该用多大学习率? 第 8 章规划进度: 篇号 主题 状态 33 优化挑战 ✅ 34 SGD + Momentum + Nesterov ✅ 35(本篇) 自适应学习率 🚀 36 参数初始化策略 …...

告别手改脚本!用CANoe Panel面板做个变量控制台,测试效率翻倍

告别手改脚本&#xff01;用CANoe Panel面板打造智能变量控制台 在车载网络测试领域&#xff0c;效率提升往往隐藏在那些被忽视的日常操作细节中。当测试工程师频繁打开CAPL脚本修改超时阈值、调整诊断ID或切换测试模式时&#xff0c;不仅打断了工作流&#xff0c;更在团队协作…...

如何用nmrpflash拯救你的Netgear路由器:从“变砖“到重生的完整指南

如何用nmrpflash拯救你的Netgear路由器&#xff1a;从"变砖"到重生的完整指南 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 当你的Netgear路由器固件升级失败、意外断电或系统崩溃后无法启动…...

5分钟掌握小红书无水印下载:让内容保存效率提升300%

5分钟掌握小红书无水印下载&#xff1a;让内容保存效率提升300% 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、用户链接&#…...

C语言结构体、枚举、联合体:从内存布局看区别,新手避坑指南

C语言结构体、枚举、联合体&#xff1a;从内存布局看区别&#xff0c;新手避坑指南 在C语言开发中&#xff0c;结构体、枚举和联合体是构建复杂数据模型的三大基石。但很多开发者在实际项目中常遇到这样的困惑&#xff1a;为什么结构体占用的内存比预期大&#xff1f;枚举变量在…...

Godot游戏集成Discord状态:RPC插件原理与实战指南

1. 项目概述&#xff1a;在Godot引擎中点亮你的Discord状态 如果你是一名独立游戏开发者&#xff0c;或者正在用Godot引擎捣鼓一些有趣的个人项目&#xff0c;你可能会想让你的朋友或社区成员知道你现在正在“玩”什么。不是通过截图发到社交媒体&#xff0c;而是更实时、更优…...

开源技能图谱工具SkillPort:Go语言构建的知识管理利器

1. 项目概述&#xff1a;一个技能图谱与知识管理的开源利器 最近在整理个人技术栈和团队知识库时&#xff0c;我一直在寻找一个能直观展示技能关联、又能深度管理学习路径的工具。市面上的笔记软件要么太“平”&#xff0c;只能线性记录&#xff1b;要么太“重”&#xff0c;像…...

AI驱动工作流自动化:从原理到实践,构建智能效率引擎

1. 项目概述&#xff1a;当AI遇上工作流&#xff0c;一场效率革命正在发生最近在GitHub上看到一个名为“WorkflowAI/WorkflowAI”的项目&#xff0c;这个名字本身就充满了想象空间。作为一个长期与各种自动化工具和效率方法论打交道的人&#xff0c;我立刻意识到&#xff0c;这…...

EL线创客工作坊:从零到一的电致发光项目实践指南

1. 项目概述&#xff1a;为什么EL线工作坊是创客入门的绝佳选择如果你正在寻找一个能让新手快速上手、成品炫酷、且能完美融合电子与手工的创客项目&#xff0c;EL线工作坊几乎是一个无可挑剔的答案。EL&#xff0c;即电致发光&#xff0c;它不像LED那样依赖一个个分立的光点&a…...