• 深度学习-神经网络原理-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_])
    
    
  • 相关阅读:
    Azure + React + ASP.NET Core 项目笔记一:项目环境搭建(三)
    cubeIDE开发,基于已有的STM32CubeMX (.ioc)创建工程文件
    免费调用快递鸟物流跟踪轨迹订阅接口技术文档
    有哪些能赚钱的手机app?
    Python基础语法
    mac上输入 insert和replace的快捷键切换
    HTML超文本链接语言简介
    基于深度学习的图像生成与识别技术研究
    企业最关心的ISO三体系认证的几个问题
    前端常见面试题:post请求发送几次?
  • 原文地址:https://www.cnblogs.com/cavalier-chen/p/17976688