Java教程

神经网络

本文主要是介绍神经网络,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、多层感知机

原理:

  • 多次重复线性回归的加权求和过程(中间的计算结果称为隐单元,隐单元构成隐层),计算完每个隐单元的加权求和之后,对结果应用一个非线性函数。再将这个函数结果用于加权求和得出y

    • 矫正非线性(relu)
    • 正切双曲线(tanh)
  • sklearn.neural_network.MLPClassifier

    from sklearn.neural_network import MLPClassifier
    from sklearn.model_selection import train_test_split
    from sklearn.datasets import load_breast_cancer
    #数据
    cancer = load_breast_cancer()
    #划分训练集测试集
    X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state = 0)
    #选择模型
    mlp = MLPClassifier(random_state=42).fit(X_train,y_tain)
    

-输出

  print("training set:{:.2f}".format(mlp.score(X_train,y_train)))
  print("testing set:{:.2f}".format(mlp.score(X_test,y_test))) 

2、神经网络调节参数

1)常用的参数:

  • solver参数:学习模型或用来学习参数的算法,

    • 默认选项是‘adam’,大多数情况下好用,但对数据的缩放相当的敏感;
    • ‘lbfgs’,其鲁棒性相当好,但在大型模型或大型数据集上的时间会较长;
    • 还有更高级的‘sgd’,这个是目前许多深度学习研究人员用的,参数默认值是‘adam’。
  • hidden_layer_sizes参数:表示多少个隐层和每个隐层有多少个隐单元。

    • 数据类型为tuple,第i个数字表示第i层的隐单元个数
    • 默认单层100
  • alpha参数:L2惩罚参数,

    • alpha越大模型越简单,泛化能力越好
    • 它的默认值是0.0001很小(弱正则化)
  • activation参数:选择使用的非线性曲线,

    • 其默认值是relu
    • tanh

这篇关于神经网络的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!