Level protection and deep learning

2024-04-17 08:28
文章标签 level deep learning protection

本文主要是介绍Level protection and deep learning,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.模拟生成的数据

import randomdef generate_data(level, num_samples):if level not in [2, 3, 4]:return Nonedata_list = []for _ in range(num_samples):# 构建指定等级的数据data = str(level)for _ in range(321):data += str(random.randint(0, 9))data_list.append(data)return data_listdef save_data_to_txt(data, filename):with open(filename, 'a') as f:for item in data:f.write("%s\n" % item)print(f"Data saved to {filename}")# 创建一个文件用于存储所有数据
output_filename = "combined_data.txt"# 生成等级为2的一万条数据,并保存到文件
level_2_data = generate_data(2, 100)
save_data_to_txt(level_2_data, output_filename)# 生成等级为3的一万条数据,并保存到文件
level_3_data = generate_data(3, 100)
save_data_to_txt(level_3_data, output_filename)# 生成等级为4的一万条数据,并保存到文件
level_4_data = generate_data(4, 100)
save_data_to_txt(level_4_data, output_filename)

将生成数据和对应的指标的表结合修改

import os
import pandas as pddef multiply_lists(list1, list2):if len(list1) != len(list2):return Noneresult = []result.append(str(list2[0]))for i in range(1, len(list1)):result.append(str(list1[i] * list2[i]))return "".join(result) def save_data_to_txt(data, filename):try:with open(filename, 'a') as f:f.write(data + "\n")print(f"数据已保存到 {filename}")except Exception as e:print(f"保存数据时发生错误:{e}")# 读取Excel文件
df = pd.read_excel('F:\python level Guarantee 2.0\LG.xlsx', header=None)
# 将每一行转换为列表
rows_as_lists = df.values.tolist()
print(rows_as_lists)
level2 = rows_as_lists.pop()
print(rows_as_lists)
level3 = rows_as_lists.pop()
print(rows_as_lists)
level4 = rows_as_lists.pop()output_filename = "F:/python level Guarantee 2.0/test.txt"with open('F:/python level Guarantee 2.0/combined_data.txt', 'r', encoding='utf-8') as f:data_str_list = [line.strip() for line in f]for i in data_str_list:data = list(i)if int(data[0]) == int(level2[0]):result = multiply_lists(data, level2)save_data_to_txt(result, output_filename)if int(data[0]) == int(level3[0]):result = multiply_lists(data, level3)save_data_to_txt(result, output_filename)if int(data[0]) == int(level4[0]):result = multiply_lists(data, level4)save_data_to_txt(result, output_filename)

2.trian

import torch
from torch import nn
from torch.utils.data import Dataset, DataLoader
import numpy as np
from torch.utils.tensorboard import SummaryWriter
DEVICE = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')class Model(nn.Module):def __init__(self):super(Model, self).__init__()self.net = nn.Sequential(nn.Linear(321, 159),nn.ReLU(),nn.Linear(159,81),nn.ReLU(),nn.Linear(81, 3),)def forward(self, input):return self.net(input)class DataRemake(Dataset):def __init__(self, path):self.data, self.label = self.transform(path)self.len = len(self.label)def __getitem__(self, index):label = self.label[index]data = self.data[index]return label, datadef __len__(self):return self.lendef transform(self, path):data_tensor_list = []label_list = []with open(path, mode='r', encoding='utf-8') as fp:data_str_list = [line.strip() for line in fp]for i in data_str_list:data = list(i)label = int(data[0])# 转换标签为 one-hot 编码if label == 2:label = [1, 0, 0]elif label == 3:label = [0, 1, 0]elif label == 4:label = [0, 0, 1]else:raise ValueError(f"未知的标签值:{label}")data = data[1:]# 检查数据的长度并进行处理if len(data) != 321:# 如果数据长度不是321,进行填充或截断操作if len(data) < 322:# 填充数据,这里假设用0填充data.extend([0] * (321 - len(data)))else:# 截断数据data = data[:321]data = np.array(list(map(float, data))).astype(np.float32)label = np.array(label).astype(np.float32)data = torch.from_numpy(data)label = torch.from_numpy(label)data_tensor_list.append(data)label_list.append(label)return data_tensor_list, label_list# 路径可能需要根据实际情况修改
train_data = DataRemake('result1.txt')
train_dataloader = DataLoader(dataset=train_data, batch_size=10)net = Model().to(DEVICE)
optimizer = torch.optim.SGD(net.parameters(), lr=0.005)
loss_func = nn.MSELoss().to(DEVICE)list_pre = []writer = SummaryWriter('logs')# 在每个epoch结束时,记录损失值
for epoch in range(1000):for labels, datas in train_dataloader:labels = labels.to(DEVICE)datas = datas.to(DEVICE)output = net(datas)loss = loss_func(output, labels)optimizer.zero_grad()loss.backward()optimizer.step()if epoch % 100 == 0:list_pre.append(output)print('epoch:{} \n loss:{}'.format(epoch, round(loss.item(), 10)))# 记录损失值到TensorBoardwriter.add_scalar('Loss/train', loss.item(), epoch)# 记得在训练结束后关闭SummaryWriter
writer.close()# 保存模型
torch.save(net.state_dict(), 'model.pth')

在这里插入图片描述

3.test

import torch
from torch import nn
from torch.utils.data import DataLoader
from sklearn.metrics import accuracy_score
from torch.utils.data import Dataset, DataLoader
import numpy as npDEVICE = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')class Model(nn.Module):def __init__(self):super(Model, self).__init__()self.net = nn.Sequential(nn.Linear(321, 159),nn.ReLU(),nn.Linear(159,81),nn.ReLU(),nn.Linear(81, 3),)def forward(self, input):return self.net(input)class DataRemake(Dataset):def __init__(self, path):self.data, self.label = self.transform(path)self.len = len(self.label)def __getitem__(self, index):label = self.label[index]data = self.data[index]return label, datadef __len__(self):return self.lendef transform(self, path):data_tensor_list = []label_list = []with open(path, mode='r', encoding='utf-8') as fp:data_str_list = [line.strip() for line in fp]for i in data_str_list:data = list(i)label = int(data[0])# 转换标签为 one-hot 编码if label == 2:label = [1, 0, 0]elif label == 3:label = [0, 1, 0]elif label == 4:label = [0, 0, 1]else:raise ValueError(f"未知的标签值:{label}")data = data[1:]# 检查数据的长度并进行处理if len(data) != 321:# 如果数据长度不是321,进行填充或截断操作if len(data) < 322:# 填充数据,这里假设用0填充data.extend([0] * (321 - len(data)))else:# 截断数据data = data[:321]data = np.array(list(map(float, data))).astype(np.float32)label = np.array(label).astype(np.float32)  # 转换标签数据类型为浮点型data = torch.from_numpy(data)label = torch.from_numpy(label)data_tensor_list.append(data)label_list.append(label)return data_tensor_list, label_list# 加载模型
model = Model().to(DEVICE)
model.load_state_dict(torch.load('model.pth'))
model.eval()  # 将模型设置为评估模式# 准备测试数据
test_data = DataRemake('test.txt')  # 假设测试数据的路径为'test_data.txt'
test_dataloader = DataLoader(dataset=test_data, batch_size=10)# 初始化用于存储预测结果和真实标签的列表
predicted_labels = []
true_labels = []# 迭代测试集,并进行预测
with torch.no_grad():for labels, datas in test_dataloader:labels = labels.to(DEVICE)datas = datas.to(DEVICE)output = model(datas)# 将输出转换为预测的标签_, predicted = torch.max(output, 1)# 将预测结果和真实标签添加到列表中predicted_labels.extend(predicted.cpu().numpy())true_labels.extend(labels.cpu().numpy())# 计算准确率
accuracy = accuracy_score(np.argmax(true_labels, axis=1), predicted_labels)  # 使用 np.argmax 获取真实标签的类别
print(f"模型在测试集上的准确率为: {accuracy}")
# import torch# # 加载模型
# model = Model().to(DEVICE)
# model.load_state_dict(torch.load('model.pth'))
# model.eval()  # 将模型设置为评估模式# # 准备输入数据
# input_data = torch.randn(10, 321).to(DEVICE)  # 示例数据,需要根据实际情况调整形状和数据类型# # 使用模型进行预测
# with torch.no_grad():
#     output = model(input_data)# # 获取预测结果
# _, predicted_labels = torch.max(output, 1)# print("预测结果:", predicted_labels)

在这里插入图片描述

这篇关于Level protection and deep learning的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/911284

相关文章

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

MiniCPM-V: A GPT-4V Level MLLM on Your Phone

MiniCPM-V: A GPT-4V Level MLLM on Your Phone 研究背景和动机 现有的MLLM通常需要大量的参数和计算资源,限制了其在实际应用中的范围。大部分MLLM需要部署在高性能云服务器上,这种高成本和高能耗的特点,阻碍了其在移动设备、离线和隐私保护场景中的应用。 文章主要贡献: 提出了MiniCPM-V系列模型,能在移动端设备上部署的MLLM。 性能优越:

Deep Ocr

1.圈出内容,文本那里要有内容.然后你保存,并'导出数据集'. 2.找出deep_ocr_recognition_training_workflow.hdev 文件.修改“DatasetFilename := 'Test.hdict'” 310行 write_deep_ocr (DeepOcrHandle, BestModelDeepOCRFilename) 3.推理test.hdev

PAT (Advanced Level) Practice——1011,1012

1011:  链接: 1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn) 题意及解题思路: 简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。 同时还需要记录每一次选择的是W,T还是L

Learning Memory-guided Normality for Anomaly Detection——学习记忆引导的常态异常检测

又是一篇在自编码器框架中研究使用记忆模块的论文,可以看做19年的iccv的论文的衍生,在我的博客中对19年iccv这篇论文也做了简单介绍。韩国人写的,应该是吧,这名字听起来就像。 摘要abstract 我们解决异常检测的问题,即检测视频序列中的异常事件。基于卷积神经网络的异常检测方法通常利用代理任务(如重建输入视频帧)来学习描述正常情况的模型,而在训练时看不到异常样本,并在测试时使用重建误

Learning Temporal Regularity in Video Sequences——视频序列的时间规则性学习

Learning Temporal Regularity in Video Sequences CVPR2016 无监督视频异常事件检测早期工作 摘要 由于对“有意义”的定义不明确以及场景混乱,因此在较长的视频序列中感知有意义的活动是一个具有挑战性的问题。我们通过在非常有限的监督下使用多种来源学习常规运动模式的生成模型(称为规律性)来解决此问题。体来说,我们提出了两种基于自动编码器的方法,以

COD论文笔记 Adaptive Guidance Learning for Camouflaged Object Detection

论文的主要动机、现有方法的不足、拟解决的问题、主要贡献和创新点如下: 动机: 论文的核心动机是解决伪装目标检测(COD)中的挑战性任务。伪装目标检测旨在识别和分割那些在视觉上与周围环境高度相似的目标,这对于计算机视觉来说是非常困难的任务。尽管深度学习方法在该领域取得了一定进展,但现有方法仍面临有效分离目标和背景的难题,尤其是在伪装目标与背景特征高度相似的情况下。 现有方法的不足之处: 过于

One-Shot Imitation Learning

发表时间:NIPS2017 论文链接:https://readpaper.com/pdf-annotate/note?pdfId=4557560538297540609&noteId=2424799047081637376 作者单位:Berkeley AI Research Lab, Work done while at OpenAI Yan Duan†§ , Marcin Andrychow

Introduction to Deep Learning with PyTorch

1、Introduction to PyTorch, a Deep Learning Library 1.1、Importing PyTorch and related packages import torch# supports:## image data with torchvision## audio data with torchaudio## text data with t