深度学习笔记(51) 公式图形

深度学习 基础知识


1. sigmoid

a = \frac{1}{1 + e^{-Z}}

a=1+eZ1 ,值域介于0和1之间
sigmoid

import numpy as np
import matplotlib.pyplot as plt

Z = np.linspace(-10, 10, 100)
a = 1 / (1 + np.exp(-Z))

fig = plt.figure()
plt.plot(Z, a, color="blue", linewidth=1, linestyle="-", label="sigmoid")
plt.legend(loc="upper left")

plt.xlabel("Z", x=1)
plt.ylabel("a", y=1)
plt.xticks([-10, 0, 10])
plt.yticks([0.5, 1])

ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))

plt.show()

 
 
    '
    运行
    运行

    2. tanh

    a = \tanh(Z)=\frac{\sinh Z}{\cosh Z}=\frac{eZ-e{-Z}}{ex+e{-Z}}

    a=tanh(Z)=coshZsinhZ=ex+eZeZeZ ,值域介于+1和-1之间,斜率[0, 1),并且使得数据的平均值更接近0而不是0.5

    tanh

    import numpy as np
    import matplotlib.pyplot as plt
    

    Z = np.linspace(-5, 5, 100)
    a = np.tanh(Z)

    fig = plt.figure()
    plt.plot(Z, a, color=“blue”, linewidth=1, linestyle=“-”, label=“tanh”)
    plt.legend(loc=“upper left”)

    plt.xlabel(“Z”, x=1)
    plt.ylabel(“a”, y=1)
    plt.xticks([-5, 5])
    plt.yticks([-1, 1])

    ax = plt.gca()
    ax.spines[‘right’].set_color(‘none’)
    ax.spines[‘top’].set_color(‘none’)
    ax.spines[‘left’].set_position((‘data’, 0))
    ax.spines[‘bottom’].set_position((‘data’, 0))

    plt.show()

      '
      运行
      运行

      3. relu

      修正线性单元的函数(ReLu):

      a = m a x ( 0 , Z ) a = max(0, Z)

      a=max(0,Z) ,只要z是正值的情况下,导数恒等于1,当z是负值的时候,导数恒等于0
      relu

      import numpy as np
      import matplotlib.pyplot as plt
      
      Z = np.linspace(-5, 5, 11)
      a = np.maximum(0, Z)
      
      fig = plt.figure()
      plt.plot(Z, a, color="blue", linewidth=1, linestyle="-", label="Relu")
      plt.legend(loc="upper left")
      
      plt.xlabel("Z", x=1)
      plt.ylabel("a", y=1)
      plt.xticks([-5, 5])
      plt.yticks([5])
      
      ax = plt.gca()
      ax.spines['right'].set_color('none')
      ax.spines['top'].set_color('none')
      ax.spines['left'].set_position(('data', 0))
      ax.spines['bottom'].set_position(('data', 0))
      
      plt.show()
      
       
       
        '
        运行
        运行

        4. softmax

        softmax(Z_{i}) = \frac{e{Z_{i}}}{\sum_{1}{C}e^{Z_{c}}}

        softmax(Zi)=1CeZceZi,又称归一化指数函数

        它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来

        • 分子:通过指数函数,将实数输出映射到零到正无穷
        • 分母:将所有结果相加,进行归一化

        假如模型对一个三分类问题的预测结果为a, b, c
        softmax将差距大的数值距离拉的更大
        在深度学习中通常使用反向传播求解梯度进而使用梯度下降进行参数更新的过程,而指数函数在求导的时候比较方便
        softmax

        import numpy as np
        import matplotlib.pyplot as plt
        

        def hardmax(Z):
        return Z / sum(Z)

        def softmax(Z):
        return np.exp(Z) / sum(np.exp(Z))

        pred = np.array([0.5, 1.5, 4])
        a = np.array([hardmax(pred)[0], softmax(pred)[0]])
        b = np.array([hardmax(pred)[1], softmax(pred)[1]])
        c = np.array([hardmax(pred)[2], softmax(pred)[2]])

        x = np.arange(2)
        x_labels = [“hardmax”, “softmax”]
        plt.xticks(x, x_labels)

        total_width, n = 0.8, 3
        width = total_width / n
        x = x - (total_width - width) / 2

        plt.bar(x, a, width=width, label=“a”)
        plt.bar(x + width, b, width=width, label=“b”)
        plt.bar(x + 2*width, c, width=width, label=“c”)
        plt.legend()

        plt.show()

          '
          运行
          运行

          谢谢

          • 0
            点赞
          • 0
            收藏
            觉得还不错? 一键收藏
          • 0
            评论
          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

          当前余额3.43前往充值 >
          需支付:10.00
          成就一亿技术人!
          领取后你会自动成为博主和红包主的粉丝 规则
          hope_wisdom
          发出的红包
          实付
          使用余额支付
          点击重新获取
          扫码支付
          钱包余额 0

          抵扣说明:

          1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
          2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

          余额充值