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

实验代码结构介绍

提高模型复用性,让模型对应的配置更加清晰,代码书写条理
学习自https://zhuanlan.zhihu.com/p/409662511

Project
├── checkpoints	# 存放模型
├── data 		# 定义各种用于训练测试的数据集 
├── eval.py		# 测试代码
├── loss.py		# 定义的各种loss
├── metrics.py	# 定义约定俗成的评价指标
├── model/src		# 定义实验中的模型
├── options.py	# 定义各种实验的参数,以命令行形式传入
├── README.md	# 介绍report
├── scripts		# 训练、测试脚本(训练、测试的运行命令)
├── train.py	# 训练代码
└── utils		# 训练工具代码

在这里插入图片描述

文章目录

    • Checkpoints
    • Scripts
    • options.py
    • train.py

Checkpoints

训练好的模型放在checkpoints里面,通常保存训练过程中的中间结果。主要包括:模型权重文件、模型配置文件、优化器和日志文件等。

Scripts

每次训练或者测试用的脚本命令。

  • 训练脚本:用于执行模型训练的脚本文件,通常包括定义模型、加载数据、设置损失函数和优化器、执行循环等步骤。
  • 评估脚本:用于评估模型性能的脚本文件。加载训练好的模型或者指定的checkpoints文件,对模型在测试集或验证集上的表现进行评估。
  • 预测脚本:……
  • 数据预处理脚本:用于数据预处理和准备的脚本文件。

options.py

  • 定义实验参数。
def parse_common_args(parser):parser.add_argument('--model_type', type=str, default='base_model', help='used in model_entry.py')parser.add_argument('--data_type', type=str, default='base_dataset', help='used in data_entry.py')parser.add_argument('--save_prefix', type=str, default='pref', help='some comment for model or test result dir')parser.add_argument('--load_model_path', type=str, default='checkpoints/base_model_pref/0.pth', help='model path for pretrain or test')parser.add_argument('--load_not_strict', action='store_true', help='allow to load only common state dicts')parser.add_argument('--val_list', type=str, default='/data/dataset1/list/base/val.txt', help='val list in train, test list path in test')parser.add_argument('--gpus', nargs='+', type=int)return parserdef parse_train_args(parser):parser = parse_common_args(parser)...return parserdef parse_test_args(parser):parser = parse_common_args(parser)...return parser
  • 路径配置:定义数据集、模型、日志文件等路径
DATA_PATH = '/path/to/dataset/'
MODEL_PATH = '/path/to/models/'
LOG_PATH = '/path/to/logs/'
  • 数据处理
IMAGE_SIZE = (256, 256)
DATA_AUGMENTATION = True
  • 加载模型超参
LEARNING_RATE = 0.001
BATCH_SIZE = 32
MAX_EPOCHS = 10
  • 其他配置

train.py

主要任务是把整体写好的内容串起来

  • 导入必要的库和模块
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
from model import MyModel  # 假设模型定义在model.py中
from options import *  # 导入配置选项
  • 数据加载和预处理
# 定义数据预处理和增强方式
transform = transforms.Compose([transforms.Resize(IMAGE_SIZE),transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])# 加载数据集
train_dataset = datasets.ImageFolder(root=DATA_PATH, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=BATCH_SIZE, shuffle=True)
  • 模型定义和初始化
# 定义模型
model = MyModel()
# 如果有预训练模型,加载参数
# model.load_state_dict(torch.load(PRETRAINED_MODEL_PATH))
  • 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=LEARNING_RATE)
  • 保存模型
torch.save(model.state_dict(), MODEL_SAVE_PATH)
  • 可选的评估和测试
# 评估模型
model.eval()
with torch.no_grad():# 执行评估代码

相关文章:

实验代码结构介绍

提高模型复用性,让模型对应的配置更加清晰,代码书写条理 学习自https://zhuanlan.zhihu.com/p/409662511 Project ├── checkpoints # 存放模型 ├── data # 定义各种用于训练测试的数据集 ├── eval.py # 测试代码 ├── loss.py # 定义的…...

Java多线程不会?一文解决——

方法一 新建类如MyThread继承Thread类重写run()方法再通过new MyThread类来新建线程通过start方法启动新线程 案例&#xff1a; class MyThread extends Thread {public MyThread(String name) {super(name);}Overridepublic void run() {for(int i0;i<10;i){System.out.…...

Mac上pyenv的安装及使用

Mac上pyenv的安装及使用 安装 brew update brew install pyenv 报错 git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallowgit -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow那就执行这2句 还报错 git -C /…...

【SpringBoot】IDEA查看spring bean的依赖关系

前因&#xff1a;研究springcloud config组件时&#xff0c;我发现config-server包下的EnvironmentController不在扫描的包路径下却可以响应客户端的请求&#xff0c;这引起了我的注意&#xff0c;我的问题是&#xff1a;EnvironmentController是怎么被添加进bean工厂的。本章就…...

项目代码优化(1)——下单逻辑

给一个电商开发的系统排查&#xff0c;发现漏洞很多。很多经验不够的开发者很容易忽视的逻辑错误陷阱。在给一个项目做二次开发时候&#xff0c;检测到的相关经典案例。这里整理支付和产品相关的逻辑&#xff0c;方便后续查看。&#xff0c;这里进行一些简单的逻辑漏洞梳理与修…...

探索 WebKit 的缓存迷宫:深入理解其高效缓存机制

探索 WebKit 的缓存迷宫&#xff1a;深入理解其高效缓存机制 在当今快速变化的网络世界中&#xff0c;WebKit 作为领先的浏览器引擎之一&#xff0c;其缓存机制对于提升网页加载速度、减少服务器负载以及改善用户体验起着至关重要的作用。本文将深入探讨 WebKit 的缓存机制&am…...

JVM:介绍

文章目录 一、什么是JVM二、JVM的功能1、解释和运行2、内存管理3、即时编译 三、常见的JVM四、Java虚拟机规范五、HotSpot发展历程 一、什么是JVM JVM的全称为Java Virtual Machine&#xff0c;Java虚拟机。本质上是一个运行在计算机上的程序&#xff0c;职责是运行Java字节码…...

和鲸“101”计划领航!和鲸科技携手北中医,共话医学+AI 实验室建设及创新人才培养

为进一步加强医学院校大数据管理与应用、信息管理与信息系统&#xff0c;医学信息工程等专业建设&#xff0c;交流实验室建设、专业发展与人才培养经验&#xff0c;6 月 22 日&#xff0c;由北京中医药大学&#xff08;简称“北中医”&#xff09;主办&#xff0c;上海和今信息…...

Linux 网络抓包工具tcpdump编译

tcpdump 的编译步骤 1. 下载源代码 访问 tcpdump 的官方网站&#xff08;如&#xff1a;http://www.tcpdump.org/&#xff09;下载最新的源代码压缩包&#xff0c;如tcpdump-4.9.2.tar.gz&#xff08;注意版本号可能会有所不同&#xff09;。 2. 解压缩源代码 使用 tar 命令…...

『C++成长记』string模拟实现

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;C &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ ​ 目录 一、存储结构 二、默认成员函数 &#x1f4d2;2.1构造函数 &#x1f4d2;2.…...

【c++】C++ IO流

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…...

解密智慧校园基础数据的学年管理功能

在智慧校园平台中&#xff0c;学年管理模块构成了教育活动有序运行的基石&#xff0c;它精心设计来适应多样化的学术日程&#xff0c;确保学校的各项事务都能在清晰规划的学年框架内顺利推进。这一核心功能不仅关乎时间的界定&#xff0c;更深层次地融入了教育管理的每一个细微…...

Python酷库之旅-第三方库Pandas(009)

目录 一、用法精讲 19、pandas.read_xml函数 19-1、语法 19-2、参数 19-3、功能 19-4、返回值 19-5、说明 19-6、用法 19-6-1、数据准备 19-6-2、代码示例 19-6-3、结果输出 20、pandas.DataFrame.to_xml函数 20-1、语法 20-2、参数 20-3、功能 20-4、返回值 …...

VPN 的入门介绍

VPN&#xff08;虚拟专用网络&#xff09; 简介 虚拟专用网络&#xff0c;简称虚拟专网&#xff08;VPN&#xff09;&#xff0c;其主要功能是在公用网络上建立专用网络&#xff0c;进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实…...

移动UI: 什么特征会被认为是简洁风格,用案例告诉你

什么是简洁风格&#xff0c;恐怕一百个人有一百个是理解&#xff0c;本文通过理论分析案例的方式进行探讨。 移动 UI 中的简洁风格通常具有以下几个特征&#xff1a; 1. 平面化设计&#xff1a; 简洁风格的移动 UI 善于运用平面化设计&#xff0c;即去除过多的阴影、渐变和立…...

除了伦敦外,英国还有这些热门留学城市

在同学们选择出国留学时&#xff0c;首先要考虑到的便是择校的问题。除了排名、专业、录取要求之外&#xff0c;城市因素也占据了很大比重。 抛开学校自身的优势外&#xff0c;一座城市的氛围、成本、环境都是需要考虑的因素。下面就我们来盘点一下英国热门的留学城市。 爱丁…...

2390. 从字符串中移除星号

2390. 从字符串中移除星号 题目链接&#xff1a;2390. 从字符串中移除星号 代码如下&#xff1a; class Solution { public:string removeStars(string s) {vector<char> sta;for(int i0;i<s.size();i){if(s[i]*) {sta.pop_back();}else {sta.push_back(s[i])…...

UNION、UNION ALL、INTERSECT、MINUS

UNION、UNION ALL、INTERSECT、MINUS&#xff1f; 说明 UNION&#xff1a;对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;同时进行默认规则的排序&#xff1b;IUNION ALL&#xff1a;对两个结果集进行并集操作&#xff0c;包括重复行&#xff0c;不进行排序&am…...

Perl 语言开发(九):深入探索Perl语言的文件处理

目录 1. 文件打开与关闭 1.1 打开文件 1.2 关闭文件 2. 读取文件内容 2.1 逐行读取 2.2 一次性读取整个文件 3. 写入文件内容 3.1 覆盖写入 3.2 追加写入 4. 文件测试操作 4.1 文件测试运算符 5. 文件路径操作 5.1 文件路径处理模块 5.2 获取文件路径信息 6. 文…...

稀疏之美:在Mojo模型中实现特征的稀疏表示

稀疏之美&#xff1a;在Mojo模型中实现特征的稀疏表示 在机器学习领域&#xff0c;特征的稀疏表示是一种高效的数据编码方式&#xff0c;尤其适用于具有大量特征和缺失值的数据集。稀疏表示使用特殊的数据结构来存储和处理数据&#xff0c;从而减少内存占用和提高计算效率。Mo…...

UNIX设计哲学:一切皆文件的原理与应用

1. UNIX 设计哲学的核心&#xff1a;"一切皆文件"在计算机操作系统的演进历程中&#xff0c;UNIX系统以其简洁而强大的设计哲学独树一帜。作为一名长期与UNIX/Linux系统打交道的开发者&#xff0c;我深刻体会到"一切皆文件"这一理念对整个计算机领域产生的…...

智能家居设备变“聪明”的秘密:我是如何给ESP32摄像头加上本地人脸识别功能的

给ESP32摄像头装上“大脑”&#xff1a;我的本地人脸识别开发实战 去年夏天&#xff0c;我家门铃摄像头频繁误报的困扰让我萌生了一个想法——为什么不能让它像人类一样"认出"熟面孔&#xff1f;市面上的智能摄像头要么依赖云端计算导致延迟高&#xff0c;要么隐私保…...

【大数据】离线数仓核心组件:Hive 架构解析与进阶操作指南

Hive 是基于 Hadoop 的数据仓库工具&#xff0c;主要用于解决海量结构化日志的数据统计问题。它提供了一套类 SQL 的查询语言 HiveQL&#xff0c;通过将 SQL 语句转换为运行在 Hadoop 集群上的 MapReduce 或 Spark 任务&#xff0c;大幅降低了大数据分析的工程门槛。 目录 一、…...

米哈游面经规律总结:我看了大量面经,挂掉的人都卡在同一层

米哈游面经规律总结&#xff1a;我看了大量面经&#xff0c;挂掉的人都卡在同一层 offer直通车-校招大礼包获取&#xff1a;入口 几乎所有挂掉的人&#xff0c;都挂在同一个地方 最近整理米哈游的面经&#xff0c;看到一个反复出现的场面。 面试官问&#xff1a;"说说智…...

从4.3(a)到2.1再到4.3(a):一次App Store审核“过山车”的实战复盘与破局

1. 当4.3(a)突然降临&#xff1a;一场没有预警的"Spam"风暴 那天早上我像往常一样打开邮箱&#xff0c;看到苹果审核团队的回复时&#xff0c;整个人瞬间清醒——醒目的"Guideline 4.3(a) - Design - Spam"像一盆冷水浇下来。这已经是我们的RPG游戏第三次提…...

项目经理面试必备:5 大核心问题拆解与高通过率回答策略

1. 项目经理面试的核心问题解析 面试官抛出"请描述你负责过的一个典型项目"时&#xff0c;往往不是想听流水账。我当年第一次面试时就犯过这个错误&#xff0c;花了10分钟详细描述项目背景&#xff0c;结果面试官直接打断&#xff1a;"所以你到底做了什么&#…...

关于爬虫源影视资源设置

1.首先目前的omnibox的版本已更新到2.0.3版本,之前的配置会丢失,原本的资源都会无法使用,这里以新版本增加数据源,看完以下教程再下载脚本。 2.添加爬虫源,这里以猫眼资源为主测试: 增加脚本之后,点击保存即可! 复制以下脚本,修复改site_api即可,一般公用的资源都是正…...

颠覆视频剪辑:JianYingApi让自动化剪辑效率提升80%

颠覆视频剪辑&#xff1a;JianYingApi让自动化剪辑效率提升80% 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 在短视频内容爆发的时代&#xff0c;视频创作者面临着三重核心痛点&…...

开源项目配置管理:ComfyUI-Manager路径优化与跨环境部署指南

开源项目配置管理&#xff1a;ComfyUI-Manager路径优化与跨环境部署指南 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various…...

告别公式迁移难题:3步实现LaTeX到Word的无缝转换体验

告别公式迁移难题&#xff1a;3步实现LaTeX到Word的无缝转换体验 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 问题溯源&#xff1a;学术公式迁…...