赞
踩
可以在GPU上跑通的代码(含数据集),我已经放到了以下链接,
链接:https://pan.baidu.com/s/1gM4KTbRNHzfbGEGgvEjXAw
提取码:e7wu
在服务器上跑
先创建一个虚拟环境
conda create -n GDN python==3.7
conda activate GDN
按照read me一步一步安装包。
### Requirements
* Python >= 3.6
* cuda == 10.2
* [Pytorch==1.5.1](https://pytorch.org/)要去这个网站复制下载命令
* [PyG: torch-geometric==1.5.0](https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html)
### Install packages
# run after installing correct Pytorch package
bash install.sh
安装
pip install scikit-learn==1.0.2
matplotlib == 3.1.1
numpy == 1.19.4
pandas == 0.25.1
bash run.sh cpu swat
接下来按照两个readme一步步来
因为data/swat/train.csv是从process_swat.py生成的,所以先用现有的处理好的msl数据集试验一下环境是否已配好。
bash run.sh cpu msl
# or with gpu
bash run.sh <gpu_id> msl # e.g. bash run.sh 1 msl
We use part of msl dataset(refer to telemanom) as demo example.
# put your dataset under data/ directory with the same structure shown in the data/msl/
data
|-msl
| |-list.txt # the feature names, one feature per line
| |-train.csv # training data
| |-test.csv # test data
|-your_dataset
| |-list.txt
| |-train.csv
| |-test.csv
| ...
*.csv中的第一列将被视为索引列。
*.csv中的列序列不需要匹配list.txt中的序列。我们将根据list.txt中的顺序重新排列数据列。
*test.csv应该有一个名为“attack”的列,其中包含被攻击或未被攻击的地面真相标签(0/1)(0:正常,1:被攻击)
# using gpu
bash run.sh <gpu_id> <dataset>
# or using cpu
bash run.sh cpu <dataset>
You can change running parameters in the run.sh.
SWaT and WADI datasets can be requested from iTrust
下面是处理数据的readme
The directory contains the main preprocessing code for SWaT and WADI.
转化SWaT_Dataset_Normal_v0/SWaT_Dataset_Attack_v0.xlsx成为csv文件,重命名’Normal’ / ‘Normal/Attack’列为’attack’ with label 0/1
重命名修改后的文件为’swat_train.csv’和’swat_test.csv’,作为process_swat.py的输入文件
运行脚本python process_swat.py
处理数据集
运行脚本会生成train.csv和test.csv,需要自己copy到data/swat/train.csv或者更改一下生成保存的路径。
还要自己创建一下list.txt,模仿msl的。
基于attack描述文件,在WADI_attackdata.csv中添加 0/1 ‘attack’列,并重命名文件为’WADI_attackdata_labelled.csv’
运行脚本python process_wadi.py
We have provided part of the processed data via link.
我们在此链接中提供了部分已处理的数据,这是经过process_swat的csv文件,可以直接放到data/swat/train.csv.
终于运行成功啦!
bash run.sh cpu swat
出现问题:
只能在cpu上跑,在GPU上报错,是因为pytorch和cuda版本和显卡算力不符,显卡是最新的,算力很强,得用新版本的pytorch和cuda。
pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=11.3 -c pytorch -c conda-forge
又报错,是因为pytorch-geometric包的版本和pytorch,cuda又不对应了,可以看到刚才安装install.sh中
先查看一下我服务器上的cuda版本,刚才安装的pytorch是1.10.0版本的
去官网https://pytorch-geometric.com/whl安装对应的pytorch-geometric包版本
注意torch-geometric务必是1.5.0版本的!!!
运行程序,又有错误,是因为1.8.0以上版本的pytorch的six文件有所变化
解决:
找到提示的dataloader.py文件中的
替换为
import collections.abc as container_abcs
int_classes = int
string_classes = str
以上,可以正常运行。
以下是另一篇论文的配置,别看了……
IOT报错
这是因为前面下载的pytorch-geometric的版本不对,重新下载2.0.0版本的,就可以了。
再运行程序,又报错了
是因为我程序中用的cuda序号5,都改成0.
终于成功啦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。