zoukankan      html  css  js  c++  java
  • 深度学习原理与框架-神经网络架构 1.神经网络构架 2.激活函数(sigmoid和relu) 3.图片预处理(减去均值和除标准差) 4.dropout(防止过拟合操作)

    神经网络构架:主要时表示神经网络的组成,即中间隐藏层的结构

    对图片进行说明:我们可以看出图中的层数分布:

        input layer表示输入层,维度(N_num, input_dim)  N_num表示输入层的样本个数, input_dim表示输入层的维度, 即变量的个数

         hidden layer1 表示第一个隐藏层,维度(input_dim, hidden_dim1input_dim表示输入层的维度,hidden_dim1示隐藏层的维度

         hidden layer2 表示第二个隐藏层,维度(hidden_dim1, num_classes) hidden_dim1表示隐藏层的维度, num_classes表示输出的样本的类别数

         output layer 表示输出结果层, 维度(N_num, num_classes) N_num 表示输入层的样本个数, num_classes表示类别数,即每个样本对于的类别得分值

    代码:对于隐藏层的参数w和b的初始化

            self.params['W1'] = weight_scale * np.random.randn(input_dim, hidden_dim)     
            self.params['b1'] = np.zeros((1, hidden_dim))    
            self.params['W2'] = weight_scale * np.random.randn(hidden_dim, num_classes)  
            self.params['b2'] = np.zeros((1, num_classes))

    2.激活函数讨论, 加入激活函数的目的是为了在分类过程中,使得分类的判别式是非线性的方程即: f = σ(w*x+b) , σ表示非线性激活函数

    但是对于sigmoid激活函数存在一个问题,即在进行梯度回传时,存在一个问题,即容易发生梯度消失的问题, (1-σ(x)) * σ(x) σ(x) 表示经过sigmoid变化后的输入结果

    当x值较大时, dσ / dx 的梯度值较小,即根据链式法则,每次都乘以较小的梯度值,因此到最后就容易出现梯度消失的情况

    对于ReLU激活函数的梯度回传,进行求导时,当输入值X小于0时,回传值为0, 当输入值大于等于0时,回传值即是本身,因此激活函数本身不会造成梯度消失问题

    代码:

    x = cache
    dout[x < 0] = 0

    3. 数据预处理, 即对输入的图片,对每张图片减去均值,在除以标准差的操作

    代码:

       # 对图片做平均操作
        mean_img = np.mean(X_train, axis=0, keepdims=True)
    
        X_train -= mean_img
        X_val -= mean_img
        X_test -= mean_img

    4. dropout,关闭中间的几个隐藏层表示不进行参数的更新操作

  • 相关阅读:
    python3第六天
    python3第五天
    python3第四天
    python3 第三天
    python3第二天
    python3(2)
    python3(1)
    网络通信 & 初识socket
    python中包的语法
    模块语法
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/10479069.html
Copyright © 2011-2022 走看看