使用perming加速训练可预测的模型

监督学习模型的训练流程

perming是一个主要在支持CUDA加速的Windows操作系统上架构的机器学习算法,基于感知机模型来解决分布在欧式空间中线性不可分数据集的解决方案,是基于PyTorch中预定义的可调用函数,设计的一个面向大规模结构化数据集的通用监督学习器,v1.4.2之后支持检测验证损失的变化间隔并提前停止训练。

pip install perming --upgrade
pip install perming>=1.4.2

数据清洗后的特征输入

在常见的自动化机器学习管线中,一组原始结构化数据集是经过一系列函数式的数据清洗操作后,得到了固定特征维度的特征数据集,但是该特征数据集没有专用的线性不可分检测方式以及相应的线性可分空间指定,所以需要用户指定潜在的线性可分空间的大小以及一些组合的学习参数。以下是以perming.Box为例展开机器学习训练的案例:

import numpy
import pandas
df = pandas.read_csv('../data/bitcoin_heist_data.csv')
df = df.to_numpy()
labels = df[:,-1] # input
features = df[:,1:-1].astype(numpy.float64) # input

此处下载数据集

加载perming并配置超参数

import perming # v1.6.0
main = perming.Box(8, 29, (60,), batch_size=256, activation='relu', inplace_on=True, solver='sgd', learning_rate_init=0.01)
main.print_config()
MLP((mlp): Sequential((Linear0): Linear(in_features=8, out_features=60, bias=True)(Activation0): ReLU(inplace=True)(Linear1): Linear(in_features=60, out_features=29, bias=True))
)
Out[1]: OrderedDict([('torch -v', '1.7.1+cu101'),('criterion', CrossEntropyLoss()),('batch_size', 256),('solver',SGD (Parameter Group 0dampening: 0lr: 0.01momentum: 0nesterov: Falseweight_decay: 0)),('lr_scheduler', None),('device', device(type='cuda'))])

参考这里查看每个模型的参数文档

从numpy.ndarray多线程加载数据集

main.data_loader(features, labels, random_seed=0)
# 参考main.data_loader.__doc__获取更多默认参数的信息

训练阶段和加速验证

main.train_val(num_epochs=1, interval=100, early_stop=True)
# 参考`main.train_val.__doc__`获取更多默认参数的信息,例如tolerance, patience
Epoch [1/1], Step [100/3277], Training Loss: 2.5657, Validation Loss: 2.5551
Epoch [1/1], Step [200/3277], Training Loss: 1.8318, Validation Loss: 1.8269
Epoch [1/1], Step [300/3277], Training Loss: 1.2668, Validation Loss: 1.2844
Epoch [1/1], Step [400/3277], Training Loss: 0.9546, Validation Loss: 0.9302
Epoch [1/1], Step [500/3277], Training Loss: 0.7440, Validation Loss: 0.7169
Epoch [1/1], Step [600/3277], Training Loss: 0.5863, Validation Loss: 0.5889
Epoch [1/1], Step [700/3277], Training Loss: 0.5062, Validation Loss: 0.5086
Epoch [1/1], Step [800/3277], Training Loss: 0.3308, Validation Loss: 0.4563
Epoch [1/1], Step [900/3277], Training Loss: 0.3079, Validation Loss: 0.4204
Epoch [1/1], Step [1000/3277], Training Loss: 0.4298, Validation Loss: 0.3946
Epoch [1/1], Step [1100/3277], Training Loss: 0.3918, Validation Loss: 0.3758
Epoch [1/1], Step [1200/3277], Training Loss: 0.4366, Validation Loss: 0.3618
Process stop at epoch [1/1] with patience 10 within tolerance 0.001

使用内置的返回项来预测评估模型

main.test()
# main.test中的默认参数只在一维标签列的分类问题中作用
# 因为损失衡量函数广泛且众多,以torcheval中的策略为主
loss of Box on the 104960 test dataset: 0.3505959212779999.
Out[2]: OrderedDict([('problem', 'classification'),('accuracy', '95.99942835365853%'),('num_classes', 29),('column', ('label name', ('true numbers', 'total numbers'))),('labels',{'montrealAPT': [100761, 104857],'montrealComradeCircle': [100761, 104857],'montrealCryptConsole': [100761, 104857],'montrealCryptXXX': [100761, 104857],'montrealCryptoLocker': [100761, 104857],'montrealCryptoTorLocker2015': [100761, 104857],'montrealDMALocker': [100761, 104857],'montrealDMALockerv3': [100761, 104857],'montrealEDA2': [100761, 104857],'montrealFlyper': [100761, 104857],'montrealGlobe': [100761, 104857],'montrealGlobeImposter': [100761, 104857],'montrealGlobev3': [100761, 104857],'montrealJigSaw': [100761, 104857],'montrealNoobCrypt': [100761, 104857],'montrealRazy': [100761, 104857],'montrealSam': [100761, 104857],'montrealSamSam': [100761, 104857],'montrealVenusLocker': [100761, 104857],'montrealWannaCry': [100761, 104857],'montrealXLocker': [100761, 104857],'montrealXLockerv5.0': [100761, 104857],'montrealXTPLocker': [100761, 104857],'paduaCryptoWall': [100761, 104857],'paduaJigsaw': [100761, 104857],'paduaKeRanger': [100761, 104857],'princetonCerber': [100761, 104857],'princetonLocky': [100761, 104857],'white': [100761, 104857]}),('loss',{'train': 0.330683171749115,'val': 0.3547004163265228,'test': 0.3505959212779999}),('sorted',[('montrealAPT', [100761, 104857]),('montrealComradeCircle', [100761, 104857]),('montrealCryptConsole', [100761, 104857]),('montrealCryptXXX', [100761, 104857]),('montrealCryptoLocker', [100761, 104857]),('montrealCryptoTorLocker2015', [100761, 104857]),('montrealDMALocker', [100761, 104857]),('montrealDMALockerv3', [100761, 104857]),('montrealEDA2', [100761, 104857]),('montrealFlyper', [100761, 104857]),('montrealGlobe', [100761, 104857]),('montrealGlobeImposter', [100761, 104857]),('montrealGlobev3', [100761, 104857]),('montrealJigSaw', [100761, 104857]),('montrealNoobCrypt', [100761, 104857]),('montrealRazy', [100761, 104857]),('montrealSam', [100761, 104857]),('montrealSamSam', [100761, 104857]),('montrealVenusLocker', [100761, 104857]),('montrealWannaCry', [100761, 104857]),('montrealXLocker', [100761, 104857]),('montrealXLockerv5.0', [100761, 104857]),('montrealXTPLocker', [100761, 104857]),('paduaCryptoWall', [100761, 104857]),('paduaJigsaw', [100761, 104857]),('paduaKeRanger', [100761, 104857]),('princetonCerber', [100761, 104857]),('princetonLocky', [100761, 104857]),('white', [100761, 104857])])])

保存模型参数到本地

main.save(con=False, dir='../models/bitcoin.ckpt')
# 使用main.unique和main.indices来建立标签的双向转换

加载模型参数到预训练算法

main.load(con=False, dir='../models/bitcoin.ckpt')

加载模型后可以通过更改组合训练参数,例如优化器等来微调模型的训练。模型训练文件见Multi-classification Task.ipynb

其他常用的模型初始化设置

main = perming.Box(10, 3, (30,), batch_size=8, activation='relu', inplace_on=True, solver='sgd', criterion="MultiLabelSoftMarginLoss", learning_rate_init=0.01)
# 用于解决多标签排序问题,在用户定义标签的双向转换之后,data_loader能检测划分数据集并封装

使用如下访问该软件的测试和算法:

git clone https://github.com/linjing-lab/easy-pytorch.git
cd easy-pytorch/released_box

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java 进阶篇】MySQL多表查询之外连接详解

在MySQL数据库中,多表查询是一种常见且强大的功能,允许您在多个表之间执行联接操作,从而检索、过滤和组合数据。在本篇博客中,我们将深入探讨多表查询的一种类型,即外连接(Outer Join)&#xff…

医疗小程序开发:技术门槛高?

随着移动互联网的普及,医疗行业也逐渐转向线上。医疗小程序开发成为了很多企业和医疗机构关注的焦点。但是,对于一些技术小白来说,可能会觉得医疗小程序开发技术门槛高,无从下手。实际上,使用乔拓云平台进入后台&#…

C理解(一):内存与位操作

本文主要探讨C语言的内存和为操作操作相关知识。 冯诺依曼结构和哈佛结构 冯诺依曼结构:数据和代码放在一起,便于读取和修改,安全性低 哈佛结构是:数据和代码分开存放,安全性高,读取和修麻烦 内存 内存是用来存储全局变量、局…

求第n项的因子数量

最近笔试期间遇到一个难题,现在终于解决了,感谢各路大佬的指点,我在这里分享一下结果。 小红拿到一个数列满足: f(1) a; f(2) b; f(i) f(i-1) * f(i-2) * c^d 题目要求计算出第n项的因子数…

DPDK系列之三十一DPDK的并行机制简介

一、并行机制 什么是并行机制?这个很多开发者的眼中,其实是模糊的。可能说起来头头是道,但是细一查究竟,发现都是飘在空中的东西。在前面的“多核和多CPU编程”中,对并行机制已经进行了较深入的分析,这里只…

Prometheus+Grafana监控K8S集群(基于K8S环境部署)

文章目录 一、环境信息二、部署前准备工作三、部署Prometheus监控系统四、部署Node_exporter组件五、部署Kube_state_metrics组件六、部署Grafana可视化平台七、Grafana可视化显示Prometheus收集数据八、Grafana添加监控模板九、拓展 一、环境信息 1、服务器及K8S版本信息&…

【数据挖掘】2021年 Quiz 1-3 整理 带答案

目录 Quiz 1Quiz 2Quiz 3Quiz 1 Problem 1 (30%). Consider the training data shown below. Here, A A A and B B B</

Nim游戏

891. Nim游戏 - AcWing题库 全部异或起来&#xff0c;如果不为零&#xff0c;则可以一步使其变为0&#xff1a; 设异或和为x&#xff0c;x的最高位为第k位&#xff0c;令第k位为1的a[i]变为a[i]^x&#xff0c;a[i]^x < a[i]&#xff0c;这样就可以使异或和为0。 如此往复最…

目标检测如何演变:从区域提议和 Haar 级联到零样本技术

目录 一、说明 二、目标检测路线图 2.1 路线图&#xff08;一般&#xff09; 2.2 路线图&#xff08;更传统的方法&#xff09; 2.3 路线图&#xff08;深度学习方法&#xff09; 2.4 对象检测指标的改进 三、传统检测方法 3.1 维奥拉-琼斯探测器 (2001) 3.2 HOG探测器…

el-table实现穿梭功能

第一种 <template><el-row :gutter"20"><el-col :span"10"><!-- 搜索 --><div class"search-bg"><YcSearchInput title"手机号" v-model"search.phone" /><div class"search-s…

EasyX趣味化编程note2,绘制基本图形

创意化编程&#xff0c;让编程更有趣 今天介绍的仍为比较简单的效果&#xff0c;由浅入深来进行学习 介绍每个函数都会附上代码和运行结果&#xff0c;感兴趣的大家可以复制粘贴运行一下看看效果&#xff0c;也可以自己进行改动&#xff0c;非常好玩且加深印象。 上节课的知识…

idea Springboot在线商城系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 在线商城系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&…

机器学习笔记:Huber Loss smooth L1 loss

1 Huber loss 1.1 介绍 Huber Loss是回归问题中的一种损失函数&#xff0c;它结合了均方误差MSE和绝对误差MAE的特点。 Huber Loss在误差较小的时候是平方损失&#xff0c;而在误差较大的时候是线性损失。因此&#xff0c;它在处理有噪声的数据时&#xff0c;尤其是存在离群点…

手机搜狗输入法,输入拼音时如何分割拼音,调出“分词“功能,如何微信或QQ使用发送按钮而不是换行?

背景 有时候打字&#xff0c;输入 “xian” 的时候我们的意图是 “xi’an” &#xff08;西安&#xff09;&#xff0c;或者输入 “yue” 的时候希望是 “yu’e”&#xff08;余额&#xff09; 如何输入这个分隔符 ’ 呢&#xff1f; 设置方法 默认页面如图 希望设置成 点…

家电行业 EDI:Miele EDI 需求分析

Miele是一家创立于1899年的德国公司&#xff0c;以其卓越的工程技术和不懈的创新精神而闻名于世。作为全球领先的家电制造商&#xff0c;Miele的经营范围覆盖了厨房、洗衣和清洁领域&#xff0c;致力于提供高品质、可持续和智能化的家电产品。公司的使命是为全球消费者创造更美…

【Java 进阶篇】深入理解 SQL 聚合函数

在 SQL 数据库中&#xff0c;聚合函数是一组强大的工具&#xff0c;用于处理和分析数据。它们可以帮助您对数据进行统计、计算总和、平均值、最大值、最小值等操作。无论您是数据库开发者、数据分析师还是希望更好地了解 SQL 数据库的用户&#xff0c;了解聚合函数都是非常重要…

PHP 创建 MySQL 表

目录 PHP 创建 MySQL 表 使用 MySQLi 和 PDO 创建 MySQL 表 实例 (MySQLi - 面向对象) 实例 (MySQLi - 面向过程) 实例 (PDO) PHP 创建 MySQL 表 一个数据表有一个唯一名称&#xff0c;并有行和列组成。 使用 MySQLi 和 PDO 创建 MySQL 表 CREATE TABLE 语句用于创建 MySQ…

CSS详细基础(四)显示模式

本帖开始介绍CSS中更复杂的内容 目录 一.显示模式 1.行内元素 2.块级元素 3.行内块元素 二.背景样式 一.显示模式 顾名思义&#xff0c;在CSS中&#xff0c;元素主要有3种显示模式&#xff1a;行内元素、块级元素、行内块元素~ 所谓块级元素&#xff0c;指的是该元素在…

C程序的编译过程及生成文件详解

想必大家在使用c语言编程时&#xff0c;编译后文件夹中会生成各类不同的文件&#xff0c;这些文件的作用是什么呢&#xff0c;整个编译的过程又是怎样实现的呢&#xff1f;下面我将逐一介绍。 一、C程序的编译过程 1、预处理 预处理器会根据预处理指令&#xff0c;如 #inclu…

ChatGPT AIGC 非常实用的AI工具集合大全

实战AI 工具箱 AIGC ChatGPT 职场案例60集, Power BI 商业智能 68集, 数据库Mysql8.0 54集 数据库Oracle21C 142集, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.csdn.cn/zBytu