Windows下mnist数据集caffemodel分类模型训练及测试
1. MNIST数据集介绍
MNIST是一个手写数字数据库,样本收集的是美国中学生手写样本,比较符合实际情况,大体上样本是这样的:
MNIST数据库有以下特性:
- 包含了60000个训练样本集和10000个测试样本集;
- 分4部分,分别是一个训练图片集,一个训练标签集,一个测试图片集,一个测试标签集,每个标签的值是0~9之间的数字;
- 原始图像归一化大小为28*28,以二进制形式保存
2. Windows+caffe框架下MNIST数据集caffemodel分类模型训练及测试
1. 下载mnist数据
2. 将MNIST数据集转换为lmdb数据文件
- 它们都是键/值对嵌入式数据库管理系统编程库
- 虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的处理速度比leveldb快10%到15%,另外lmdb允许多种训练模型同时读取同一组数据集。
- lmdb取代了leveldb成为了caffe默认的数据集生成格式。
.\Build\x64\Debug\convert_mnist_data.exe .\data\mnist\mnist_train_lmdb\train-images.idx3-ubyte .\data\mnist\mnist_train_lmdb\train-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb
echo.
.\Build\x64\Debug\convert_mnist_data.exe .\data\mnist\mnist_test_lmdb\t10k-images.idx3-ubyte .\data\mnist\mnist_test_lmdb\t10k-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb
pause
3. 计算数据库的均值文件
.\Build\x64\Debug\compute_image_mean.exe .\examples\mnist\mnist_train_lmdb .\examples\mnist\mean.binaryproto
pause
双击运行,执行结果:
4. lenet训练参数设置
设置lmdb文件路径
设置lenet训练参数
- GPU or CPU: caffe中lenet的训练参数默认是使用GPU,这里修改为CPU;
- 最大迭代次数: 最大迭代次数默认是10000,一般情况下最大迭代次数越大,训练的模型越准确,训练耗时也越长,这里max_iter的值10000不做修改。
- caffemodel生成路径:训练完成之后会生成caffemodel分类模型,默认生成路径是在mnist根目录,这里修改为mnist目录下的CaffeModel文件夹内,snapshot_prefix: "examples/mnist/CaffeModel/lenet";
5. 执行lenet模型训练,生成caffemodel
.\Build\x64\Debug\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt
pause
双击运行,开始训练:
- lenet_iter_10000.caffemodel 和 lenet_iter_5000.caffemodel: 这两个文件是最终生成的caffemodel分类模型;
- lenet_iter_10000.solverstate 和 lenet_iter_5000.solverstate : 这两个文件是记录当前训练状态信息文件。在跑训练模型的时候遇到断电等异常情况导致训练中断,再次训练的时候就不必浪费时间从头开始训练,只需要调用 .solverstate文件,从上次训练中断的位置处继续训练即可,具体使用方法略过。
6. 使用caffemodel测试一下mnist测试数据集的分类准确率
.\Build\x64\Debug\caffe.exe test --model=.\examples\mnist\lenet_train_test.prototxt -weights=.\examples\mnist\CaffeModel\lenet_iter_10000.caffemodel
pause
程序会根据lenet_train_test.prototxt文件里设置的测试数据集的路径自动加载到测试数据,双击运行,完成之后得到测试数据集的识别准确率,约为98.5%:
Windows下mnist数据集caffemodel分类模型训练及测试的更多相关文章
- 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集
上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...
- TensorFlow 下 mnist 数据集的操作及可视化
from tensorflow.examples.tutorials.mnist import input_data 首先需要连网下载数据集: mnsit = input_data.read_data ...
- 关于 Poco::TCPServer框架 (windows 下使用的是 select模型) 学习笔记.
说明 为何要写这篇文章 ,之前看过阿二的梦想船的<Poco::TCPServer框架解析> http://www.cppblog.com/richbirdandy/archive/2010 ...
- 比较windows下的5种IO模型
看到一个很有意思的解释: 老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系.他们的信会被邮递员投递到他们的信箱里. 这和Socket模型非常类似.下面我就以老陈接收信件为例讲解Socke ...
- fcn模型训练及测试
1.模型下载 1)下载新版caffe: https://github.com/BVLC/caffe 2)下载fcn代码: https://github.com/shelhamer/fcn.berkel ...
- Ubuntu16.04下caffe CPU版的图片训练和测试
一 数据准备 二.转换为lmdb格式 1.首先,在examples下面创建一个myfile的文件夹,来用存放配置文件和脚本文件.然后编写一个脚本create_filelist.sh,用来生成train ...
- windows下php7.1安装redis扩展以及redis测试使用全过程
最近做项目,需要用到redis相关知识.在Linux下,redis扩展安装起来很容易,但windows下还是会出问题的.因此,特此记下自己实践安装的整个过程,以方便后来人. 一,php中redis扩展 ...
- windows下php7.1安装redis扩展以及redis测试使用全过程(转)
最近做项目,需要用到redis相关知识.在Linux下,redis扩展安装起来很容易,但windows下还是会出问题的.因此,特此记下自己实践安装的整个过程,以方便后来人. 一,php中redis扩展 ...
- Tensorflow学习教程------利用卷积神经网络对mnist数据集进行分类_利用训练好的模型进行分类
#coding:utf-8 import tensorflow as tf from PIL import Image,ImageFilter from tensorflow.examples.tut ...
随机推荐
- UIScrollView加入控件,控件距离顶部始终有间距的问题
今天.特别郁闷.自己定义了一个UIScrollView,然后在它里面加入控件,如UIButton *button = [[UIButton alloc] initWithFrame:CGRectMak ...
- Hive编程指南_学习笔记01
第四章: HQl的数据定义 1:创建数据库 create database financials; create database if not exists financials; 2: ...
- CDOJ 876 爱管闲事 DP
爱管闲事 春希非常爱管闲事,他每天都会抽空帮助一些同学,由于春希非常死板,出于公平性,春希不会先帮助后来找他的同学. 现在有n个同学需要他的帮助,虽然他很想一天之类帮助所有人,但毕竟精力有限,于是他决 ...
- CoreData 从入门到精通(六)模型版本和数据迁移
前面几篇文章中讲的所有内容,都是在同一个模型版本上进行操作的.但在真实开发中,基本上不会一直停留在一个版本上,因为需求是不断变化的,说不定什么时候就需要往模型里添加新的字段,添加新的模型,甚至是大规模 ...
- kettle工具的设计模块
大家都知道,每个ETL工具都用不同的名字来区分不同的组成部分.kettle也不例外. 比如,在 Kettle的四大不同环境工具 本博客,是立足于kettle工具的设计模块的概念介绍. 1.转换 转换( ...
- Java 以空格分割字符串
Java中使用类似于 str.split("/"); 的方法可以很方便的实现将一个字符串分割为数组, 但是如果分隔符是一个(或几个)空格呢?? 我们的本能反应或许应该是 str.s ...
- 从SQL注入谈数据访问层
什么是SQL注入? SQL注入就是应用程序的开发人员未预期的吧SQL语句传入到应用程序的过程,如果直接使用用户输入的值来构建SQL语句的应用程序是很可能会受到SQL注入攻击的.特别是基于浏览器的网络应 ...
- Android 度量单位
单位 注释 px(像素) 每个像素对应手机上的一个点,在不同设备上1px表示的长度不一定相同 screen size(屏幕尺寸) 指手机对角线的长度,如4.7英寸 resolution(分辨率) 指屏 ...
- 准备把平台挪到linux
在上午准备周末胡老师的课程考核的Ppt时,逐渐我觉得不得不把平台挪到linux了.很多并行的应用不只是在linux上效率更高,而且很多包都在linux上.另外如果不及早挪到Linux上,后面遇到的问题 ...
- SpringCloud学习笔记(14)----Spring Cloud Netflix之Hystrix对Feign的支持
1. Hystrix对Feign的支持 添加Feign中IUserBiz的实现类HystrixFallBack: package com.wangx.cloud.springcloud02consum ...