blob: 8daa45f92b65f9d630767591270a949f3aab2a7d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
时间序列异常检测实验工具脚本使用说明
======
说明
------
本工具用于进行时间序列异常检测模型实验,基于PyTorch框架实现的深度学习训练脚本。
为了方便实验创新,本工具封装了dataloader、训练流程、测试流程、评估流程、日志记录与模型导出功能,
并内置了部分数据集、预处理算法、模型与评估方法。
在进行创新实验时,可以仅修改数据集、预处理算法、模型与评估方法四个内容中的一个就开始快速实验,节省实验的冗余代码开发。
数据集、预处理算法、模型与评估方法四部分内容进行自定义时,请按照指定格式设计。
实验的参数请通过config.ini文件进行设置。
如需特殊接口,请联系开发人员郑延钦,邮箱:[email protected]
安装
------
环境依赖
python==3.9.7
* eventlet==0.33.3
* gevent==22.10.2
* loguru==0.6.0
* numpy==1.21.2
* pandas==1.4.1
* scikit_learn==1.2.2
* torch==1.10.2
* tqdm==4.63.1
python第三方库安装方法
pip3 install -r requirements.txt
配置文件参数说明
------
config.ini文件用于配置相关设置,包括数据集、算法模型、预处理方法、评估方法、模型参数加载、实验基本参数与自定义参数。
[Dataset]
# 填写数据集名称(文件夹名称),同时训练测试多个数据集,请用逗号隔开
# 请确保数据集已经按照要求格式放置在./dataset路径下
name=SWAT
[Method]
# 填写模型名称(文件名称,不用写".py"),同时训练测试多个算法,请用逗号隔开
# 请确保模型文件已经按照要求格式放置在./model路径下
# 模型名称请全部由字母组成
name=MtadGatAtt
[Preprocess]
# 填写预处理方法名称(文件名称,不用写".py")
# 请确保预处理方法文件已经按照要求格式放置在./preprocess路径下
name=standardization
[Evaluation]
# 填写评估方法名称(文件名称,不用写".py"),同时使用多个评估方法,请用逗号隔开
# 请确保评估方法文件已经按照要求格式放置在./evaluation路径下
name=f1,f1pa,ftad,affiliation
[ModelPath]
# 模型加载先前参数,请用"模型名_数据集名"作为变量名
# 路径名称从TSAD文件夹下开始写相对路径,或者直接写绝对路径
MtadGatAtt_SWAT=none
[BaseParameters]
# train表示是否训练模型,请填写true或者false,为false时,仅测试模型
train=true
# epoch表示训练轮数,请填写正整数
epochs=20
# batch-size表示每个batch的尺寸,请填写正整数
batch_size=32
# learning-rate表示学习率,建议不要高于0.001
learning_rate=1e-4
# device表示使用的设备,可以选auto、cpu、cuda,其中auto代表自动判断,有gpu使用gpu,没有则使用cpu;选gpu时需要选择gpu序号,例如cuda:0
device=auto
[CustomParameters]
# 此处可以填入自定义参数,数量不限,用于填写特殊需求输入,例如模型文件所需的所有外部参数,构建数据集的部分参数
# 输入数据长度input_size,即截取数据的窗口长度
input_size=60
# 输出数据长度output_size
output_size=1
# 截取数据的窗口的移动步长
step=1
# 数据集文件(csv)中,第一行是否需要忽略(第一行为列名的话需要忽略)
del_column_name=true
# 数据集文件(csv)中,第一列是否是时间戳
time_index=true
启动与停止
------
通过运行main.py脚本文件,启动程序。可以选择 start | stop | daemon 三个参数。
* start是启动普通进程,前台运行,日志实时输出并本地记录,可输出训练进度条。
* stop是停止当前实验进程。
* daemon是启动守护进程,后台运行程序,日志仅保存本地,日志不包含训练进度条内容。
如无输入参数,默认选择start参数。使用方法如下所示:
python3 main.py start/stop/daemon
本工具会输出实验日志、所有模型的最佳检测标签、模型参数文件到./records路径下。
数据集文件配置说明
-----
所有数据集文件,均存放在./dataset路径下。
数据集可以包含子数据集,数据以csv格式文件存储,必须包含train.csv和test.csv。
* train.csv和test.csv的数据内容必须全为数值型数据,第一行可保留列名。
* train.csv和test.csv如包含时间戳,请置于第一列。
* test.csv最后一列为异常标签,建议用0表示正常数据,1表示异常数据(如标签含义相反,本工具会自动识别并反转标签)。
数据集路径示例如下:
└── dataset
├── 数据集1名称
│ ├── 子数据集1名称
│ │ ├── train.csv
│ │ ├── test.csv
│ ├── 子数据集2名称
...
│ └── 子数据集m名称
├── 数据集2名称
│ ├── train.csv
│ └── test.csv
...
└── 数据集n名称
预处理文件配置说明
----
所有预处理方法的文件,均存放在./preprocess路径下,并写入__init__文件。
每个预处理方法单独建立一个文件,新建预处理方法的命名全部采用英文和数字组成,文件名称直接使用预处理方法的命名。
文件内需包含MyDataset类,MyDataset类继承torch.utils.data.Dataset,必须定义__len__、__getitem__两个方法。
各个方法的具体设计要求,详见./preprocess/template.py文件。
模型文件配置说明
-----
所有模型结构的文件,需存放于./method路径下,并写入__init__文件。
每个模型单独建立一个文件,新建模型的命名全部采用英文和数字组成,文件名称直接使用模型的命名。
文件内需包含Model类,Model类继承nn.Module,必须定义forward方法、loss方法和detection方法。
各个方法的具体设计要求,详见./method/template.py文件。
评估方法文件配置说明
-----
所有评估方法的文件,需存放于./evaluation路径下,并写入__init__文件。
每个评估方法单独建立一个文件,新建评估方法的命名全部采用英文和数字组成,文件名称直接使用模型的命名。
文件内需定义evaluate方法,方法的输入输出设计详见./evaluation/template.py文件。
|