精华内容
下载资源
问答
  • GitHub深度神经网络DBNs有关输入矩阵,标签矩阵,相关参数设置疑问,求指点!!!!!相关问题: 1、输入矩阵train_x结构: 行:样本数量,即每一种N个,一共8×N行样本,本人研究中:N=53 列:每一个样本的属性,...
    rand('state',0)
    %train dbn
    dbn.sizes = [100 100];
    opts.numepochs =   1;
    opts.batchsize = 100;
    opts.momentum  =   0;
    opts.alpha     =   1;
    dbn = dbnsetup(dbn, train_x, opts);
    dbn = dbntrain(dbn, train_x, opts);

    %unfold dbn to nn
    nn = dbnunfoldtonn(dbn, 10);
    nn.activation_function = 'sigm';

    %train nn
    opts.numepochs =  1;
    opts.batchsize = 100;
    nn = nntrain(nn, train_x, train_y, opts);
    [er, bad] = nntest(nn, test_x, test_y);

    assert(er < 0.10, 'Too big error');

    应用方向:生物信号模式分类(八种模式)

    参考源码:https://github.com/rasmusbergpalm/DeepLearnToolbox

    相关问题:
    1、输入矩阵train_x结构:
            行:样本数量,即每一种N个,一共8×N行样本,本人研究中:N=53
            列:每一个样本的属性,即一个样本提取的M个特征,即深度网络有M个输入神经元,在本人研究中有M=68,矩阵为:424×68
            
           疑问:请问这个矩阵设置是否有问题?

    2、目标矩阵train_y结构:
            每一行代表一个样本,比如第一种模式即:[0 0 0 0 0 0 0 1],则前N行均为[0 0 0 0 0 0 0 1],第二个N行为[0 0 0 0 0 0 1 0],依次类推……本人研究中这个矩阵为:424×8


            疑问:经测试,这个矩阵设置有问题,这个矩阵该如何设置


    3、dbn.sizes:隐含层结点数,依次为第一个隐含层,第二个隐含层…………
    4、opts.numepochs :迭代次数,这个有点不懂求指教????
    5、opts.batchsize :每一次取batchsize个样本训练,不明这个参数,这个参数该如何设置????知乎(http://www.zhihu.com/question/32673260)上有一些解释,但是我改如何根据实际情况来设置
    6、opts.momentum:这个参数不懂什么意思,求指教????
    7、opts.alpha  :学习率 迭代下降的速率

           疑问:请问上述三个被标红的参数如何设置?求指教


           疑问:Demo中test_x(10000*784), test_y(10000*10)这个两个矩阵与train_x(60000*784), train_y(60000*10)两个矩阵中的10000与60000应该是样本数量的不一致,?


          注:深度神经网络的训练采用的是单隐含层神经网络的训练方式来进行训练,以上输入矩阵的设置方法是按照单隐含层的神经网络的方法设置


    http://blog.csdn.net/tandyky/article/details/44184175  

    http://www.pudn.com/downloads718/sourcecode/m

    https://github.com/sunbow1/SparkMLlibDeepLearn

    http://blog.csdn.net/sunbow0/article/details/46377785

    http://blog.csdn.net/dark_scope/article/details/9447967

    展开全文
  • 1、高级优化 输入参数theta,代价函数costFunction...假设神经网络有4层,那么网络的参数theta就是3个矩阵Θ(1),Θ(2),Θ(3)\Theta^{(1)},\Theta^{(2)},\Theta^{(3)}Θ(1),Θ(2),Θ(3),经过costFunction计算...

    1、高级优化

    输入参数theta,代价函数costFunction能够得到对应的损失值jval以及各个参数上的梯度值gradient。fminunc负责对这个代价函数进行优化。
    假设神经网络有4层,那么网络的参数theta就是3个矩阵Θ(1)Θ(2)Θ(3)\Theta^{(1)},\Theta^{(2)},\Theta^{(3)},经过costFunction计算后,同时也会得到代价函数在各个参数上的3个梯度值矩阵D(1)D(2)D(3)D^{(1)},D^{(2)},D^{(3)}
    在这里插入图片描述
    在调用fminunc函数时,我们应该把3个网络参数矩阵展开成一个一维向量,然后传递给参数intialTheta。
    在这里插入图片描述
    最后costFunction计算得到的梯度值矩阵,我们也应该展成一个一维的向量:
    在这里插入图片描述

    展开全文
  • 权重矩阵w的维度为 第l层的神经元个数 X 第l-1层的神经元个数,即是n(l),n(l-1)的矩阵

    在这里插入图片描述
    权重矩阵w的维度为 第l层的神经元个数 X 第l-1层的神经元个数,即是n(l),n(l-1)的矩阵。
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 详解神经网络矩阵实现的梯度计算

    万次阅读 多人点赞 2017-11-09 20:28:14
    神经网络有一定了解的同学知道:一般的神经网络的具体实现都是通过矩阵实现的,包括误差反向传导,梯度计算和更新等等,比如y=w*x+b,这里的所有变量都是矩阵,我们通常会叫w和b为参数矩阵,矩阵相乘首先效率比较...

    对神经网络有一定了解的同学知道:一般的神经网络的具体实现都是通过矩阵实现的,包括误差反向传导,梯度计算和更新等等,比如y=wx+b,这里的所有变量都是矩阵,我们通常会叫wb为参数矩阵,矩阵相乘首先效率比较高,然后也比较好操作,那么对于矩阵形式的导数该怎么计算?比如w矩阵的具体导数dw应该如何计算?

    首先我们来看一个只有输入和输出层的网络,我们输入X矩阵大小为 NDN为batch的大小,也就是一次性输入的样本数,D为输入数据的维度,也就是输入层神经元的个数,输出矩阵Y大小为NMM为输出数据的维度,也就是输出层神经元的个数, 可以看成输入数据X经过这个网络的变换,数据维度由D映射到了M维,那么w矩阵的大小自然就是DM

    1. 当前层dx的求法

    这里写图片描述

    上图中Xj,1表示第j个样本输入数据的第一个值,我们现在就考虑这个值的梯度要如何求,dYj,1表示第j个样本回传梯度的第一个值(通过链式法则,梯度是一层一层向后传递,你可以理解这个dY就是从下一层的网络传回的梯度),现在我们已知w和传回的dY,那么这个理论上分析dx肯定等于wdY(因为YX的导数就是w,而回传的梯度dY其实是损失函数LY的导数, 即 dL/dx=dL/dYdY/dx,对于dXj,1来说,它的梯度为跟它连接的w参数与第j个样本所有dY乘积的求和

    那么我们把在公式中关于计算dXj,1梯度需要的w参数和dY在正向传播的矩阵计算中标示出来如下,根据计算公式,我们发现dXj,1的值正好等于dY矩阵与w转置矩阵相乘后的第一行第一列的值,这不是偶然,其实dY矩阵与w转置矩阵的相乘正好就是dX梯度矩阵

    这里写图片描述

    那么我们得出结论:当前dx矩阵由下一层传回的dY矩阵与当前参数矩阵w的乘积

    用python实现就是:

       dx = np.dot(dY, w.T)  # (N,D)

    2. 当前层dwdb的求法

    dx的公式类似, dw1,1的计算公式我们也可以推出,因为w1,1参数每次只与这个样本的第一个输入数据发生相乘关系,因此如果有N个样本,那么dw1,1就等于相应样本的dY与此样本第一个输入数据的乘积然后求和

    这里写图片描述

    这里写图片描述

    我们将计算dw1,1所有相关的值在正向传播中标示出来如下,我们也正好发现dw1,1的值就等于X的转置矩阵与dY相乘后矩阵的第一行第一列值,因此:当前dw矩阵等于当前X转置矩阵与下一层传回的dY矩阵的乘积

    对于db1来说,它的梯度直接为所有相应样本的dY的求和, 因此直接对dY矩阵进行在维度为0的求和操作即可

    我们用python实现即为:

    dw = np.dot(X.T, dY)  # (D,M)
    db = np.sum(dY, axis=0)  # (M,)

    关于更加详细的实现请看这里:https://github.com/PENGZhaoqing/cs231n-assignment2/blob/master/cs231n/layers.py

    思考- 使用mini-batch的优点

    其实dw的计算可以这么理解,是这批(batch)样本里每个样本损失函数对w的梯度向量的累加,如下图所示,蓝线代表各个样本损失函数对w的梯度向量,红线代表这些梯度向量的求和,也就是我们最终更新w的方向,这个方向很好综合了所有单个样本更新的方向,因此更新的效果要比单个样本一个一个来更新要好的多,每次单个的更新会让整个更新过程非常动荡(每个样本的方向基本都不一样),而使用mini-batch的方法每次更新的方向是所有这些样本更新方向的折中,减少了每次更新的差异性:

    这里写图片描述

    那是不是batch的size越大越好呢,当然不是,当batch的样本数量过大后,dw会淹没一些少数的样本的方向,比如下图, 假设黑线代表某个样本更新w的梯度方向,这个方向会被其他蓝线方向覆盖,所以最终的dw方向基本上不会反映出这个样本的更新方向,当batch_size过大后,在每次epoch迭代中,黑线代表的样本都有很大可能性被覆盖,会导致精度会上不去

    这里写图片描述

    展开全文
  • 对于三层神经网络中隐层的节点,其输入首先要与阈值作差,然后将差值输入到激活函数(Sigmoid)中。虽然都是采用BP算法进行更新,但三层网络更新的是权重和阈值,而深度网络中更新的是权重矩阵和偏置。此外,由于是...
  • 举例来说,对于二维卷积神经网络,其权重就是卷积核里面的那些值,这些值从上而下,从左到右要将图像中每个对应区域卷积一遍然后将积求和输入到下一层节点中激活,得到下一层的特征图。因此其权重和偏置更新公式与全...
  • 此处分析一个细节的实现过程:怎样把参数矩阵展开成向量,以便在高级最优化步骤中的使用需要。 具体来讲,我们执行了代价函数,输入参数是 theta,函数返回代价值以及导数值: 然后我们可以将返回值传递给高级最...
  • (六)神经网络参数计算

    千次阅读 2018-06-01 21:20:55
    全连接的参数计算如图: (5*4+5)+(3*5+3) 即第一层参数+第二层参数 参数类型只有2种:w和b w的数量就是输入层到输出层之间的箭头数目,而b的数目等于每个输出...所以经过神经网络的计算是依次取每行的数据进行计...
  • input_dim:输入数据层大小:3-3层-彩色图像。32:矩阵高。32:矩阵宽 num_filters:卷积核的数量。 filter_size:卷积核大小-7的意思就是7*7大小的计算的卷积核。 hidden_dim:隐藏层即全连接层的(神经元)的个数...
  • BP神经网络实现手写数字输入python 首先,我们需要引入下面两个库 import numpy import scipy.special 然后创建一个神经网络类,类里有三个函数:初始化函数、训练函数和查询函数。 初始化函数 1、引入输入层、隐藏...
  • 如图所示,这是一个简单的两层神经网络(输入层是第0层),如果将所有的w矩阵和b向量都初始为全0 则矩阵 是 是 是 将偏置项b初始化为0实际上是可行的,但把W初始化成全零就成问题了,它的问题在于给神经网络输入任....
  • 一般一个神经网络的一层包括一个卷积和一个池化,这里主要讲述对输入和输出的尺寸的理解: 一、卷积 首先input输入矩阵,weight权值矩阵(滤波器)如下图429是由weight与input对应位置相乘再相加得到。 然后是...
  • 其中,参数矩阵中每一个单独的参数都描述了一个输入单元与一个输出单元的交互。这意味着每一个输出单元与每一个输入单元都参数交互,也就是上图中第一个隐层中的每一个神经元都要与输入层的每一...
  • 神经网络可以有效地解决复杂、非线性系统的功能模拟问题,其传递函数的可微性为参数灵敏度矩阵的求解提供了保证,从而方便寻找系统输入属性与输出属性之间的影响因子。同时,该模型具有良好的扩展性,可以更加全面地...
  • 为什么神经网络参数不能全部初始化为全0? 最近试了一个小实验,发现当神经网络参数全部初始化为全0的时候(这样最省力嘛),效果并不好,后来和请教了ybb并且网上查阅了一些资料,记录一下自己的笔记和总结,欢迎...
  • 这里将简单介绍一下神经网络参数的手动更新和自动更新。 首先来说手动更新,可能很多初学者随便打开一本pytorch书或者教程,发现他们的梯度更新方式都大同小异,都是那几句话,但他其中的具体步骤究竟是怎样的,还是...
  • 神经网络

    2018-07-26 11:54:00
    矩阵公式:输出=激活函数(输入x权重+偏差) 多层感知器识别手写数字: 关键点: input:[None,784] output:[None,10] 隐藏层:256 如何随机初始化参数 loss函数如何计算 ...
  • 为什么需要深度神经网络 深度不是层次多,而是神经元的个数多 L = 4(层数,输入层不算) n[1] = 3 (第一层有3个神经元) 层次性 这样的层次性,使得迁移学习(用识别人脸的神经网络,改变后面几层,去...
  • 神经网络学习笔记

    2021-03-27 13:42:56
    神经网络模型 神经网络的模型来源于人脑的神经元模型,通过输入变量和非...全连接神经网络中前后网络层构造新的输入向量可以看作类似于输入向量与参数矩阵的乘积再经过非线性函数的处理 神经网络的前向传播过程 神经
  • NLP-神经网络

    2020-10-29 14:14:26
    前向神经网络 FNN 参数多、固定输入(受限性...前向传播输入信号产生误差,反向传播计算误差信息更新参数权重矩阵。 网络结构 前向传播 反向传播 计算推导过程 递归神经网络RNN 卷积神经网络CNN 注意力神经网络ANN ...
  • 假设我们现在需要初始化的神经网络如下所示:我们初始化权值为其中W1代表输入层到隐藏层的权值矩阵,W2代表隐藏层到输出层的权值矩阵。假设网络的输入为[x1,x2,x3],然后通过网络的正向传播,可以得出:由于我们可以...
  • 常规的神经网络我们可以知道包括:输入层,隐藏层,输出层 如: 输入层是1*2矩阵X; 隐藏层为1*50的矩阵H; 输出层为1*4的矩阵Y 参数W1为2*50的矩阵 参数W2为50*4的矩阵 传播过程为:H=X*W1+b1;Y=H*W2+b2 ...
  • 这里主要需要注意的是,层与层之间参数矩阵的规格大小: 输入层和隐藏层之间 w[1]w^{[1]}->(4,3):前面的4是隐层神经元的个数,后面的3是输入神经元的个数; b[1]b^{[1]}->(4,1):4表示和隐藏层的神经元个数...
  • 1.卷积核 来自吴恩达课上一张图片,通过对应位置相乘求和,我们从左边...上面为了理解卷积到底是如何进行边缘识别的,在神经网络中,通过将卷积设成参数,反向传播算法来进行更新,从而学到这个卷积核,不仅仅可以识
  • #随机数返回32行2列的矩阵 表示32组 有两个特征 作为输入数据集 X = rdm.rand(32,2) #从X这个32行2列的矩阵中取出一行,判断如果和小于1,给Y赋值1,如果和不小于1,给Y赋值0 #作为输入数据集的标签(正确答案) Y =...
  • 神经网络中的每一层对输入数据进行如下变换:output=relu(dot(W,input)+b)在上述表达式中,W和b都是张量,被称为该层的权重(weight)或可训练参数(trainable parameter),分别对应kernel和bias属性。这些权重包含...
  • 手动生成一个55的矩阵来模拟图片,定义一个22的卷积核,来测试tf.nn.conv2d函数里的不同参数,验证其输出结果。 程序: import tensorflow as tf #1 定义输入变量 [batch, in_height, in_width, in_channels] ...
  • 循环神经网络

    2020-05-20 16:44:24
    从图中可以看出,它的共享参数是各个时间节点对W, U,V都是不变的,这个机制就像卷积神经网络的过滤器机制一样,通过这个方法,实现参数共享,可以大大降低参数量。 隐含层结构 这个网络在每个时间t都有相同的网络...
  • 神经网络的参数主要有两大块,一是各神经元之间连接的权重参数,而是表示各功能神经元阈值的偏置参数。...输入的数据乘以第一层权重参数矩阵W(1)W^{(1)}W(1)后,到达隐层,经隐层的激活函数h(x)h(x)h(x)作用...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 369
精华内容 147
关键字:

参数矩阵输入神经网络