Caffe的运行mnist手写数字识别
老规矩,首先附上官方教程:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
注:关于caffe的安装教程请看我的上一篇文章
1、必要软件
因为Caffe中使用的是Linux才能运行的shell脚本,因此首先的安装 wget(将wget放入C:\windows\system32)和 Git 方能运行。
2、而后按照官方教程,首先进入caffe路径的根目录,而后打开cmd输入命令:
./data/mnist/get_mnist.sh
这个命令是通过打开/data/mnist目录下的get_mnist.sh脚本来下载mnist的数据,若cmd出现错误可以直接进入打开get_mnist.sh脚本效果是一样的,运行完成后会出现如下4个数据文件:

而后继续输入以下命令,或者进入路径打开也一样
./examples/mnist/create_mnist.sh
若不存在该文件可以自己创建一个create_mnist.sh,具体的代码如下(注:第九行BUILD可能老版本的路径会不一样,根据自己路径来修改):
#!/usr/bin/env sh # This script converts the mnist data into lmdb/leveldb format,
# depending on the value assigned to $BACKEND.
set -e EXAMPLE=.
DATA=../../data/mnist
BUILD=../../scripts/build/examples/mnist/Release BACKEND="lmdb" echo "Creating ${BACKEND}..." rm -rf $EXAMPLE/mnist_train_${BACKEND}
rm -rf $EXAMPLE/mnist_test_${BACKEND} $BUILD/convert_mnist_data.exe $DATA/train-images-idx3-ubyte \
$DATA/train-labels-idx1-ubyte $EXAMPLE/mnist_train_${BACKEND} --backend=${BACKEND}
$BUILD/convert_mnist_data.exe $DATA/t10k-images-idx3-ubyte \
$DATA/t10k-labels-idx1-ubyte $EXAMPLE/mnist_test_${BACKEND} --backend=${BACKEND} echo "Done." read -p "回车继续..."
运行完成后会出现mnist_test_lmdb和mnist_train_lmdb两个文件夹:

cmd显示:

3、打开路径/scripts/build/examples/mnist/Release下的lenet_solver.prototxt(不同版本的caffe的路径不一样,有些老版本的caffe的路径为:/Build/x64/Release),根据自己的情况修改参数:
第二行:若lenet_train_test.prototxt和lenet_solver.prototxt不在同一路径下,则需要在其之前写上lenet_train_test.prototxt所在的路径
第23行:snapshot_prefix:生成的model为产生的训练模型,可根据自己来修改路径
最后一行为选择安装的caffe是CPU还是GPU,我这里安装的是GPU版本
注意:不要直接将文件路径复制过去,因为在这里面路径分隔符是/ ,而不是\,如果使用\后面运行时会出现以下错误(下面几步同样如此,如果不确定就照着我的写):

修改参数后的结果:
# The train/test net protocol buffer definition
net: "lenet_train_test.prototxt"
# test_iter specifies how many forward passes the test should carry out.
# In the case of MNIST, we have test batch size 100 and 100 test iterations,
# covering the full 10,000 testing images.
test_iter: 100
# Carry out testing every 500 training iterations.
test_interval: 500
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
# The learning rate policy
lr_policy: "inv"
gamma: 0.0001
power: 0.75
# Display every 100 iterations
display: 100
# The maximum number of iterations
max_iter: 10000
# snapshot intermediate results
snapshot: 5000
snapshot_prefix: "E:/CaffeSource/caffe/data/mnist/model"
# solver mode: CPU or GPU
solver_mode: GPU
4、打开lenet_train_test.prototxt(上面第二行那个文件)

而后更改上图路径,这两个文件是执行./data/mnist/get_mnist.sh命令时下载的文件,将其路径添加进去
5、在目录\examples\mnist下新建一个train_lenet.txt文档,添加下面一段,然后改后缀名为.bat
..\..\Build\x64\Release\caffe.exe train --solver="lenet_solver.prototxt" --gpu 0
pause
或者在该目录下修改train_lenet.sh文件:
#!/usr/bin/env sh
set -e
BUILD=../../Build/x64/Release/
echo "Training lenet_solver.prototxt..." $BUILD/caffe.exe train --solver=lenet_solver.prototxt $@
echo "Done." read -p "回车继续..."
6、运行该文件,大概运行几分钟后结果如下:

若没有报错,则测试就算大功告成啦!
可以看出准确度为99%,训练好的模型保存在 lenet_iter_10000.caffemodel, 训练状态保存在lenet_iter_10000.solverstate里,结果如下:

Caffe的运行mnist手写数字识别的更多相关文章
- 持久化的基于L2正则化和平均滑动模型的MNIST手写数字识别模型
持久化的基于L2正则化和平均滑动模型的MNIST手写数字识别模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献Tensorflow实战Google深度学习框架 实验平台: Tens ...
- 基于TensorFlow的MNIST手写数字识别-初级
一:MNIST数据集 下载地址 MNIST是一个包含很多手写数字图片的数据集,一共4个二进制压缩文件 分别是test set images,test set labels,training se ...
- Android+TensorFlow+CNN+MNIST 手写数字识别实现
Android+TensorFlow+CNN+MNIST 手写数字识别实现 SkySeraph 2018 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站 ...
- 深度学习之 mnist 手写数字识别
深度学习之 mnist 手写数字识别 开始学习深度学习,先来一个手写数字的程序 import numpy as np import os import codecs import torch from ...
- 基于tensorflow的MNIST手写数字识别(二)--入门篇
http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...
- 第三节,CNN案例-mnist手写数字识别
卷积:神经网络不再是对每个像素做处理,而是对一小块区域的处理,这种做法加强了图像信息的连续性,使得神经网络看到的是一个图像,而非一个点,同时也加深了神经网络对图像的理解,卷积神经网络有一个批量过滤器, ...
- mnist 手写数字识别
mnist 手写数字识别三大步骤 1.定义分类模型2.训练模型3.评价模型 import tensorflow as tfimport input_datamnist = input_data.rea ...
- 用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别
用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 http://phunter.farbox.com/post/mxnet-tutorial1 用MXnet实战深度学 ...
- Tensorflow之MNIST手写数字识别:分类问题(1)
一.MNIST数据集读取 one hot 独热编码独热编码是一种稀疏向量,其中:一个向量设为1,其他元素均设为0.独热编码常用于表示拥有有限个可能值的字符串或标识符优点: 1.将离散特征的取值扩展 ...
随机推荐
- js如何获取隐藏的元素的高度
首先,正常情况下,确保div是有高度的. <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- servlet本质
首先我们先要知道servlet是什么,这有两种解释.一是目前大多数人所说的,一个实现了servlet接口的类就可以叫作servlet.二,servlet只是一个接口.那么看起来这两点都和servlet ...
- 听翁恺老师mooc笔记(15)--文件的输入与输出
<>重定向 如果使用标准的printf输出,有一个比较简便的方法,可以将程序的结果写入一个文件.使用<和>符号,将程序运行结果重定向到文件中去,具体使用到的代码如下: ./te ...
- Beta冲刺 第三天
Beta冲刺 第三天 1. 昨天的困难 昨天的困难主要集中在对Ajax的使用上,不熟悉这种语法,所以也就浪费了时间,导致昨天的批量删除没有完全完成. 2. 今天解决的进度 潘伟靖: 1.完善了昨天没写 ...
- 第十四周实验报告:实验四 Android程序设计
20162317袁逸灏 第十四周实验报告:实验四 Android程序设计 实验内容 Android Studio 实验要求 学会使用Android Studio 学习 活动 以及相关知识内容 学习 U ...
- 2017-2018-1 我爱学Java 第四五周 作业
<打地鼠>Android游戏--需求规格说明书 工作流程 组员分工及工作量比例 <需求规格说明书>的码云链接 总结与反思 参考资料 工作流程 小组成员预先参考蓝墨云班课第八周中 ...
- SQL的介绍及MySQL的安装
基础篇 - SQL 介绍及 MySQL 安装 SQL的介绍及MySQL的安装 课程介绍 本课程为实验楼提供的 MySQL 实验教程,所有的步骤都在实验楼在线实验环境中完成, ...
- 06_Python的数据类型3元组,集合和字典_Python编程之路
上一节跟大家讲了Python的列表,当然不是完整的讲完,后续我们还会提到,这一节我们还是来讲Python的数据类型 首先要讲到的就是元组 元组其实拥有列表的一些特性,可以存储不同类型的值,但在某些方面 ...
- JAVA_SE基础——16.方法
接触过C语言的同学,这小章节很容易接受.Java中的方法是类似与C语言中的函数 功能和调用方法都类似 只不过叫法不一样 因为java是面向对象 c是面向过程 仅仅是叫法不同.. . 看到 ...
- Autofac 简单示例
公司不用任何IOC,ORM框架,只好自己没事学学. 可能有些语言描述的不专业 希望能有点用 namespace Autofac { class Program { //声明一个容器 private s ...