• 【深度学习】Neural networks(神经网络)(一)


    神经网络的图解

    感知机,是人工设置权重。让它的输出值符合预期。

    而神经网络的一个重要性质是它可以自动地从数据中学习到合适的权重参数。

    如果用图来表示神经网络,最左边的一列称为输入层,最右边的一列称为输出层,中间的一列称为中间层。中间层有时也称为隐藏层.如下图:

    之前,文章中:https://www.cnblogs.com/zhangshengdong/p/12613674.html 提到了激活函数(activation function),用于激活神经元。

    一般的激活函数有,sigmoid函数,ReLU函数等。

    sigmoid函数

    sigmoid函数的公式:

    [h(x)=frac{1}{(1+mathrm{e}^{-x})} ]

    比如,向sigmoid函数输入1.0或2.0后,就会有某个值被输出,类似h(1.0) = 0.731 ...、h(2.0) = 0.880 ...。是一个非线性函数。

    代码如下:

    import numpy as np
    import matplotlib.pylab as plt
    
    
    def sigmoid(x):
        return 1 / (1 + np.exp(-x))    
    
    X = np.arange(-5.0, 5.0, 0.1)
    Y = sigmoid(X)
    plt.plot(X, Y)
    plt.ylim(-0.1, 1.1)
    plt.show()
    

    图形如下:

    如果考虑把线性函数 h(x) = cx 作为激活函数,把y(x) = h(h(h(x)))的运算对应3层神经网络。这个运算会进行y(x) = c * c * c * x的乘法运算,但是同样的处理可以由y(x) = ax(注意,(a=c^3))这一次乘法运算(即没有隐藏层的神经网络)来表示。如本例所示,使用线性函数时,无法发挥多层网络带来的优势。因此,为了发挥叠加层所带来的优势,激活函数必须使用非线性函数。

    ReLU函数

    ReLU函数的公式

    [h(x)= egin{cases} x (x > 0)\ 0 (x <= 0) end{cases} ]

    最近在神经网络中,也有很多场景下使用最近使用ReLU(Rectified Linear Unit)函数
    代码如下:

    # coding: utf-8
    import numpy as np
    import matplotlib.pylab as plt
    
    
    def relu(x):
        return np.maximum(0, x)
    
    x = np.arange(-5.0, 5.0, 0.1)
    y = relu(x)
    plt.plot(x, y)
    plt.ylim(-1.0, 5.5)
    plt.show()
    

    图形如下:

  • 相关阅读:
    ubuntu使用iso作为本地源
    ubuntu配置简单的DNS服务器
    core data
    Core Animation教程
    制作framework&静态库
    notes
    textkit
    coretext
    nsset
    iOS Development Sites
  • 原文地址:https://www.cnblogs.com/zhangshengdong/p/12621215.html
Copyright © 2020-2023  润新知