加密流量分类torch实践5:TrafficClassificationPandemonium项目更新3

加密流量分类torch实践5:TrafficClassificationPandemonium项目更新3

更新日志

代码已经推送开源至露露云的github,如果能帮助你,就给鼠鼠点一个star吧!!!

  我的CSDN博客

  我的Github Page博客

3/23日更新(此部分上节已经介绍)

  当前更新对运行项目是无影响的,也就是说如果你是仅仅使用项目而不进行扩展的话,此处更新是透明的,对当前仓库版本的代码可以不进行同步。
  代码已经推送开源至露露云的github,如果能帮助你,就给鼠鼠点一个star吧!!!

模型结构更新

简要由原先各个模型独立抽象出了一个base_model模型基类,由该基类继承nn.Module类,定义抽象方法forwarddata_trans,方便不同模型进行各自的数据变换

  1. 为什么要改?

    dataloader给模型输入的数据格式是固定死的,给每一个模型设定不同的dataloader违背了项目多个模型统一代码原则,而不同模型对于数据的输入样式是不同的,为了适用于之后会加入项目的模型,抽象出一个基类,设定一个data_trans抽象方法,每一个模型都根据模型的输入去实现该方法即可,这样做到了不更改dataloader的目的,做到代码复用

  2. dataloader给定的数据样式?

    分析日志可以给出以下各个维度下dataloader给定的数据shape

    [2024-03-23 17:19:38,802 INFO] 是否使用 GPU 进行训练, cuda
    [2024-03-23 17:19:44,781 INFO] 成功初始化模型.
    [2024-03-23 17:19:44,814 INFO] pcap 文件大小, torch.Size([404, 1, 1024]); seq文件大小:torch.Size([404, 128, 1]); sta文件大小: torch.Size([404, 1024]); label 文件大小: torch.Size([404])
    [2024-03-23 17:19:44,851 INFO] pcap 文件大小, torch.Size([404, 1, 1024]); seq文件大小:torch.Size([404, 128, 1]); sta文件大小: torch.Size([404, 1024]); label 文件大小: torch.Size([404])
    [2024-03-23 17:19:44,851 INFO] 成功加载数据集.
    

    负载pay: [batch_size,1,m*n]

    包长seq: [batch_size,seq_len,1]

    统计sta: [batch_size,sta_len]

    • m*n是预处理的前m个包的前n个字节,这里目前写的是4*256也就是1024
    • seq_len是预处理的前ip_length个包长,这里目前是128
    • sta_len是预处理的统计维度,在10号更新的数据下是26

3/28日更新

增加模型二维卷积神经网络CNN2d

  1. 由于前期中的使用继承改善了模型结构,这里只需要写一个py文件就可以了

    """
    @Description: 二维卷积神经网络
    """
    from math import sqrtimport torch
    import torch.nn as nn
    from models.base_model import BaseModelclass Cnn2d(BaseModel):def __init__(self, num_classes=12):super(Cnn2d, self).__init__()# 卷积层+池化层self.features = nn.Sequential(nn.Conv2d(kernel_size=5,in_channels=1,out_channels=32,stride=1,padding=2), # b,32,32,32nn.MaxPool2d(kernel_size=2), # b,32,16,16nn.Conv2d(kernel_size=5,in_channels=32,out_channels=64,stride=1,padding=2), # b,64,16,16nn.MaxPool2d(kernel_size=2), # b,64,8,8)# 全连接层self.classifier = nn.Sequential(# 29*64nn.Flatten(),nn.Linear(in_features=64 * 64, out_features=1024),  # 1024:64*64nn.Dropout(0.5),nn.Linear(in_features=1024, out_features=num_classes))def forward(self, pay, seq, sta):pay, seq, sta = self.data_trans(pay, seq, sta)pay = self.features(pay)  # 卷积层, 提取特征pay = self.classifier(pay)  # 分类层, 用来分类return pay, Nonedef data_trans(self, x_payload, x_sequence, x_sta):# 转换x_0,x_1,x_2 = x_payload.shape[0],x_payload.shape[1],x_payload.shape[2]x_payload = x_payload.reshape(x_0,x_1,int(sqrt(x_2)),int(sqrt(x_2)))return x_payload, x_sequence, x_stadef cnn2d(model_path, pretrained=False, **kwargs):"""CNN 1D model architectureArgs:pretrained (bool): if True, returns a model pre-trained model"""model = Cnn2d(**kwargs)if pretrained:checkpoint = torch.load(model_path)model.load_state_dict(checkpoint['state_dict'])return modeldef main():a = sqrt(1024)x_pay = torch.rand(8,1,1024)cnn = Cnn2d()x = cnn(x_pay,x_pay,x_pay)if __name__=="__main__":main()
    

    模型结构:

    两个卷积+池化的组合,卷积核大小都是5X5,池化层的核大小都是2X2

  2. train_test_model.py中,改动

    from utils.set_config import setup_config
    # from models.cnn1d import cnn1d as train_model
    # from models.app_net import app_net as train_model
    from models.cnn2d import cnn2d as train_model
    

    image-20240328212456471

即可!

  1. 开始训练!

    [2024-03-28 21:20:53,317 INFO] Epoch: [47][2/4], Loss 0.0001 (0.0005), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:53,345 INFO] Epoch: [47][3/4], Loss 0.0000 (0.0005), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:53,544 INFO]  * Prec@1 100.000
    [2024-03-28 21:20:53,716 INFO] Epoch: [48][1/4], Loss 0.0001 (0.0002), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:53,723 INFO] Epoch: [48][3/4], Loss 0.0000 (0.0003), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:54,066 INFO] Epoch: [48][0/4], Loss 0.0000 (0.0000), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:54,105 INFO] Epoch: [48][1/4], Loss 0.0014 (0.0007), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:54,146 INFO] Epoch: [48][2/4], Loss 0.0001 (0.0005), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:54,153 INFO] Epoch: [48][3/4], Loss 0.0000 (0.0005), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:54,331 INFO]  * Prec@1 100.000
    [2024-03-28 21:20:54,537 INFO] Epoch: [49][1/4], Loss 0.0080 (0.0055), Prec@1 99.219 (99.609)
    [2024-03-28 21:20:54,558 INFO] Epoch: [49][3/4], Loss 0.0000 (0.0058), Prec@1 100.000 (99.505)
    [2024-03-28 21:20:54,880 INFO] Epoch: [49][0/4], Loss 0.0000 (0.0000), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:54,929 INFO] Epoch: [49][1/4], Loss 0.0001 (0.0001), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:54,970 INFO] Epoch: [49][2/4], Loss 0.0013 (0.0005), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:54,982 INFO] Epoch: [49][3/4], Loss 0.0000 (0.0005), Prec@1 100.000 (100.000)
    [2024-03-28 21:20:55,147 INFO]  * Prec@1 100.000
    
  2. 修改测试文件相应的配置项,并且切换为测试模式

    Model Classification report:
    [2024-03-28 21:26:19,166 INFO] ------------------------------
    [2024-03-28 21:26:19,172 INFO]               precision    recall  f1-score   supportqq       1.00      1.00      1.00        90微信       1.00      1.00      1.00       206淘宝       1.00      1.00      1.00       108accuracy                           1.00       404macro avg       1.00      1.00      1.00       404
    weighted avg       1.00      1.00      1.00       404[2024-03-28 21:26:19,175 INFO] 
    Prediction Confusion Matrix:
    [2024-03-28 21:26:19,175 INFO] ------------------------------
    [2024-03-28 21:26:19,845 INFO]            Predicted:          qq   微信   淘宝
    Actual: qq         90    0    0微信          0  206    0淘宝          0    0  108
    

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

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

相关文章

iOS - Runtime-API

文章目录 iOS - Runtime-API1. Runtime应用1.1 字典转模型1.2 替换方法实现1.3 利用关联对象给分类添加属性1.4 利用消息转发机制,解决方法找不到的异常问题 2. Runtime-API2.1 Runtime API01 – 类2.1.1 动态创建一个类(参数:父类&#xff0…

【Pt】马灯贴图绘制过程 02-制作锈迹

目录 一、边缘磨损效果 二、刮痕效果 三、边缘磨损与刮痕的混合 四、锈迹效果 本篇效果: 一、边缘磨损效果 将智能材质“Iron Forge Old” 拖入图层 打开“Iron Forge Old” 文件夹,选中“Sharpen”(锐化),增大“…

2010-2021年银行网点及员工信息数据

2010-2021年银行网点及员工信息数据 1、时间:2010-2021年 2、来源:整理自csmar 3、指标:银行代码、股票代码、银行中文简称、统计截止日期、分行数量、机构网点数量、其中:境内网点数量、其中:境外网点数量、在职员…

Linux集群

目录 一、什么是集群? 二、 搭建(tomcatnginxkeepalived)集群 一、JDK安装 二、Tomcat安装 三、Nginx 3.1、什么是Nginx? 3.2、下载Nginx 3.3、安装 四、搭建NginxTomcat的实现集群 配置nginx.comf文件 五:Nginx搭建图片服务器 …

【Java程序设计】【C00392】基于(JavaWeb)Springboot的校园生活服务平台(有论文)

基于(JavaWeb)Springboot的校园生活服务平台(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过…

VUE 实现文件夹上传(保留目录结构)

代码:https://gitee.com/xproer/up6-vue-cli 1.引入up6组件 2.配置接口地址 接口地址分别对应:文件初始化,文件数据上传,文件进度,文件上传完毕,文件删除,文件夹初始化,文件夹删除&…

2024年做视频号小店是不是明智之举?这篇文章告诉你答案

大家好,我是电商糖果 视频号自从去年电商的知名度打开之后,不少朋友都盯上这块肥肉。 要知道现在可是短视频电商的时代,抖音,快手靠做电商赚了不少钱。 视频号又怎么会放过这次的风口呢? 也有不少想做电商的朋友问…

灯哥驱动器端口讲解----foc电机驱动必看

CS:是电流采样的引脚,三项采样电流,现在只给了两路,另外一路算出来就行了 in:三项电流输入,驱动电机使用。 en:没有用 SDA,SCL:I2C的引脚用来读取编码器的计数值 tx,rx:引出来了一路串口,没有用…

西安 专业nft开发NFT寄售-NFT抢购-NFT盲盒-NFT空投

在数字化时代的今天,非同质化代币(NFT)正成为数字资产领域的新宠。作为区块链技术的一种应用,NFT 赋予数字资产独一无二的身份和价值,从而在艺术、游戏、音乐、收藏品等领域掀起了一股热潮。西安,这座千年古…

LeetCode-热题100:42. 接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入: height [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 解释: 上面是由数组 [0,1,0,2,1,…

2024社工考试报名详细流程来啦✅

2024社工考试报名详细流程来啦✅ ⏰社工报名时间:4月1日-4月18日 👇🏻2024年社工报名流程 1、打开人事考试网,点击左侧【网上报名】 2、没有用户名的点击新用户注册,有用户名的直接输入用户名密码登录即可。 3、注册好…

24计算机考研调剂 | 【官方】北京科技大学

北京科技大学 考研调剂招生信息 招生专业: 085404(计算机技术) 081200(计算机科学与技术) 调剂要求:(调剂基本分数) 我中心将在教育部“全国硕士生招生调剂服务系统”&#xff08…

It takes two (搜索)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 3 4 AAAO AAAA AAAA 输出 NO 思路: 根据题目意思,如果存在的 A 联通不可以成为 矩形,输出 NO,否则输出 YES 这道题看数据范…

网络套接字补充——UDP网络编程

五、UDP网络编程 ​ 1.对于服务器使用智能指针维护生命周期;2.创建UDP套接字;3.绑定端口号,包括设置服务器端口号和IP地址,端口号一般是2字节使用uint16_t,而IP地址用户习惯使用点分十进制格式所以传入的是string类型…

中国国际通信大会2024|中国通信展览会|通信展览会

中国国际通信大会2024|中国通信展览会|通信展览会 中国国际信息通信展览会(ICT展)是亚太地区最具影响力的信息通信技术盛会之一。每年一度的ICT展汇聚了来自全球各行各业的专业人士,为各领域的科技公司、创新企业以及技术爱好者们提供一个难得…

包子凑数(蓝桥杯,闫氏DP分析法)

题目描述: 小明几乎每天早晨都会在一家包子铺吃早餐。 他发现这家包子铺有 N 种蒸笼,其中第 i 种蒸笼恰好能放 Ai 个包子。 每种蒸笼都有非常多笼,可以认为是无限笼。 每当有顾客想买 X 个包子,卖包子的大叔就会迅速选出若干笼…

2024 ccfcsp认证打卡 2023 03 02 垦田计划

import java.util.*;public class Main {public static void main(String[] args) {Scanner input new Scanner(System.in);int N 100100; // 定义一个较大的常数Nlong[] t new long[N]; // 存储任务的耗时long[] c new long[N]; // 存储每块区域投入资源的数量long[] c…

蚂蚁庄园今日答案

蚂蚁庄园是一款爱心公益游戏,用户可以通过喂养小鸡,产生鸡蛋,并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料,使用鸡饲料喂鸡之后,会可以获得鸡蛋,可以通过鸡蛋来进行爱心捐赠。其中&#…

国内外主要气象卫星介绍

NOAA AVHRR介绍 美国NOAA极轨卫星从1970年12月第一颗发射以来,近40年连续发射了18颗,最新的NOAA-19也将在2009年发射升空。NOAA卫星共经历了5代,目前使用较多的为第五代NOAA卫星,包括NOAA-15—NOAA-18;作为备用的第四…

请查收!一份Go代码优化实用指南

Go非常适合构建高性能应用,本文通过对整型切片求和代码的优化,介绍了常用的Go代码优化方案,从而让代码获得更好的性能。原文: Optimizing Go Code: A Practical Guide 代码优化是软件开发流程中的关键步骤,从而确保程序高效运行、…