NNFF为神经网络前向传播的运算函数代码如下:

function nn = nnff(nn, x, y)

%NNFF performs a feedforward pass  NNFF为前向传播运行过程

% nn = nnff(nn, x, y) returns an neural network structure with updated  %函数输入为(网络架构,数据集,数据标签)

% layer activations, error and loss (nn.a, nn.e and nn.L)%函数前向更新每层的参数

n = nn.n;%nn.n为网络层数比如(784,25,10),则n为3
    m = size(x, 1);%将数据集的行数赋值给m,
    
    x = [ones(m,1) x];%ones()产生全1数组。
    nn.a{1} = x;

%feedforward pass %前向传播
    for i = 2 : n-1   
        switch nn.activation_function %根据输入判断激活函数
            case 'sigm'
                % Calculate the unit's outputs (including the bias term)%使用sigmod激活函数,其中已包含偏执。
                nn.a{i} = sigm(nn.a{i - 1} * nn.W{i - 1}');
            case 'tanh_opt'
                nn.a{i} = tanh_opt(nn.a{i - 1} * nn.W{i - 1}');%使用tanh_opt激活函数
        end
        
        %dropout%进行dropout处理
        if(nn.dropoutFraction > 0)%用在训练隐含层中,随机将激活值按比例清零(清零后权值不起作用)
            if(nn.testing)
                nn.a{i} = nn.a{i}.*(1 - nn.dropoutFraction);
            else
                nn.dropOutMask{i} = (rand(size(nn.a{i}))>nn.dropoutFraction);
                nn.a{i} = nn.a{i}.*nn.dropOutMask{i};
            end
        end
        
        %calculate running exponential activations for use with sparsity
        if(nn.nonSparsityPenalty>0) %在nnbp中用的到
            nn.p{i} = 0.99 * nn.p{i} + 0.01 * mean(nn.a{i}, 1);
        end
        
        %Add the bias term%添加与bias相乘的1,等于加上偏执
        nn.a{i} = [ones(m,1) nn.a{i}];
    end
    switch nn.output %输出层的激活函数
        case 'sigm'
            nn.a{n} = sigm(nn.a{n - 1} * nn.W{n - 1}');
        case 'linear'
            nn.a{n} = nn.a{n - 1} * nn.W{n - 1}';
        case 'softmax'
            nn.a{n} = nn.a{n - 1} * nn.W{n - 1}';
            nn.a{n} = exp(bsxfun(@minus, nn.a{n}, max(nn.a{n},[],2)));
            nn.a{n} = bsxfun(@rdivide, nn.a{n}, sum(nn.a{n}, 2)); 
    end

%error and loss  %真实值减去预测值
    nn.e = y - nn.a{n};
    
    switch nn.output %调用不同的损失函数
        case {'sigm', 'linear'}
            nn.L = 1/2 * sum(sum(nn.e .^ 2)) / m; 
        case 'softmax'
            nn.L = -sum(sum(y .* log(nn.a{n}))) / m;
    end
end

MATLAB深度学习代码详细分析(一)__nnff.m相关推荐

  1. 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构】

    原文链接如下 [MATLAB深度学习工具箱]学习笔记--体脂估计Body Fat Estimation_bear_miao的博客-CSDN博客介绍本示例展示一个函数拟合神经网络如何根据解剖学测量结果估 ...

  2. 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】

    介绍 上一篇 [MATLAB深度学习工具箱]学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构]_bear_miao的博客-CSDN博客原文链接如下[MATLAB深度学习工具箱]学 ...

  3. MATLAB深度学习(1) --- 想要做好深度学习?数据集是第一步

    MATLAB深度学习(1) --- 想要做好深度学习?数据集是第一步 创作目的 项目简介 本期重点---数据集构建 本文所使用数据集简介 用table来搭建训练集 总结 创作目的 大家好,这里是微信公 ...

  4. (转)Matlab深度学习工具试玩手册一:基本操作与迁移学习

    原贴博客:https://blog.csdn.net/zfrycw/article/details/80633979 目录 前言 一.利用现成网络进行分类 二.构建简单的分类网络 三.迁移学习 前言 ...

  5. 从TensorFlow到DL4J——主流深度学习框架对比分析

    从TensorFlow到DL4J--主流深度学习框架对比分析 2022年2月22日 极链AI云 官网地址 点击注册 更多AI小知识,关注<极链AI云>公众号 文章目录 从TensorFlo ...

  6. Matlab深度学习-手写体数字识别

    Matlab深度学习 文章目录 Matlab深度学习 前言 一.MNIST手写体数字数据 二.用到的深度学习框架-LeNet5 2-0 LeNet5的网络架构 2-1 框架实现-通过Matlab GU ...

  7. 【深度学习】EfficientNetV2分析总结和flops的开源库

    [深度学习]EfficientNetV2分析总结和flops的开源库 1 EfficientNetV1中存在的问题 2 EfficientNetV2中做出的贡献 3 NAS 搜索 4 Efficien ...

  8. CSDN技术主题月----“深度学习”代码笔记专栏

    from: CSDN技术主题月----"深度学习"代码笔记专栏 2016-09-13 nigelyq 技术专题 Hi,各位用户 CSDN技术主题月代码笔记专栏会每月在CODE博客为 ...

  9. 深度学习在情感分析中的应用

    然语言情感分析简介 情感分析无处不在,它是一种基于自然语言处理的分类技术.其主要解决的问题是给定一段话,判断这段话是正面的还是负面的.例如在亚马逊网站或者推特网站中,人们会发表评论,谈论某个商品.事件 ...

  10. 深度学习笔记——情感分析

    很早之前就想写一篇关于用深度学习做情感分析的文章,一直拖到现在,拖延症啊.... 什么是情感分析? 情感分析(Sentiment analysis)是自然语言处理(NLP)领域的一个任务,又称倾向性分 ...

最新文章

  1. java struts2 漏洞复现合集
  2. (纯干货)万字长文,数据分析利器 pandas 全教程
  3. SPOJ 1812 LCS2 - Longest Common Substring II (后缀自动机)【两种做法】
  4. java python算法_用Java,Python和C ++示例解释的搜索算法
  5. 面板Ext.Panel使用
  6. XML Tree Editor(树形视图XML编辑器) v0.1.0.35
  7. c语言内置画直线函数库,C语言不调用库函数画直线
  8. ACOUG 联合创始人盖国强:万象更新,数据库技术和生态的发展演进
  9. [导入][ASP.NET 控件实作 Day14] 继承 CompositeControl 实作 Toolbar 控件
  10. 扩展整数poj 1061 青蛙的约会 扩展欧几里得
  11. 我的海淀驾校考驾照之路
  12. Linux编译安装iozone,用iozone测试linux文件系统
  13. Javascript飘窗代码
  14. 小议中国人的乡土情结
  15. 2022-2028年中国林业碳汇行业市场发展规模及投资机会分析报告
  16. Padavan挂载SMB共享及编译ffmpeg
  17. 前端基础进阶(三)-史上最详细的变量对象详解
  18. linux 实现不同网段网络互通
  19. RHEL 5 x86-64 无限制全速下载
  20. 计算机上配置静态ip,如何给电脑设置固定IP地址

热门文章

  1. 吞噬星空java_(完)Java基础练习题:题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 - 菜鸟头头...
  2. 语音处理工具:sox
  3. EditPlus 使用技巧以及快捷键
  4. 美国心脏协会:六种心血管疾病的症状区别
  5. mpeg2是信源还是信道编码_11.2、11.3信源及信道编码.ppt
  6. 明源售楼系统技术解析—MVC架构
  7. 10款主流的软件测试工具,你用过吗
  8. 性能效率(Performance efficient)弱点度量
  9. 《西部世界》与《头号玩家》:哪个才是人类与人工智能相处的正确方式?
  10. Codeforce 1296 C. Yet Another Walking Robot