• 深度学习-神经网络原理-39



    进入新的内容,深度学习啦
    万事万物的产生不是一下子就变出来的,学术上也是,一点点的进步才催生出一门新的学科或者技术,神经网络用于机器学习也不例外,
    前面的机器学习的内容,线性回归,逻辑回归,多分类,决策树,以及各种集成学习,再到概率图等等,其实隐约有了深度学习的影子,
    只不过是只有一层输入一层输出的浅层神经网络,下面正式进入神经网络!

    1. 神经网络算法是有监督的学习算法,


    一个神经元 有很多树突dentrities(接收信号输入) 细胞体body经过分析综合汇总(激活函数) 通过轴突axon传递很长的距离,作为下一个神经元的输入 输出信号。

    生物神经网络与人工神经元

    1. 激活函数:将神经元的净输入信号转换成单一的输出信号,以便进一步在网络中传播。(隐藏层如果没有进行非线性变换,那无非就是信号的放大与缩小,只是做“透传”,不进行汇总 分析 综合,神经元的意义何在) 隐藏层激活函数必须是非线性的
    2. 网络拓扑:描述了模型中神经元的数量以及层数和它们连接的方式。
    3. 训练算法:指定如何设置连接权重,以便抑制或增加神经元在输入信号中的比重。

    常见的激活函数: (本质上是为了进行非线性的变换 如果都是线性变换 那一层就能搞定 要其他的层干嘛, 这也就是与之前的线性回归的本质区别)

    1. sigmoid
      输出正例的概率 隐射到 0-1之间

    2. tanh
      hyperbolic tangent
      隐射到 -1--1 之间


    3. relu
      只有信号强到一定的程度才会输出

    2. 分类

    例如三分类 用ovr的方式训练三个二分类 逻辑回归

    使用softmax变换

    3. 训练

    一次迭代:
    前向传播计算一次输出loss
    根据loss 以及梯度 更新w
    这样来回一次 完成一次迭代

    4. 代码

    from sklearn.neural_network import MLPRegressor
    from sklearn.neural_network import MLPClassifier
    
    X = [[0, 0],
         [1, 2]]
    y = [0,
         1]
    
    clf = MLPClassifier(solver="sgd", alpha=0.00001, activation="relu", hidden_layer_sizes=(5, 2), max_iter=2000,
                        tol=0.00001)
    clf.fit(X, y)
    
    predict_value = clf.predict([[2, 2], [-1, -2]])
    print(predict_value)
    
    predict_prob = clf.predict_proba([[2, 2], [-1, -2]])
    print(predict_prob)
    
    print([coef.shape for coef in clf.coefs_])
    print([coef for coef in clf.coefs_])
    
    
  • 相关阅读:
    浅述数据中心供配电系统解决方案及产品选型
    STM32CubeMX教程21 CAN - 双机通信
    SpreadsheetGear for Windows 9.X UPDATE
    10月9日 Jdbc(2)
    立体匹配中的评价指标
    [附源码]计算机毕业设计springboot防疫物资捐赠
    StatefulSet 简单实践 Kubernetes
    【C语言】冒泡排序升级版---适用任意类型
    Oracle 字符集与编码详解
    猿创征文|收到谷歌开发者大会正式邀请(Java学生的自学之路)
  • 原文地址:https://www.cnblogs.com/cavalier-chen/p/17976688