- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
目录
|
子项
|
功能说明
|
扩展说明
|
config
|
|
框架基础配置目录
|
|
|
weight
|
预训练权重模型存储目录
|
各种神经网络的模型文件,下载后存储在该目录下
|
|
classification_model_enum.py
|
列举出当前分类框架,目前支持的分类神经网络模型。
枚举中的神经网络名称,与配置文件中的名称一样,表示加载对应的网络模型。
|
后续新增网络时,需在该枚举类中注入
|
project
|
|
分类框架下的项目应用模块,详细使用参考后续项目应用模块。
|
分类项目目录名称如:验证码识别,简单手写数字识别
|
universe
|
|
框架通用模块主目录。
|
后续通用的功能,均可放在该目录下。
|
|
data_load
|
基础数据加载类
|
加载训练数据,验证数据,预测数据等
|
|
data_load_service.py
|
基于配置文件,加载配置路径下的基础数据,返回对应的张量信息。
不同的分类任务,用户构建DataSet模式不同,该模块提供函数,接收用户构建的DataSet对象。做统一数据加载处理。
|
目前支持目录模式加载。
|
|
normalize_adapter.py
|
归一化配置类
|
其他新增网络的归一化参数,可配置在此类中。
|
|
model
|
定义目前框架中,支持的所有分类网络模型。
|
新增网络放入到model_category目录下。
|
|
model_service.py
|
分类网络模型的对外暴露类,基于配置文件,可指定具体使用哪个分类网络,项目应用时,只需调用moel_service。
moel_service.py:代理者的角色。类似于java中的代理模式。
|
新增的分类网络,要注入到moel_service.py中,对所有分类网络的统一拦截,加日志等功能可在model_service中实现。
|
runner_config
|
|
训练配置的目录,定义训练过程中的一些配置信息。
|
定义如优化器,学习率调整,损失函数等。
深度学习运行前,配置相关的模块均可放在该目录下。
|
|
optimizer_adapter.py
|
优化器适配类,根据配置文件,可返回一个具体的优化器。
|
常用优化器如:Adam,AdamW,SGD,AdaBelief,Ranger
|
|
loss_function_adapter.py
|
自定义损失函数适配类,可基于配置文件,返回一个具体的损失函数。
|
损失函数也可使用 PyTorch中提供的。
|
|
scheduler_adapter.py
|
学习率调整适配类,可基于配置文件,返回具体的调整类。
|
扩展支持ReduceLROnPlateau,StepLR,MultiStepLR, SGDR
|
utils
|
utils.py
|
常用的工具函数,如加载文件,全连接处理等
|
一些项目通用的工具类函数,如保存acc,loss等记录。
|
key字段
|
解释
|
参考值
|
model_name
|
分类网络模型名称,如mobilenetv3,efficientnet_advprop,具体值参考ClassificationModelEnum枚举类中定义的值
|
efficientnet_advprop
|
GPU_ID
|
多GPU时,设置的GPU编码,无GPU时,该值设置为空
|
0
|
class_number
|
目标输出分类数量,如简单数字识别,输出值10
|
10
|
random_seed
|
随机数种子
|
43
|
num_workers
|
DataLoad加载数据时,是否启用多个线程加载数据
|
4
|
train_path
|
训练图像对应的存储目录地址
|
"data/train"
|
val_path
|
验证图像对应的存储目录地址
|
"data/val"
|
test_path
|
预测图像对应的存储目录地址
|
"data/test"
|
pretrained
|
预加载模型权重的文件存储路径,无值时,设置为空‘’
|
'../../out/mobilenetv3.pth'
|
save_best_only
|
训练时,是否只保存最优的模型
|
true
|
target_img_size
|
图像转换为网络模型对应的目标图像尺寸,如mobilenet v3,接收图为:[224,224]
|
[224,224]
|
learning_rate
|
初始化学习率值
|
0.001
|
batch_size
|
训练时,DataLoad一次加载数据的批次数量
|
64
|
test_batch_size
|
预测时,DataLoad一次加载数据的批次数量
|
1
|
epochs
|
训练总次数
|
100
|
optimizer
|
优化器类型,枚举值:Ranger,AdaBelief,SGD,AdamW,Adam
|
SGD
|
scheduler
|
学习衰减率调整策略,枚举值:default,step,SGDR,multi
|
default
|
loss
|
损失函数,若使用pytorch提供的损失函数,可不管该值。使用框架提供的需配置。枚举值:CE,CE2,Focalloss
|
|
early_stop_patient
|
提前结束,当后续训练轮次出现N次,acc小于历史值时,就提前结束
|
7
|
model_path
|
模型预测时,训练生成的权重文件存储路径
|
'../../out/mobilenetv3_e22_0.97.pth'
|
dropout
|
为了防止过拟合,设置值,表示随机多少比例的神经元失效,取值服务[0,1]
|
0.5
|
class_weight
|
训练数据类别分配不均匀,防止过拟合等情况出现,设置的惩罚值。默认值设置为None。
|
调用:n.CroEntropyLoss(),设置不同类别的惩罚值,三个类别,如[0.8,0.1,0.1]。
|
weight_decay
|
在与梯度做运算时,当前权重先减去一定比例的大小。
|
0.01
|
目录
|
子项
|
功能说明
|
扩展说明
|
mnist_caassify
|
|
分类项目主目录
|
表示一个具体的分类项目,本例为简单手写数字识别
|
|
data
|
该项目的训练数据,验证数据,推理数据等
|
与训练流程,推理流程等相关的数据,包括图片和label等配置信息。
|
|
output
|
项目的输出结果
|
训练过程中的acc,loss图,模型权重文件,预测结果等,全部输出到这个目录。
|
|
scripts
|
构建训练数据,验证数据等的脚本文件
|
基于脚本文件,生产对应的训练数据,验证数据到data目录下。主要功能如:
1.生产图片,生成label;
2.解析文件,并基于图像做一定的前期调整。清洗训练数据,提前加工部分数据。
|
|
service
|
分类任务,主要的项目应用模块,用户自定义代码存储目录。
|
|
|
xxx_config.py
|
分类项目的配置文件,每一个分类项目都存在一个单独的配置文件。
|
常用的配置参数,如指定使用什么模型,图像大小调整等,具体参考案例的配置文件
|
|
xxx_dataset.py
|
分类项目的数据加载类
|
每个分类任务的数据加载模式不一定完全一样,该模块属于用户自定义模块。可做图像的预处理,最终将图像转换为张量信息。
|
|
xxx_runner_service.py
|
分类项目的运行类
|
包括配置运行参数,训练流程定义,预测流程处理等。
|
|
train.py,prectict.py
|
训练类,预测类
|
主要是加载配置文件,获取训练数据,加载网络模型,初始化训练过程的配置参数,调用训练函数开始训练。
|
框架设计与案例参考文档:
最后此篇关于Easy-Classification-分类框架设计的文章就讲到这里了,如果你想了解更多关于Easy-Classification-分类框架设计的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
.NET 框架:4.5.1 我在 Blend for visual studio 2015 中遇到一个奇怪的错误,我找不到它的来源。 如果我在 VS 中打开我的 WPF 解决方案,它会加载并运行良好。
我经常遇到这样的问题,与 Hierarchical RESTful URL design 非常相似 假设该服务仅提供用户上传文档。 POST, GET /accounts PUT, DELETE /a
在 Rails 应用程序中,我使用 devise 来管理我的用户,而我用来销毁 session 的链接不再有效。它正在工作,现在我添加了事件管理员,但没有。 我的链接是 :delete, :clas
我已经坚持了超过 24 小时,试图按照此处发布的其他解决方案进行操作,但我无法使其正常工作。我是 Rails 新手,需要帮助! 我想让我的/users/edit 页面正常工作,以便我可以简单地更改用户
Devise 在以下情况下不会使用户超时: 用户登录,关闭选项卡,然后在超时 + X 分钟内重新访问该 URL。用户仍处于登录状态。 如果选项卡已打开并且稍后刷新/单击,则超时可以正常工作。这意味着
我想使用这样的 slider 我希望该 slider 根据提供给它的值进行相应调整。到目前为止,我只能应用具有渐变效果的背景,但无法获得这种效果。请通过提供样式代码来帮助我。
您应该为每种方法创建一个请求/响应对象,还是应该为每个服务创建一个? 如果我在所有方法中使用它,我的服务请求对象中将只有 5 个不同的东西,因为我对几乎所有方法使用相同的输入。 响应对象将只有一个字典
我正在尝试在 REST 中对实体的附件进行建模。假设一个缺陷实体可以附加多个附件。每个附件都有描述和一些其他属性(上次修改时间、文件大小...)。附件本身是任何格式的文件(jpeg、doc ...)
我有以下表格: Blogs { BlogName } BlogPosts { BlogName, PostTitle } 博客文章同时建模一个实体和一个关系,根据 6nf(根据第三个宣言)这是无效的。
如果 A 类与 B、C 和 D 类中的每一个都有唯一的交互,那么交互的代码应该在 A 中还是在 B、C 和 D 中? 我正在编写一个小游戏,其中许多对象可以与其他对象进行独特的交互。例如,EMP点击
关于如何记住我与 Omniauth 一起工作似乎有些困惑。 根据这个wiki ,您需要在 OmniauthCallbacksController 中包含以下内容: remember_me(user)
设计问题: 使用 非线程安全 组件(集合,API,...)在/带有 多线程成分 ... 例子 : 组件 1 :多线程套接字服务器谁向消息处理程序发送消息... 组件 2 :非线程安全 消息处理程序 谁
我们目前正在设计一个 RESTful 应用程序。我们决定使用 XML 作为我们的基本表示。 我有以下关于在 XML 中设计/建模应用程序数据的问题。 在 XML 中进行数据建模的方法有哪些?从头开始然
我正在设计一个新的 XSD 来从业务合作伙伴那里获取积分信息。对于每笔交易,合作伙伴必须提供至少一种积分类型的积分值。我有以下几点:
设计支持多个版本的 API 的最佳方法是什么。我如何确保即使我的数据架构发生更改(微小更改),我的 api 的使用者也不会受到影响?任何引用架构、指南都非常有用。 最佳答案 Mark Nottingh
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
我想用 php 创建一个网站,其工作方式与 https://www.bitcoins.lc/ 相同。确实,就每个页面上具有相同布局但内容会随着您更改链接/页面而改变而言,我如何在 php 中使用lay
我有一个关于编写 Swing UI 的问题。如果我想制作一个带有某些选项的软件,例如在第一个框架上,我有三个按钮(新建、选项、退出)。 现在,如果用户单击新按钮,我想将框架中的整个内容更改为其他内容。
我正在尝试找出并学习将应用程序拥有的一堆Docker容器移至Kubernetes的模式和最佳实践。诸如Pod设计,服务,部署之类的东西。例如,我可以创建一个其中包含单个Web和应用程序容器的Pod,但
我是一名优秀的程序员,十分优秀!