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,关闭中间的几个隐藏层表示不进行参数的更新操作

  • 相关阅读:
    有效的形成传感器(执行器)的控制方式
    QT进行多传感器(执行器)的编程框架
    Pytorch 分割模型构建和训练【直播】2019 年县域农业大脑AI挑战赛---(四)模型构建和网络训练
    9月份以前还是深入了解各个技术原理吧
    位操作基础篇
    实现一个简单实用的动态加载上千条目的UGUI模块
    C++题目汇总
    Leetcode 92. Reverse Linked List II
    Leetcode Reverse Linked List
    Lintcode Recover Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/10479069.html
Copyright © 2011-2022 走看看