64、基于梯度的安全新型分类器用于有效分类

基于梯度的安全新型分类器用于有效分类

1. 系统概述

在云环境和机器学习算法不断发展的背景下,我们构建了一个强大、可靠且灵活的异常检测模型。该模型的系统框架主要包含客户端、可信权威机构(Trusted Authority,TA)和计算引擎(Computation Engine,CE)这几个部分,其中TA和CE部署在云端。

组件 主要功能
可信权威机构(TA) 验证客户端身份;颁发用于加密的公钥;对信息进行解码;将特征化结果返回给客户端
计算引擎(CE) 进行特征选择;执行分类(异常识别);返回分析报告

客户端向TA请求公钥,使用公钥对数据进行加密后发送到云端。TA根据客户端提供的凭证(用户名和密码)批准客户端,并颁发公钥(Pp)。客户端用Pp密钥编码信息并发送给TA,同时为异常检测向TA发出请求。TA接收到客户端的加密信息后,使用私钥(Pr)进行解码,然后将信息发送给CE。CE利用递归特征消除(Recursive Feature Elimination,RFE)算法确定最佳特征数量,以提高分类准确性,显著降低算法开销。最后,通过LightGBM、XGBoost和决策树分类算法进行异常定位,并将结果通过TA返回给客户端。

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(客户端):::process -->|请求公钥| B(可信权威机构 - TA):::process
    B -->|颁发公钥Pp| A
    A -->|加密数据| B
    A -->|异常检测请求| B
    B -->|解码| C(计算引擎 - CE):::process
    C -->|特征选择、分类| C
    C -->|结果| B
    B -->|返回结果| A
2. 隐私保护与RSA算法

为了确保云端数据的隐私和安全,我们采用了RSA算法。在RSA密钥生成过程中,公钥是通过随机组合两个质数(p和q)生成的整数。使用公钥对初始信息进行全面加密,而解密则通过私钥完成,TA负责管理这两个密钥。

以下是RSA密钥生成算法:

Algorithm 1: Key Generation Using RSA Algorithm
Start
Pick two large prime numbers, p and q.
n = p × q
φ(n) = (p −1) · (q −1)
e = random value, such that 1 < e < φ(n)
Determine d = e−1 mod φ(n).
Public key = (e, n), i.e., e is a public key;
Private key = (d);
Stop
3. 特征选择

特征选择在多个领域(如临床、科学、金融、制造、图像处理等)中变得至关重要,它是分类任务的重要组成部分。RFE算法结合逻辑回归策略,根据特征的排名选择最佳特征并消除最差特征。

逻辑回归通过以下公式确定特征的排名:
[
\frac{P(Y)}{1 + P(Y)} = \beta_0 + \beta_1x_1 + \beta_2x_2 + \cdots + \beta_nx_n
]
其中,$Y$是目标(因变量),$x_1, x_2, \cdots, x_n$是特征(自变量),$\beta_0$是常量值,$\beta_1, \cdots, \beta_n$是系数值。

每个特征的概率排名值可以通过以下公式计算:
[
P = \frac{1}{1 + e^{(-\beta_0 + \beta_1x_1 + \beta_2x_2 + \cdots + \beta_nx_n)}}
]

在特征选择过程中,所有特征列在特征集(FS)中,具有排名属性的特征列在特征排名集(FR)中。选择排名最高的特征作为最佳特征,消除排名最低的特征,然后将选择的特征提供给LightGBM、XGBoost和决策树算法进行异常检测。

4. LightGBM算法检测

LightGBM是一种梯度提升结构,属于基于树的学习策略。由于其计算速度快且所需内存少,因此被称为“轻量级”。它利用选择的特征进行分类,以下是LightGBM算法的主要参数:

参数 含义
number of leaves 每棵树的叶子总数
learn rate 算法的学习率
maximum_depth 算法的最大深度
boosting type 指定算法的类型
minimum data 叶节点的最小数据量
feature_fraction 特定特征占总特征数的比例

我们实现的参数值如下:

learning_rate = 0.003
boosting_types = ‘gbdt’
objective_function = ‘binary’
metric = ‘binary_logloss’
sub_features = 0.5
no.of_leaves = 70
min_data = 50
max_depth = 70

LightGBM算法的代码如下:

Algorithm 2: LightGBM
Input: T = training data
Input: F = no.of iterations
Input: u = big gradient data sampling ratio
Input: v = small gradient data sampling ratio
Input: loss_fn = loss function, L_weak = weak learner
Model ←{}, factr ←(1-u)/v
topn ←u × len(T), randn ←v × len(T)
for i = 1 to F do
    pred ←Model.predict(T)
    k ←loss_fn(T,pred)
    w ←{1,1,…}
    sort ←GetSortedIndices(abs(k))
    topset ←sorted[1:topn]
    randset ←RandomPick(sorted[topn:len(T)],randn)
    usedset ←topset + randset
    z[randset] = factr
    newml ←L_weak(T[usedset],-k[usedset],z[usedset])
    Model.append(newml)
5. XGBoost算法异常检测

XGBoost是一种机器学习算法,属于梯度提升算法,它根据选择的特征对数据集进行分割,以进行分类或预测。其主要思想是先训练多个决策树,然后将它们的预测结果相加得到最终预测。

XGBoost算法的执行步骤如下:
1. 树的生长 :采用按叶子生长的原则,在不同层次采用不同方法,有助于保持树之间的平衡并规范训练方法。
2. 最佳分割选择 :这是算法过程中的一项具有挑战性的任务。XGBoost使用贪心算法在排序数据上寻找最佳分割,并通过直方图方法将特征组合成不同的集合,以减少算法复杂度并提高训练速度。确定最佳分割的步骤如下:
1. 从先前观察的数据中估计初始值(概率值)。
2. 计算残差(观测值与估计值的差值)。
3. 计算均方误差(MSE):$MSE = \frac{(Observed value - Estimated value)^2}{n}$
4. 计算赔率比(事件计数与实际估计的比率)。
5. 从赔率比计算概率。
6. 使用以下关系确定最佳分割:$\sum_{i=1}^{n} \frac{Residual_i}{Probability_{x_i}}$,其中$x$是构建树的迭代次数。
7. 计算新的残差以构建第二棵树。
8. 对集合中的所有值重复上述步骤。
3. 稀疏输入处理 :大多数数据是文本形式且具有稀疏性,XGBoost在分割操作中忽略稀疏值,仅考虑数据值,将缺失值视为0,并使用“max”和“min”模式处理数值特征,从而大大减少损失并提高训练过程。
4. 处理分类值 :XGBoost本身没有特殊的操作来处理分类数据值,因此在将分类值输入算法之前,需要使用标签编码等方法进行编码。

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(树生长):::process --> B(最佳分割选择):::process
    B --> C(稀疏输入处理):::process
    C --> D(处理分类值):::process
6. 实验评估与结果分析

使用标准的NSL - KDD数据集进行实验验证,该数据集包含42个特征。通过RFE算法选择最重要的特征,并使用LightGBM进行特征化。评估指标包括准确率、精确率和召回率。

  • 准确率 :准确率是成功预测值与总预测值的比率,计算公式为:$Accuracy = \frac{TP + TN}{TP + TN + FP + FN}$,其中TP是真正例总数,TN是真负例总数,FP是假正例总数,FN是假负例总数。实验结果表明,LightGBM的分类准确率为0.998,XGBoost为0.989,决策树为0.976。当特征数量在10 - 90之间变化时,特征数量过少(如10个特征)时性能较低,特征数量为50时准确率最高。
  • 精确率 :精确率是正确正预测的百分比,计算公式为:$Precision = \frac{TP}{TP + FP}$。LightGBM的精确率高于XGBoost和决策树分类器。当选择的特征数量大于50时,LightGBM的精确率为0.998,XGBoost为0.989,决策树为0.98,并且在剩余特征数量下精确率保持不变。
  • 召回率 :召回率是真正例与真正例和假负例之和的比率,计算公式为:$Recall = \frac{TP}{TP + FN}$。LightGBM的召回率高于决策树分类器。当选择的特征数量超过50时,LightGBM的召回率为0.992,XGBoost为0.98,决策树为0.975,并且在剩余特征数量下召回率保持不变。
算法 准确率 精确率 召回率
LightGBM 0.998 0.998 0.992
XGBoost 0.989 0.989 0.98
决策树 0.976 0.98 0.975

通过比较LightGBM、XGBoost和决策树算法的性能,发现LightGBM在准确率、精确率和召回率方面表现略优于其他两种算法,因此LightGBM分类器在异常检测任务中表现更出色。

综上所述,我们提出的基于云环境和RFE特征选择的异常检测模型,结合LightGBM和XGBoost机器学习技术以及RSA隐私保护方法,在异常检测方面取得了良好的效果。未来,我们将进一步研究模型的超参数优化和数据采样技术,以解决潜在的内存问题等。

基于梯度的安全新型分类器用于有效分类

7. 模型的优势与特点

该异常检测模型具有多方面的优势和特点,使其在实际应用中具有较高的价值。

  • 隐私保护 :采用RSA算法对数据进行加密,确保了数据在传输和处理过程中的安全性和隐私性。客户端使用公钥加密数据,只有拥有私钥的TA才能进行解密,有效防止了数据泄露。
  • 高效特征选择 :RFE算法结合逻辑回归策略,能够从大量特征中选择出最关键的特征,减少了数据维度,提高了分类的准确性和效率,同时降低了算法的复杂度和开销。
  • 多种算法结合 :综合运用LightGBM、XGBoost和决策树算法进行异常检测,充分发挥了不同算法的优势。LightGBM计算速度快、内存占用少;XGBoost具有强大的分类和预测能力;决策树算法简单易懂,可解释性强。
  • 适应性强 :模型能够处理大规模数据和稀疏数据,并且可以通过调整参数适应不同的数据集和应用场景。
8. 实际应用场景

该异常检测模型在多个领域具有广泛的应用前景。

  • 网络安全 :可以用于检测网络中的异常流量和入侵行为,及时发现潜在的安全威胁,保护网络系统的安全。
  • 金融领域 :在金融交易中,能够识别异常的交易行为,如欺诈交易、洗钱等,帮助金融机构防范风险。
  • 医疗保健 :在医疗数据中,检测异常的生理指标和疾病症状,辅助医生进行疾病诊断和治疗决策。
  • 工业制造 :用于监测工业生产过程中的异常情况,如设备故障、质量问题等,提高生产效率和产品质量。
9. 模型的局限性与改进方向

尽管该模型取得了较好的实验结果,但仍然存在一些局限性。

  • 处理恶意ESP能力不足 :模型目前无法有效应对恶意的边缘服务提供商(ESP),需要进一步研究和改进安全机制,增强模型的抗攻击能力。
  • 超参数优化 :模型的性能在一定程度上依赖于超参数的选择,目前的参数设置可能不是最优的。未来可以采用更先进的超参数优化算法,如贝叶斯优化、遗传算法等,以提高模型的性能。
  • 数据采样技术 :在处理大规模数据集时,数据采样技术可以提高模型的训练效率和泛化能力。可以研究和应用更合适的数据采样方法,如分层采样、欠采样和过采样等。
10. 总结与展望

本文提出的基于梯度的安全新型分类器,结合云环境、机器学习算法和RFE特征选择,构建了一个强大的异常检测模型。通过实验验证,该模型在准确率、精确率和召回率方面表现出色,尤其是LightGBM算法在异常检测任务中具有明显的优势。同时,采用RSA算法确保了数据的隐私和安全。

未来,我们将继续深入研究模型的优化和改进,包括超参数优化、数据采样技术和应对恶意攻击的安全机制等。通过不断地探索和创新,提高模型的性能和可靠性,使其能够更好地应用于实际场景,为各个领域的异常检测提供更有效的解决方案。

改进方向 具体措施
处理恶意ESP 研究和改进安全机制,增强模型的抗攻击能力
超参数优化 采用贝叶斯优化、遗传算法等先进算法
数据采样技术 应用分层采样、欠采样和过采样等方法
graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(模型局限性):::process --> B(处理恶意ESP能力不足):::process
    A --> C(超参数优化问题):::process
    A --> D(数据采样技术待改进):::process
    B --> E(改进安全机制):::process
    C --> F(采用先进优化算法):::process
    D --> G(应用合适采样方法):::process

相关推荐

从零实现深度神经网络:NumPy手写MNIST分类器

深度神经网络是机器学习领域的核心模型,其本质是通过多层非线性变换对数据进行特征提取与模式识别。其工作原理基于前向传播计算预测结果,再通过反向传播算法计算梯度,利用梯度下降优化网络参数。这项技术的核心价值在于能够自动学习数据的层次化特征表示,广泛应用于图像识别、自然语言处理等领域。本文以经典的MNIST手写数字识别任务为应用场景,深入剖析全连接网络、ReLU激活函数、交叉熵损失等基础组件的实现原理,通过纯NumPy代码完整构建并训练一个深度神经网络模型,帮助读者从根本上理解梯度下降、参数初始化等关键机制,为后

weixin_33946605的博客 600

PyTorch实现猫狗分类器:从数据到部署全流程指南

计算机视觉中的图像分类是深度学习的基础应用之一,通过卷积神经网络(CNN)可以高效提取图像特征。PyTorch作为主流深度学习框架,提供了灵活的模型构建和训练能力。本项目以经典的猫狗分类为例,完整展示了工业级AI开发流程:从数据预处理中的自动跳过损坏图片机制,到模型设计时完整版与简化版的性能权衡,再到训练过程中的动态学习率调整和混合精度优化。特别在部署环节,详细介绍了Flask API设计、生产环境下的Gunicorn+Nginx部署方案,以及Docker容器化实践。这些技术不仅适用于图像分类任务,也可迁移

weixin_42526415的博客 243

32、基于GoogleNet分类器与AlexNet算法的车辆事故预测分析

本博客探讨了基于GoogleNet和AlexNet算法在车辆事故预测中的应用,比较了两种深度学习模型在RTA数据集上的性能表现。研究表明,GoogleNet凭借其Inception模块和精简的网络结构,在准确率上显著优于AlexNet,达到了94.61%的高精度。文章详细介绍了实验环境、数据集划分、模型训练流程,并通过对比分析验证了GoogleNet在复杂交通场景下的优越性。同时,博文总结了两种算法的优缺点,提出了实际应用建议,并展望了未来在数据优化、实时预警和多技术融合方面的发展方向,为提升道路安全提供了

tree8的博客 81

20、云安全与健康保险欺诈检测技术解析

本文探讨了云安全分析与健康保险欺诈检测的关键技术和方法。在云安全方面,强调了持续进行漏洞评估和威胁检测的重要性。针对健康保险欺诈问题,研究了多种机器学习和数据挖掘技术,并提出了一种结合顺序特征选择和SMOTE过采样方法的欺诈检测模型。实验结果显示,使用Stacking分类器并结合特征选择取得了最佳准确率。文章旨在为云环境安全和健康保险欺诈检测提供有效的解决方案和技术支持。

t8u9v0的博客 83

43、基于梯度特征描述符的耳部生物特征识别与无线传感器网络安全认证方案

本文探讨了基于梯度特征描述符的耳部生物特征识别技术及其在无线传感器网络安全认证中的应用。重点介绍了LOOP特征描述符在耳部识别中的优势,并详细分析了其在多个基准数据库上的性能表现。同时,提出了一种具有前向保密性的安全相互认证方案,以应对物联网环境下无线传感器网络的安全挑战。研究结果表明,该方案在性能和安全性方面均具有显著优势。

life6的博客 71

全网最详细单细胞保姆级分析教程(一) ---pbmc

通过观察热图,可以了解不同细胞在主成分上的分布情况,以及主成分与细胞特征之间的关系。数据归一化是数据分析中的常见步骤,旨在消除数据集中不同特征之间的量纲差异,并使它们在相同的尺度上进行比较。函数会根据指定的主成分维度计算数据点之间的距离,并找到每个数据点的邻居。函数会根据数据点之间的相似性将其分组到不同的聚类中。数据缩放是数据分析中的常见步骤,旨在将数据的特征值调整到相似的范围,以避免某些特征对分析结果的过度影响。通过可视化维度载荷,可以了解哪些特征对主成分的形成起到了重要作用,以及不同特征之间的相关性。

ZxVSaccount的博客 6707

自考计算机系统原理(第六章计算机系统概论)-13015

名词解释 I/O 硬件 I/O软件 用户空间I/O软件 内核空间I/O 软件 系统调用处理程序 系统调用服务例程 设备驱动程序 中断服务程序 系统级1/O函数 虚拟文件系统 文件描述符 文件元数据 流缓冲区 索引节点 目录文件 目录项 系统打开文件表 磁盘高速缓存 高速缓存 RAM I / O 控制方式 程序直接控制I/O 就绪状态 中断控制I/O 中断屏蔽字 多重中断 中断嵌套 DMA 方式 DMA 控制器 设备控制器 I/O端口 控制端口 数据端口 状态端口 I/O 地址空间 独立编址方式 统一编址方

qq_23872947的博客 1150

NC数据预处理避坑指南:从MATLAB读取到GeoTIFF导出,解决坐标翻转与值域异常

本文详细解析了NC数据预处理中的常见问题,包括MATLAB读取时的坐标翻转与GeoTIFF导出时的值域异常。通过实战案例,介绍了如何解决矩阵方向错乱、处理FillValue与scale_factor、精准移植空间参考等关键问题,帮助研究者高效完成气象数据的批量处理与GIS兼容性验证。

weixin_30788619的博客 654

SAP-ABAP:SAP中如何查看系统表之间的关联关系?

在业务逻辑开发或者ALV开发过程中,我们通常要从系统中找出几个标准表之间的关联关系,有的是head与item,通过外键进行关联的关系。那么怎么去找到呢?以上就是具体如何产看系统表之间的关联关系的步骤,对于不同代码的业务顾问,也是必须要掌握的。

LinkStar的博客 2430

即插即用系列(代码实践) | WACV 2024 CSAM:面向各向异性医学图像分割的 2.5D 跨切片注意力模块

文章摘要: 论文《CSAM: A 2.5D Cross-Slice Attention Module for Anisotropic Volumetric Medical Image Segmentation》提出了一种解决医学图像各向异性问题的创新模块CSAM。针对MRI/CT数据中切片间分辨率差异大的挑战,该模块通过2.5D跨切片注意力机制,结合2D卷积的轻量性和3D上下文感知能力。核心包括语义注意力(通道级)、位置注意力(空间级)和跨切片注意力(支持不确定性建模),能在几乎不增加参数量的情况下有效捕捉

分享顶会顶刊论文即插即用模块 106

【YOLO】YOLOV5-Seg的Segment模块解析

Segment模块同时输出检测结果和分割掩模,通过轻量级分割头实现实时实例分割

浩瀚之水的专栏 599

将Keil中的变量数组导出

首先,写好导出数据的函数。

小柚子的博客 1952

【Autosar从入门到精通到进阶实战篇】75 0x34/0x36/0x37:请求下载、传输数据、请求退出——刷写流程的“三兄弟”

文章摘要:UDS刷写流程0x34/0x36/0x37关键实现要点 本文通过一个真实ECU变砖案例,揭示了UDS刷写服务(0x34请求下载、0x36传输数据、0x37请求退出)的实现陷阱与最佳实践。核心要点: 安全架构设计: 0x34阶段只协商参数,不立即擦除Flash 采用缓冲区暂存数据,避免频繁写Flash 严格检查地址对齐和内存边界 关键改进措施: 实现数据包序列号校验(防错位) 传输层缓冲区溢出保护 0x37阶段必须包含完整性校验(如CRC32) 一次性批量写入Flash,减少擦写次数 典型错误模式:

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 71

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 38、Java开发综合实践:从JSP到Hibernate再到JavaFX
下一篇: 2、虚拟、增强和混合现实技术在各领域的应用及与建筑信息模型的融合
废话输出机427
博客等级 码龄4年 414粉丝 1552原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值