用keras搭建一个简单的一维卷积神经网络

2023-05-16

编程环境:

python 3.6.8

tensorflow 1.12.3 点击下载离线包

matplotlib 3.1.2

numpy 1.17.4

数据集说明:

我所采用的数据集,是我自己构建的一个网络流量数据集,借鉴了Wei Wang等人端到端的思想,

但是处理成的数据集却不同于他们的MNIST型数据集,而是采用的npy进行存储。

由于只是用于测试模型搭建,该数据集仅包含了一部分数据(Chat流量),

原数据来源于加拿大网络安全研究所的公开数据集(ISCX2016)

直接上代码:

训练模型部分:

from tensorflow import keras
from tensorflow.python.keras.layers import Dense, Dropout, Activation, Flatten, Conv1D, MaxPool1D
import matplotlib.pyplot as plt
import numpy as np
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# 数据集路径
dataset_path = 'dataset.npy'
# 接入softmax的全连接层维数
dense_num = 6
# 保存的模型文件路径
model_file = 'model/cnn_6traffic_model.h5'

# [training_images, training_labels,
# validation_images, validation_labels,
# testing_images, testing_labels]
data = np.load(dataset_path, allow_pickle=True)

x_train, y_train, x_test, y_test = np.array(data[0]), np.array(data[1]), np.array(data[2]), np.array(data[3])
print(x_train.shape, y_train.shape)

# 一维化
X_train = x_train.reshape(-1, 784, 1)
# print(X_train)
# X_train = X_train.astype('float32')
X_test = x_test.reshape(-1, 784, 1)
# X_test = X_test.astype('float32')


# 将像素值做归一化,也就是从0~255的取值压缩到0~1之间
# X_train /= 255
# X_test /= 255

# 构建模型
model = keras.models.Sequential()

# 卷积层1 + relu
# 25 卷积核的数量 即输出的维度
# 3 每个过滤器的长度
model.add(Conv1D(32, 3, activation='relu', input_shape=(784, 1), padding="same"))
# 池化层1
model.add(MaxPool1D(pool_size=3, strides=3))

# 卷积层2 + relu
model.add(Conv1D(64, 3, strides=1, activation='relu', padding='same'))
# 池化层2
model.add(MaxPool1D(pool_size=3, strides=3))

# 神经元随机失活
model.add(Dropout(0.25))
# 拉成一维数据
model.add(Flatten())
# 全连接层1
model.add(Dense(1024))
# 激活层
model.add(Activation('relu'))

# 随机失活
model.add(Dropout(0.4))
# 全连接层2
model.add(Dense(dense_num))
# Softmax评分
model.add(Activation('softmax'))

# 查看定义的模型
model.summary()

# 自定义优化器参数
# rmsprop = keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)

# lr表示学习速率
# decay是学习速率的衰减系数(每个epoch衰减一次)
# momentum表示动量项
# Nesterov的值是False或者True,表示使不使用Nesterov momentum
sgd = keras.optimizers.SGD(lr=0.01, decay=1e-4, momentum=0.9, nesterov=True)

model.compile(optimizer='sgd', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 训练
history = model.fit(X_train, y_train, epochs=10, batch_size=1000,
                    verbose=1, validation_data=[X_test, y_test])

model.save(model_file)
print(history.params)

 

注:神经网络初涉,有啥问题请直接指出,谢谢!有流量识别领域的小伙伴欢迎打扰!相互交流!

说明:鉴于很多人问我数据集的问题,但写这个文章时所用的仅有“Chat”的流量的数据集我已经删除了,所以我在这里提供了包含有我已处理好的六类网络流量的npy数据集,有需要的自取(下载地址),鉴于之前的数据集是二分类的,但我提供的数据集的六个标签,所以代码中需要做出相应修改,我已将修改后的代码附上了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用keras搭建一个简单的一维卷积神经网络 的相关文章

  • 3D 卷积神经网络输入形状

    我在使用 3D CNN 提供数据时遇到问题Keras http keras io和 Python 对 3D 形状进行分类 我有一个文件夹 其中包含一些 JSON 格式的模型 我将这些模型读入 Numpy 数组 模型为 25 25 25 表示
  • 结合两个 CNN

    我想在 Keras 中将两个 CNN 合并为一个 我的意思是我希望神经网络拍摄两张图像并在单独的 CNN 中处理每一张图像 然后将它们连接在一起进入扁平化层并使用全连接层来做最后的工作 我做了什么 Start With First Bran
  • 为 Keras 编写自定义数据生成器

    我将每个数据点存储在 npy 文件中 其中shape 1024 7 8 我想通过类似的方式将它们加载到 Keras 模型中ImageDataGenerator 所以我编写并尝试了不同的自定义生成器 但它们都不起作用 这是我改编的一个this
  • tf.keras.utils.image_dataset_from_directory,但标签来自 csv?

    请告诉我哪里出错了 我正在研究 Kaggle 狗品种分类挑战 我想尝试 one hot 编码与标签编码 图像未在图像目录中拆分 因此我无法将 推断 与 tf keras utils image dataset from directory
  • 在 Tensorflow 2.0 中的简单 LSTM 层之上添加 Attention

    我有一个由一个 LSTM 和两个 Dense 层组成的简单网络 如下所示 model tf keras Sequential model add layers LSTM 20 input shape train X shape 1 trai
  • Keras 通过设置种子获得不同的结果[重复]

    这个问题在这里已经有答案了 在keras中 每次运行都有很高的方差和不稳定的性能 为了解决这个问题 根据https keras io getting started faq how can i obtain reproducible res
  • 错误 - AttributeError:“DirectoryIterator”对象在 keras 的自动编码器设计中没有属性“ndim”

    我是 Python 3 5 的新手 我正在尝试编写一个简单的自动编码器 它将在 60 张苹果图像的数据集上进行训练 并尝试重建根中给出的图像 我使用了以下代码 from keras layers import Input Dense fro
  • 了解 YOLO 是如何训练的

    我试图了解 YOLO v2 是如何训练的 为此 我使用这个 keras 实现https github com experiencor keras yolo2 https github com experiencor keras yolo2在
  • 为什么不使用均方误差来解决分类问题?

    我正在尝试使用 LSTM 解决一个简单的二元分类问题 我正在尝试找出网络的正确损失函数 问题是 当我使用二元交叉熵作为损失函数时 与使用均方误差 MSE 函数相比 训练和测试的损失值相对较高 经过研究 我发现二元交叉熵应该用于分类问题 MS
  • Tensorflow 不分配完整的 GPU 内存

    Tensorflow 默认分配所有 GPU 内存 但我的新设置实际上只有 9588 MiB 11264 MiB 我预计大约 11 000MiB 就像我的旧设置一样 张量流信息在这里 from tensorflow python client
  • ValueError:没有为“dense_input”提供数据

    我正在使用以下简单的代码使用tensorflow加载csv并使用keras执行建模 无法弄清楚这个错误 import tensorflow as tf train dataset fp tf keras utils get file fna
  • ValueError:请使用“Layer”实例初始化“TimeDistributed”层

    我正在尝试构建一个可以在音频和视频样本上进行训练的模型 但出现此错误ValueError Please initialize TimeDistributed layer with a Layer instance You passed Te
  • 在相同任务上,Keras 比 TensorFlow 慢

    我正在使用 Python 运行斩首 DCNN 本例中为 Inception V3 来获取图像特征 我使用的是 Anaconda Py3 6 和 Windows7 使用 TensorFlow 时 我将会话保存在变量中 感谢 jdehesa 并
  • 异常:加载数据时 URL 获取失败

    我正在尝试设置我的机器来运行 Tensorflow 2 我从未使用过 Tensorflow 只是下载了 Python 3 7 我不确定这是否是我的机器的问题 我按照上面列出的安装说明进行操作TensorFlow 的网站 https www
  • 无法获取未知等级的 Shape 长度

    我有一个神经网络 来自tf data数据生成器和tf keras模型 如下 简化版本 因为太长 dataset A tf data Dataset反对与next x方法调用get next为了x train迭代器和next y方法调用get
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • 在 Keras 模型中删除然后插入新的中间层

    给定一个预定义的 Keras 模型 我尝试首先加载预先训练的权重 然后删除一到三个模型内部 非最后几层 层 然后用另一层替换它 我似乎找不到任何有关的文档keras io https keras io 即将做这样的事情或从预定义的模型中删除
  • 无法使用tensorflow 2.0.0 beta1保存模型

    我已尝试了文档中描述的所有选项 但没有一个允许我将模型保存在tensorflow 2 0 0 beta1中 我还尝试升级到 也不稳定 TF2 RC 但这甚至破坏了我在测试版中工作的代码 所以我很快就回滚到测试版 请参阅下面的最小复制代码 我
  • 在keras自定义损失中使用层输出

    我正在 Keras 中开发自定义损失函数 我需要第一层输出 我怎样才能取回它 def custom loss y true y pred cross K mean K binary crossentropy y true y pred ax
  • 在按顺序读取的多个特征文件上训练 Keras 模型以节省内存

    当我尝试读取大量功能文件时 我遇到了内存问题 见下文 我想我应该分割训练文件并按顺序读取它们 做到这一点的最佳方法是什么 x train np load path features x train npy y train np load p

随机推荐

  • Linux配置网桥

    一 创建网桥配置文件 cp etc sysconfig network scripts ifcfg eth0 etc sysconfig network scripts ifcfg br0 二 配置网卡 设置网络为静态IP vi etc s
  • “野火FreeRTOS教程”第9章知识点总结-空闲任务与阻塞延时

    前言 在第7章我们知道在创建任务并启动任务调度器后 xff0c 当前任务控制块是指向第一个任务 xff08 即pxCurrentTCB 61 amp Task1TCB xff09 xff0c 然后会产生SVC中断 xff0c 将pxCurr
  • XShell+Xmanager实现在XShell中显示远程服务器的图形界面

    最近开始学习机器学习的知识 xff0c 迫切的需要用到Linux环境 xff0c 但是因为虚拟机用着电脑会变卡 xff0c 而且自己有台式 43 笔记本 xff0c 所以自己想要创建一个随时随地多设备可以用的实验环境 因此想到了搭建一个Li
  • MFC CStringArray使用方法

    xfeff xfeff MFC CStringArray使用方法 2014 07 04 10 03 34 转载 标签 xff1a vc 分类 xff1a Visual C CArray arrroads CStringArray road
  • 致我们终将逝去的2014

    一眨眼 xff0c 2014年的最后一张日历即将撕去 xff0c 迎来的是面貌全新的2015 回首2014 xff0c 回首这一年所经历的一切 xff0c 感觉那么近又那么远 下面将从几个方便总结自己的2014 xff1a 一 专业方面 x
  • 计算机基础知识之-线程&进程

    线程 amp 进程 死锁 多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力 然而 xff0c 并发执行也带来了新的问题 死锁 死锁是指两个或两个以上的进程 xff08 线程 xff09 在运行过程中因争夺资源而造成的一种僵局
  • linux下mysql访问速度缓慢并且ssh连接缓慢

    最近发现ssh连接的时候却很慢 xff0c ping的速度非常好 xff0c 让人误以为是ssh连接不上 分析结果 xff0c 主要原因为 xff1a DNS的解析IP导致 xff0c 可分别使用以下几种分析处理方式 1 linux ssh
  • vmware安装centos8之网络配置

    1 下载vmware 2 新建虚拟机 3 网络配置 3 1 查看自己主机ip 网关等信息 xff0c 例如个人主机信息如下 3 2 设置vmware网络连接 vmware gt 我的计算机 gt 设置 gt 网络适配器 gt 网络连接 gt
  • Ubuntu连上wifi后,能内网通讯,但访问不了外网的问题解决办法

    最近用Jetson Nano遇到了这样一个问题 系统时间一直定格在了2月7日的晚上 每次重启 xff0c 就会回到那个时间 经过一番检测 xff0c 发现是因为连不上外网 xff0c 导致不能同步时间 然后按照常规方法 xff0c 检测DN
  • simplegui自定义字库——UTF8版

    写作背景 日前 xff0c 笔者在学习simplegui xff0c 制作了一套适用于simplegui的自定义字库 UTF8版 在和群友交流的时候感觉自己讲不清楚 xff0c 经过分析是自己还没能深入理解相关知识 xff01 xff01
  • StarWind Software Image Converter:虚拟机镜像转换工具,可将 img 文件转换为 VMware虚拟机 Vmdk 文件

    然后添加官网下载解压好的 img文件 xff1a
  • 工作站启动不起来的解决方案

    我是一个运维小白 xff0c 今天遇到了公司工作站启动不起来的情况 工作站是DELL的 xff0c 尝试强制启动了好几次 xff0c 都没有启动起来 拔了电源 xff0c 静置一段时间后 xff0c 再插上电源 xff0c 再启动工作站 x
  • VNC连不上服务器,无法远程控制

    我是在服务器上添加了分帐户 xff0c 然后使用vnc连接 xff0c 遇到了vnc连不上的问题 有好几个问题导致这个原因 xff0c 这里说两个我遇到的 xff1a 第一 xff1a vnc连接失败 xff0c 此时 xff0c 可以试试
  • UCOS III移植到STM32F407过程

    UCOS III移植步骤 第一步 首先打开找到Mirium的官网 找到下载区域 按照MCU制造商来查找 看图 来下载对应的UCOS III系统 由于官方并没有直接对stm32f407系列的移植 所以我们就在官网上找到和stm32f407相近
  • Android 7.0手机打开相机或相册报错解决方案

    原文地址 xff1a http www jianshu com p edec55192944 在android 7 0以上的手机上打开相机 相册会报如下错误 android os FileUriExposedException expose
  • Python爬虫:用BeautifulSoup进行NBA数据爬取

    爬虫主要就是要过滤掉网页中无用的信息 xff0c 抓取网页中有用的信息 一般的爬虫架构为 xff1a 在python爬虫之前先要对网页的结构知识有一定的了解 xff0c 如网页的标签 xff0c 网页的语言等知识 xff0c 推荐去W3Sc
  • Python 不带参数和带参数装饰器

    链接1 xff1a https blog csdn net u010358168 article details 77773199 链接2 xff1a https blog csdn net qq 34788903 article deta
  • VLAN网络支持ipv6的交换机和虚机配置

    VLAN支持ipv6的交换机和虚机配置 前言一 创建VLAN网络并配置交换机1 规划并在OpenStack上创建 VLAN网络2 在交换机上配置VLAN 二 Ubuntu虚机配置1 创建虚机2 在OpenStack上查看port3 登录虚机
  • MyBatis-Plus-Generator 3.5.2 配置详解

    官方用例 所需MAVEN依赖 span class token tag span class token tag span class token punctuation lt span dependencies span span cla
  • 用keras搭建一个简单的一维卷积神经网络

    编程环境 xff1a python 3 6 8 tensorflow 1 12 3 点击下载离线包 matplotlib 3 1 2 numpy 1 17 4 数据集说明 xff1a 我所采用的数据集 xff0c 是我自己构建的一个网络流量