卷积神经网络源码——最终输出部分的理解
来源:互联网 发布:金马网络服装批发城 编辑:程序博客网 时间:2024/06/06 09:21
针对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 0
- 卷积神经网络源码——最终输出部分的理解
- 卷积神经网络的理解
- 卷积神经网络(三):卷积神经网络CNN的简单实现(部分Python源码)
- 卷积神经网络(三):卷积神经网络CNN的简单实现(部分Python源码)
- 卷积神经网络中卷积概念的理解
- 卷积神经网络CNN的理解
- CNN卷积神经网络的理解
- 卷积神经网络CNNs的理解
- CNN卷积神经网络的理解
- YJango的卷积神经网络——介绍
- YJango的卷积神经网络——介绍
- 深度学习——通俗理解卷积神经网络
- 对卷积神经网络(CNN)的简单理解
- 对LeNet-5卷积神经网络的理解
- 卷积神经网络(CNN)的理解
- 卷积神经网络CNNs的理解与体会
- 更好的理解分析深度卷积神经网络
- 对卷积神经网络中1*1 卷积的理解
- C语言基础函数 判断是否闰年
- Cracking the code interview总结
- VC屏幕截图并保存为bmp、jpg、png等格式文件
- IOS-UI学习笔记(超级猜图)
- 函数-从进程名获得进程ID、从进程ID获得进程路径
- 卷积神经网络源码——最终输出部分的理解
- Hive外部分区表加载flume打到hdfs上文件,读不到.tmp文件
- JVM1
- waitpid函数使用
- 文件的自定义包发送接收
- JNDI初探之tomcat的datasource配置
- android:configChanges
- QT 添加资源文件
- mysql索引总结----mysql 索引类型以及创建