import numpy as np
from matplotlib import pyplot as plt
import torch.optim
from torch import nn
from torch.utils.data.dataset import Dataset
from torch.utils.data import DataLoader
from scapy.all import *
from utils import get_tcp_udp_slices
from model import TCDNN
class PcapDataset(Dataset):
def __init__(self, file_paths, classes):
headers = [get_tcp_udp_slices(rdpcap(x)) for x in file_paths]
self.packets = torch.from_numpy(np.concatenate(headers)).type(torch.float)
expanded_classes = [np.empty(len(x)) for x in headers]
for i, ie in enumerate(classes):
expanded_classes[i].fill(ie)
self.classes = torch.from_numpy(np.concatenate(expanded_classes)).type(torch.long)
# Shuffle
for i in range(len(self.classes)):
index1 = np.random.randint(0, len(self.classes))
index2 = np.random.randint(0, len(self.classes))
if index1 == index2:
continue
temp = self.packets[index1]
self.packets[index1] = self.packets[index2]
self.packets[index2] = temp
temp = self.classes[index1]
self.classes[index1] = self.classes[index2]
self.classes[index2] = temp
def __len__(self):
return len(self.packets)
def __getitem__(self, item):
return self.packets[item], self.classes[item]
CLASS_QQ = 0
CLASS_WX = 1
CLASS_HTTPS = 2
dataset_train = PcapDataset(["./dataset/qq_train.pcap",
"./dataset/wx_train.pcap",
"./dataset/https_train.pcap"],
[CLASS_QQ, CLASS_WX, CLASS_HTTPS])
dataset_test = PcapDataset(["./dataset/qq_test.pcap",
"./dataset/wx_test.pcap",
"./dataset/https_test.pcap"],
[CLASS_QQ, CLASS_WX, CLASS_HTTPS])
batch_size = 64
dataloader_train = DataLoader(dataset_train, batch_size)
dataloader_test = DataLoader(dataset_test, batch_size)
device = "cuda"
model = TCDNN().to(device)
loss_fn = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1e-03)
def train(dataloader: DataLoader,
model: nn.Module,
loss_fn: nn.Module,
optimizer: torch.optim.Optimizer):
model.train()
for i, (x, y) in enumerate(dataloader):
x, y = x.to(device), y.to(device)
pred = model(x)
loss = loss_fn(pred, y)
loss.backward()
optimizer.step()
optimizer.zero_grad()
# if i % 100 == 0:
# print(f"Loss: {loss.item():>5f} {i * len(x)}/{len(dataloader.dataset)}")
accuracies = []
losses = []
def test(dataloader: DataLoader,
model: nn.Module,
loss_fn: nn.Module):
model.eval()
loss = 0
correct = 0
with torch.no_grad():
for (x, y) in dataloader:
x, y = x.to(device), y.to(device)
pred = model(x)
loss += loss_fn(pred, y).item()
correct += (pred.argmax(1) == y).type(torch.float).sum().item()
loss /= len(dataloader)
correct /= len(dataloader.dataset)
accuracies.append(correct)
losses.append(loss)
print(f"Test Accuracy: {100 * correct:>0.1f}% | Test Loss: {loss}")
epoch_count = 300
for i in range(epoch_count):
print(f"Epoch {i + 1}")
train(dataloader_train, model, loss_fn, optimizer)
test(dataloader_test, model, loss_fn)
torch.save(model.state_dict(), "./model/tcdnn.pth")
plt.plot(np.arange(0, epoch_count), accuracies, c="royalblue")
plt.title("Accuracy")
plt.xlabel("Epoch")
plt.ylabel("Accu")
plt.show()
plt.plot(np.arange(0, epoch_count), losses, c="firebrick")
plt.title("Loss")
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.show()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通。 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip 基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip 基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip 基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip
资源推荐
资源详情
资源评论
收起资源包目录
基于深度学习DNN网络的加密流量分类项目python源码(含数据集+模型文件).zip (27个子文件)
utils.py 2KB
项目提交最终源码备份
utils.py 2KB
visualization.py 2KB
dataset
qq_train.pcap 1.54MB
wx_test.pcap 478KB
https_test.pcap 563KB
https_train.pcap 3.47MB
qq_test.pcap 330KB
wx_train.pcap 1.78MB
model.py 529B
capture.py 2KB
model
tcdnn.pth 84KB
train.py 4KB
项目介绍.md 354B
visualization.py 2KB
dataset
qq_train.pcap 1.54MB
wx_test.pcap 478KB
https_test.pcap 563KB
https_train.pcap 3.47MB
qq_test.pcap 330KB
wx_train.pcap 1.78MB
model.py 529B
capture.py 2KB
model
tcdnn.pth 84KB
项目提交最终源码备份.zip 6.89MB
train.py 4KB
项目介绍.md 354B
共 27 条
- 1
资源评论
- zhuyizhi7892024-09-09资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
.whl
- 粉丝: 3769
- 资源: 4525
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功