卷积神经网络源码——最终输出部分的理解

  针对matlab版本的卷积神经网络的最终分类器(输出部分)的理解:   部分代码:

    '''cnnff'''
    net.fv = []; % 把最后一层得到的特征map拉成一条向量,作为最终提取到的特征向量  
    for j = 1 : numel(net.layers{n-1}.a) % 最后一层的特征map的个数 
        sa = size(net.layers{n-1}.a{j});   %得到几行几列的数
        % 将所有的特征map拉成一条列向量。还有一维就是对应的样本索引。每个样本一列,每列为对应的特征向量  
        net.fv = [net.fv; reshape(net.layers{n-1}.a{j}, sa(1) * sa(2), sa(3))];
    end;
    %  feedforward into output perceptrons
    if strcmp(net.layers{n}.objective, 'sigm')
         % 计算网络的最终输出值
        net.o = sigm(net.ffW * net.fv + repmat(net.ffb, 1, size(net.fv, 2)));
    '''cnntest'''
    net = cnnff(net, x);  %前向传播得到输出
    % [Y,I] = max(X) returns the indices of the maximum values in vector I   
    [~, h] = max(net.o);   % 找到最大的输出对应的标签 
    [~, a] = max(y);  % 找到最大的期望输出对应的索引 
    bad = find(h ~= a); % 找到他们不相同的个数,也就是错误的次数  
    er = numel(bad) / size(y, 2);

  拿MNIST手写体的十种分类来举例, 单纯的提取出CNN输出特征向量的最大值在向量里的位置,位置对应于10个数字0~9   如向量L1=[0 0.9 0.1 0.2 0 0 0 0 0 0 ], 0.9最大,在第二个位置,分类到数字1的类中。   如向量L2=[0 0.5 0.1 0.2 0 0 0 0 0 0.8 ], 0.8最大,在第十个位置,分类到数字9的类中。   说明:为什么第二个位置就代表数字1这一类呢,这和标签有关,这里面标签的设定不是1,2,3,4,5…;而是[1,0,0,0,…],1代表表示哪一类。   当然也可以进行其他分类器设计,CNN的主要任务是进行特征提取,对应分类器设计没有要求。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏九彩拼盘的叨叨叨

flex-grow、flex-shrink、flex-basis详解

flex-grow、flex-shrink、flex-basis这三个属性的作用是:在flex布局中,父元素在不同宽度下,子元素是如何分配父元素的空间的。

744
来自专栏人工智能LeadAI

译文 | 与TensorFlow的第一次接触第二篇:线性回归

本章中,将会利用TensorFlow实现一个简单的模型:线性回归。通过本示例,我会分析一些代码基础及说明如何在学习过程中调用各种重要组件,比如cost func...

2864
来自专栏前端学习心得

如何实现CSS布局

1459
来自专栏PPV课数据科学社区

K-means 在 Python 中的实现

K-means算法简介 K-means是机器学习中一个比较常用的算法,属于无监督学习算法,其常被用于数据的聚类,只需为它指定簇的数量即可自动将数据聚合到多类中,...

3349
来自专栏和蔼的张星的图像处理专栏

4. 经典卷积网络之AlexNet

原文:《ImageNet Classification with Deep Convolutional Neural Networks》 我没有读原文,这个已...

1052
来自专栏人人都是极客

第五课:推理结果的可视化

处理推理结果 在上一课时中,已经通过 Inference 获取到了识别结果,存放在三个数组里: float[] boxes = new float[10...

3589
来自专栏CNN

Tensorflow卷积实现原理+手写python代码实现卷积

从一个通道的图片进行卷积生成新的单通道图的过程很容易理解,对于多个通道卷积后生成多个通道的图理解起来有点抽象。本文以通俗易懂的方式讲述卷积,并辅以图片解释,能快...

1163
来自专栏从零开始学 Web 前端

从零开始学 Web 之 CSS3(七)多列布局,伸缩布局

CSS3中新出现的多列布局 (multi-column) 是传统 HTML 网页中块状布局模式的有力扩充。

1041
来自专栏大学生计算机视觉学习DeepLearning

基于tensorflow实现简单卷积神经网络Lenet5

3407
来自专栏菩提树下的杨过

机器学习笔记(3):多类逻辑回归

仍然是 动手学尝试学习系列的笔记,原文见:多类逻辑回归 — 从0开始 。 这篇的主要目的,是从一堆服饰图片中,通过机器学习识别出每个服饰图片对应的分类是什么(比...

3768

扫码关注云+社区