论文下载:https://ieeexplore.ieee.org/document/7899588
代码下载:https://github.com/echowei/DeepTraffic
数据处理工具包使用方法:https://github.com/yungshenglu/USTC-TK2016
作者博士毕业论文收录于知网:基于深度学习的网络流量分类及异常检测方法研究
————————————————
原文链接:https://blog.youkuaiyun.com/caiguanhong/article/details/109695999
在进行代码复现前首先要对数据集进行预处理,预处理部分在其他文章有很多详细介绍,在此不做赘述,本文只简单介绍在复现代码traffic_cnn.py时自己遇到的一些问题。
作者的代码是在tensorflow1.x下写的,我的版本时tf2.9,所以会出现的问题较多。
1.input_data不存在
将import input_data换成import tensorflow.examples.tutorials.mnist.input_data ,若没有tenfowflow.examples,则先在pycharm中新建一个文件
import tensorflow as tf
print(tf.__file__)
查看你的路径。
我的路径是:D:\Anaconda3\envs\TF2.4.0\lib\site-packages\tensorflow,在路径中创建examples文件夹,并将下载好的tutorials包复制进去即可。(tutorials包在网上有很多资源,自行百度下载)
2.报错DATA_DIR = sys.argv[1] IndexError: list index out of range,
这表明没有传入参数,在传入参数DATA_DIR、CLASS_NUM、TRAIN_ROUND时,可以直接写成
DATA_DIR="D:\\code\\tensorflow\\deeptrafic\\DeepTrafficmaster\\1.malware_traffic_classification\\4.TrainAndTest\\5_Mnist"
CLASS_NUM = 10
TRAIN_ROUND = 400
这种形式,也可以在pycharm中自己设置,点击“Run”菜单下的"Edit Configurations..."命令,在parameter中输入三个参数的值,每个参数输入完后,需要有一个空格。
3.报错 CLASS_NUM = int(sys.argv[2]) ValueError: invalid literal for int() with base 10: '='
将上面的代码
DATA_DIR = sys.argv[1]
CLASS_NUM = int(sys.argv[2])
TRAIN_ROUND = int (sys.argv[3])
中的int去掉,变为:
DATA_DIR = sys.argv[1]
CLASS_NUM = sys.argv[2]
TRAIN_ROUND = sys.argv[3]
5.报错 sess = tf.InteractiveSession() AttributeError: module 'tensorflow' has no attribute 'InteractiveSession'
将代码改为
sess = tf.compat.v1.InteractiveSession()
6.palceholder报错
Tf2.x中placeholder应该使用tf.compat.v1.placeholder,并在开头import tensorflow as tf后面加上tf.compat.v1.disable_eager_execution()
还有一些问题基本上都是tf1.x中的函数转换为tf2.x的问题,百度都可以找到。