神经网络中归一化的重要作用

简介:

下面是使用神经网络进行JAVA溢出攻击代码:

复制代码
# -*- coding:utf-8 -*-

import re
import matplotlib.pyplot as plt
import os
from sklearn.feature_extraction.text import CountVectorizer
from sklearn import cross_validation
import sklearn
import os

import numpy as np
from sklearn.neural_network import MLPClassifier


def load_one_flle(filename):
    x=[]
    with open(filename) as f:
        line=f.readline()
        line=line.strip('\n')
    return line

def load_adfa_training_files(rootdir):
    x=[]
    y=[]
    list = os.listdir(rootdir)
    for i in range(0, len(list)):
        path = os.path.join(rootdir, list[i])
        if os.path.isfile(path):
            x.append(load_one_flle(path))
            print "Load file(%s)" % path
            y.append(0)
    return x,y

def dirlist(path, allfile):
    filelist = os.listdir(path)

    for filename in filelist:
        filepath = os.path.join(path, filename)
        if os.path.isdir(filepath):
            dirlist(filepath, allfile)
        else:
            allfile.append(filepath)
    return allfile

def load_adfa_java_files(rootdir):
    x=[]
    y=[]
    allfile=dirlist(rootdir,[])
    for file in allfile:
        if re.match(r"../data/ADFA-LD/Attack_Data_Master/Java_Meterpreter_\d+/UAD-Java-Meterpreter*",file):
            print "Load file(%s)" % file
            x.append(load_one_flle(file))
            y.append(1)
    return x,y



if __name__ == '__main__':

    x1,y1=load_adfa_training_files("../data/ADFA-LD/Training_Data_Master/")
    x2,y2=load_adfa_java_files("../data/ADFA-LD/Attack_Data_Master/")

    x=x1+x2
    y=y1+y2
    #print x
    vectorizer = CountVectorizer(min_df=1)
    x=vectorizer.fit_transform(x)
    x=x.toarray()    
    print x[:10]

    
    min_max_scaler = sklearn.preprocessing.MinMaxScaler()
    x = min_max_scaler.fit_transform(x)
    print x[:10]

    mlp = MLPClassifier(hidden_layer_sizes=(150,50), max_iter=30, alpha=1e-4,
                        solver='sgd', verbose=10, tol=1e-4, random_state=1,
                        learning_rate_init=.1)

    score=cross_validation.cross_val_score(mlp, x, y, n_jobs=-1, cv=10)
    print  np.mean(score)
复制代码

如果不加min_max_scaler ,则迭代6次提前结束,准确率87%,而使用后迭代可以达到预设的30次,准确率可以达到95%。













本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/7881907.html,如需转载请自行联系原作者


相关文章
|
4月前
|
机器学习/深度学习 数据采集 算法
一文搞懂 卷积神经网络 批归一化 丢弃法
这篇文章详细介绍了卷积神经网络中的批归一化(Batch Normalization)和丢弃法(Dropout),包括它们的计算过程、作用、优势以及如何在飞桨框架中应用这些技术来提高模型的稳定性和泛化能力,并提供了网络结构定义和参数计算的示例。
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】30. 神经网络中批量归一化层(batch normalization)的作用及其Pytorch实现
【从零开始学习深度学习】30. 神经网络中批量归一化层(batch normalization)的作用及其Pytorch实现
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
神经网络中的归一化
**神经网络中的归一化方法加速和稳定学习,避免梯度问题。通过批量归一化(Batch Normalization),每个mini-batch数据被调整至均值0、标准差1的分布,减少数据分布变化带来的不稳定性,提升模型训练速度与泛化能力。归一化也包括L1和L2正则化,如sklearn库中的Lasso和Ridge实现。批量归一化层如PyTorch中的`nn.BatchNorm2d`,调整输入数据分布并学习可变参数。**
|
机器学习/深度学习 人工智能 算法
【Pytorch神经网络理论篇】 16 过拟合问题的优化技巧(三):批量归一化
Switchable Normalization算法,它可以将多种批量归一化算法融合并赋予可以学习的权重,在使用时,通过模型训练的方法来自动学习。
280 0
|
机器学习/深度学习 人工智能 算法
深度学习教程 | 网络优化:超参数调优、正则化、批归一化和程序框架
本节介绍超参数调试、批归一化和深度学习编程框架三个部分,内容包括:超参数优先级与调参技巧,超参数的合适范围确定,Batch Normalization,softmax回归,深度学习框架等。
300 1
深度学习教程 | 网络优化:超参数调优、正则化、批归一化和程序框架
|
机器学习/深度学习 算法
|
9天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
47 17
|
20天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。