一、训练
1、从http://yann.lecun.com/exdb/mnist/下载的数据集
这需要进行数据结构转化,转化为lmdb格式。

解压到caffe->data->mnist文件夹下,右键git bash here,输入如下命令:

../../Build/x64/Release/convert_mnist_data train-images.idx3-ubyte train-labels.idx1-ubyte mnist_train_lmdb
../../Build/x64/Release/convert_mnist_data t10k-images.idx3-ubyte t10k-labels.idx1-ubyte mnist_test_lmdb

可能会出现如下错误:

这是因为在进行caffe编译的时候,没有编译convert_mnist_data项目。

所以在进行caffe编译的时候(对于初学者来说)尽量全部设置为启动项进行编译,以防按照博客步骤操作时出错,也不知道错在哪里。对于上面的命令只要路径写对,命令格式也对,都可以。运行后的正确结果为:

同样也可以直接下载转化好格式的文件,在下面修改的时候要数据格式保持一致。
2、然后把生成的两个文件复制到examples\mnist下,修改一下两个文件:

lenet_solver.prototxt:

lenet_train_test.prototxt:

3、在caffe根目录下git bash here输入:

caffe train -solver=examples/mnist/lenet_solver.prototxt -gpu 0


注意:经过测试发现,在修改lenet_solver.prototxt和Lenet_train_test.prototxt文件时,其具体的路径设置和你在哪个目录进行git bash here有关,如果你是在caffe的根目录进行操作的话,就把路径全部修改为examples/mnist/mnist_train_lmdb;如果是在examples/mnist下git bash here 则直接写所需文件的名字。

二、测试
1、进行测试需要均值,及进行训练数据的均值,可以通过conpute_image_mean里获取。在包含mnist_train_lmdb文件的目录下git bash here,输入如下命令:

compute_image_mean mnist_train_lmdb mean.binaryproto


会生成一个mean.binaryproto文件,然后把它放到examples/mnist文件下,并修改lenet_train_test.prototxt文件:

2、在caffe 根目录下git bash here输入如下命令:

caffe test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/lenet_iter_10000.caffemodel -gpu 0

看到如下就成功了:

注意:上述测试结果不太好,但是每次测试结果可能都不一样,也和使用的数据集有关。

上述测试结果不好的原因:最近又跑了一遍mnist,发现在测试阶段,如果不采用均值计算,直接进行测试,效果会很好,准确率可以达到98%以上。首先采用的数据集本身只有黑白两色,图像特征属性很明确,如果采用均值计算,就像均值滤波一样,对数据会产生平滑模糊的效果,从而降低了数据集原本比较鲜明的特征属性,因此降低了测试的准确率。

三、测试自己的手写字符
1、通过画图工具,设置像素大小为28x28的图片,自己写上数字,然后通过matlab命令窗口转化为二值图片:

>> image=imread('C:\Users\admin\Desktop\num\2.png');
>> im=255-rgb2gray(image);
>> imwrite(uint8(im),'C:\Users\admin\Desktop\dig\2.bmp');
>> image=imread('C:\Users\admin\Desktop\num\3.png');
>> im=255-rgb2gray(image);
>> imwrite(uint8(im),'C:\Users\admin\Desktop\dig\3.bmp');
>> image=imread('C:\Users\admin\Desktop\num\6.png');
>> im=255-rgb2gray(image);
>> imwrite(uint8(im),'C:\Users\admin\Desktop\dig\6.bmp');

2、把生成二值图片的文件夹复制到examples\mnist下,然后新建txt文件输入10个阿拉伯数字:

在caffe 根目录下git bash here输入:

classification examples/mnist/lenet.prototxt examples/mnist/lenet_iter_10000.c          affemodel examples/mnist/mean.binaryproto examples/mnist/synset_worlds.txt examp          les/mnist/dig/3.bmp


不过有时候分类会出错。

mnist训练与测试自己手写数字相关推荐

  1. 使用caffemodel模型(由mnist训练)测试单张手写数字样本

    caffe中训练和测试mnist数据集都是批处理,可以反馈识别率,但是看不到单张样本的识别效果,这里使用windows自带的画图工具手写制作0~9的测试数字,然后使用caffemodel模型识别. 1 ...

  2. 机器学习Tensorflow基于MNIST数据集识别自己的手写数字(读取和测试自己的模型)

    机器学习Tensorflow基于MNIST数据集识别自己的手写数字(读取和测试自己的模型)

  3. MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试

    文章目录 MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试 一.题目要求 二.完整的目录结构说明 三.Mnist数据集及数据格式转换 四.BP神经网络相关知识 4.1 ...

  4. caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)

    准备数据集 http://yann.lecun.com/exdb/mnist/提供了训练集与测试集数据的下载. 但是caffe并不是直接处理这些数据,而是要转换成lmdb或leveldb格式进行读取. ...

  5. TensorFlow笔记(3)——利用TensorFlow和MNIST数据集训练一个最简单的手写数字识别模型...

    前言 当我们开始学习编程的时候,第一件事往往是学习打印"Hello World".就好比编程入门有Hello World,机器学习入门有MNIST. MNIST是一个入门级的计算机 ...

  6. TF之NN:利用DNN算法(SGD+softmax+cross_entropy)对mnist手写数字图片识别训练集(TF自带函数下载)实现87.4%识别

    TF之NN:利用DNN算法(SGD+softmax+cross_entropy)对mnist手写数字图片识别训练集(TF自带函数下载)实现87.4%识别 目录 输出结果 代码设计 输出结果 代码设计 ...

  7. MNIST数据集实现手写数字识别(基于tensorflow)

    ------------先看看别人的博客--------------------- Tensorflow 实现 MNIST 手写数字识别         用这个的代码跑通了 使用Tensorflow和 ...

  8. TF之DNN:利用DNN【784→500→10】对MNIST手写数字图片识别数据集(TF自带函数下载)预测(98%)+案例理解DNN过程

    TF之DNN:利用DNN[784→500→10]对MNIST手写数字图片识别数据集(TF自带函数下载)预测(98%)+案例理解DNN过程 目录 输出结果 案例理解DNN过程思路 代码设计 输出结果 案 ...

  9. keras库的安装及使用,以全连接层和手写数字识别MNIST为例

    1.什么是keras 什么是keras? keras以TensorFlow和Theano作为后端封装,是一个专门用于深度学习的python模块. 包含了全连接层,卷积层,池化层,循环层,嵌入层等等等, ...

最新文章

  1. Spring boot返回JSON类型响应及Content-Type设置
  2. SCCM2007系列教程之十操作系统部署(二)
  3. springboot配置https访问
  4. C++ 高级数据类型(六)—— 自定义数据类型
  5. docker中的容器和镜像
  6. Servlet的文件上传
  7. 目前已经学习的一些matlab函数
  8. 特朗普“能源独立”政策效果存疑
  9. H264视频编码原理
  10. C语言整人小程序,慎用,谨记!
  11. 省级面板数据(2003-2019)二十:道路长度、面积、用水、污水、废气、保护区等(stata或excel版本)
  12. 解密带星号手机号网页_外滩大会“硬核科技”解密:支付宝金融级业务的“定海神针”...
  13. 自然科学期刊能发表计算机论文吗,福建交通科技杂志发表论文能评职称吗
  14. Big Faceless Java Pdf报表生成器控件介绍
  15. Mysql分组查询每组最新的一条数据(三种实现方法)
  16. 什么是模块化与模块化的优缺点
  17. 关于Chrome和Firefox
  18. c#里namespace是什么意思?
  19. VBA中MsgBox的几个用法
  20. python小技巧,通过excle生成字典型变量

热门文章

  1. 山西工程职业技术学院计算机,山西工程职业技术学院
  2. 使用ruby和python快速开发metasploit自定义模块
  3. L4操作系统(L4/Fiasco)
  4. 28、Intel RealSense Depth Camera D415相机使用教程
  5. 前端 ---小米导航案例
  6. 免费网文吞噬付费网文
  7. SOHOSmall Office,Home Office,链游领域的颠覆者
  8. 音乐与计算机摘要,音乐的计算机模拟生成研究
  9. makefile recipe for target ‘install‘ failed 解决方案
  10. java生成docx_java利用Freemarker模板生成docx格式的word文档