caffe 04 win10 运行examples的mnist测试用例

本文档详细介绍了如何使用Caffe进行MNIST数据集的手写数字识别测试,包括下载测试数据、生成LMDB数据库、运行测试及保存日志等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01 资料

caffe官网Examples中有关于mnist测试的详细介绍。http://caffe.berkeleyvision.org/gathered/examples/mnist.html
caffe github下载的代码中有关于mnist的网络定义示例和下载数据sh文件。

目录文件类型文件作用
examples\mnist*.prototxtcaffe 网络定义文件
examples\mnistcreate_mnist.sh生成lmdb的linxu shell脚本
examples\mnistreadme.md等同于官网mnist测试详细介绍
examples\mnisttrain_*.shlinxu下运行mnist测试的各种命令行脚本
data\mnistget_mnist.sh下载mnist实验数据的linux shell脚本

02 测试操作步骤

02.01 下载测试数据

打开caffe\data\mnist\get_mnist.sh文件。

#!/usr/bin/env sh
# This scripts downloads the mnist data and unzips it.

DIR="$( cd "$(dirname "$0")" ; pwd -P )"
cd "$DIR"

echo "Downloading..."

for fname in train-images-idx3-ubyte train-labels-idx1-ubyte t10k-images-idx3-ubyte t10k-labels-idx1-ubyte
do
    if [ ! -e $fname ]; then
        wget --no-check-certificate http://yann.lecun.com/exdb/mnist/${fname}.gz
        gunzip ${fname}.gz
    fi
done

根据文件内容,到http://yann.lecun.com/exdb/mnist网站下载,并且保持在data\mnist\目录。

测试数据文件
train-images-idx3-ubyte.gz
train-labels-idx1-ubyte.gz
t10k-images-idx3-ubyte.gz
t10k-labels-idx1-ubyte.gz

下载后,使用winrar等解压软件,把4个压缩文件解压到data\mnist\目录下。

解压后文件
data\mnist\train-images.idx3-ubyte
data\mnist\train-labels.idx1-ubyte
data\mnist\t10k-images.idx3-ubyte
data\mnist\t10k-labels.idx1-ubyte

02.02 生成lmdb数据库

阅读caffe\examples\mnist\create_mnist.sh内容。这个是linux下面生成lmdb数据库的脚本。

#!/usr/bin/env sh
# This script converts the mnist data into lmdb/leveldb format,
# depending on the value assigned to $BACKEND.
set -e

EXAMPLE=examples/mnist
DATA=data/mnist
BUILD=build/examples/mnist

BACKEND="lmdb"

echo "Creating ${BACKEND}..."

rm -rf $EXAMPLE/mnist_train_${BACKEND}
rm -rf $EXAMPLE/mnist_test_${BACKEND}

$BUILD/convert_mnist_data.bin $DATA/train-images-idx3-ubyte \
  $DATA/train-labels-idx1-ubyte $EXAMPLE/mnist_train_${BACKEND} --backend=${BACKEND}
$BUILD/convert_mnist_data.bin $DATA/t10k-images-idx3-ubyte \
  $DATA/t10k-labels-idx1-ubyte $EXAMPLE/mnist_test_${BACKEND} --backend=${BACKEND}

echo "Done."

其中convert_mnist_data.bin对应vs2015的工程中的exaples目录下的convert_mnist_data。

生成的可执行文件是
build\x64\examples\mnist\Debug\convert_mnist_data-d.exe
build\x64\examples\mnist\Release\convert_mnist_data.exe
如果运行了INSTALL,build\x64\install\bin下面也会有对应的文件。
为了使用方便,模拟create_mnist.sh写一个windows版本的create_mnist.bat。放在create_mnist.sh相同目录下。(注意文本最好采用utf8格式保存)

@echo off & setlocal enabledelayedexpansion
:: This script converts the mnist data into lmdb/leveldb format,
:: depending on the value assigned to %BACKEND%.
:: 在caffe 根目录运行examples\mnist\create_mnist.bat
%~d0
cd %~dp0
echo %cd%
echo currentpath: %~dp0

:: 网络定义文件的位置,lmdb也生成在这里
set EXAMPLE=..\..\examples\mnist
:: 测试数据的位置,
set DATA=..\..\data\mnist

:: 工程文件生成的位置
::set cfg=Debug
::set BUILD=..\..\build\x64\examples\mnist\%cfg%
::set exename=convert_mnist_data-d.exe

:: 发布文件所在位置,即vs2015工程中运行INSTALL后,文件的安装位置
set BUILD=..\..\build\x64\install\bin
:: 可发布的release版本lmdb生成工具
set exename=convert_mnist_data.exe
:: 生成数据类型
set BACKEND=lmdb

echo "Creating !BACKEND! start"

:: 删除存在的数据库目录,如果目录存在,会运行失败
IF EXIST %EXAMPLE%\mnist_train_%BACKEND%. echo rmdir /S /Q %EXAMPLE%\mnist_train_%BACKEND%.
IF EXIST %EXAMPLE%\mnist_train_%BACKEND%. rmdir /S /Q %EXAMPLE%\mnist_train_%BACKEND%.

IF EXIST %EXAMPLE%\mnist_test_%BACKEND%. echo rmdir /S /Q %EXAMPLE%\mnist_test_%BACKEND%.
IF EXIST %EXAMPLE%\mnist_test_%BACKEND%. rmdir /S /Q %EXAMPLE%\mnist_test_%BACKEND%.

:: 生成训练数据库
::
echo %BUILD%\%exename% %DATA%\train-images.idx3-ubyte ^
  %DATA%\train-labels.idx1-ubyte %EXAMPLE%\mnist_train_%BACKEND% --backend=%BACKEND%
%BUILD%\%exename% %DATA%\train-images.idx3-ubyte %DATA%\train-labels.idx1-ubyte %EXAMPLE%\mnist_train_%BACKEND% --backend=%BACKEND%
:: 生成测试数据库
::
echo %BUILD%\%exename% %DATA%\t10k-images.idx3-ubyte ^
  %DATA%\t10k-labels.idx1-ubyte %EXAMPLE%\mnist_test_%BACKEND% --backend=%BACKEND%
%BUILD%\%exename% %DATA%\t10k-images.idx3-ubyte %DATA%\t10k-labels.idx1-ubyte %EXAMPLE%\mnist_test_%BACKEND% --backend=%BACKEND%

echo "Create !BACKEND! Done."

:: 根据example\mnist\下面的*.sh运行测试
::mkdir build\x64\log\
::build\x64\install\bin\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt > build\x64\log\lenet_solver.log 2>&1

endlocal&goto :EOF
:EOF

保存examples\mnist\create_mnist.bat文件后,在caffe根目录运行:

examples\mnist\create_mnist.bat

或者在examples\mnist目录下直接运行如下语句。(运行前确保examples\mnist\目录下没有mnist_train_lmdb和mnist_test_lmdb目录)

功能命令
生成train数据..\..\build\x64\install\bin\convert_mnist_data.exe ..\..\data\mnist\train-images.idx3-ubyte ..\..\data\mnist\train-labels.idx1-ubyte ..\..\examples\mnist\mnist_train_lmdb –backend=lmdb
生成test数据..\..\build\x64\install\bin\convert_mnist_data.exe ..\..\data\mnist\t10k-images.idx3-ubyte ..\..\data\mnist\t10k-labels.idx1-ubyte ..\..\examples\mnist\mnist_test_lmdb –backend=lmdb

生成的数据库文件在examples\mnist\目录下。

02.03 运行测试数据

打开caffe\examples\mnist\train_lenet.sh脚本。内容如下:

#!/usr/bin/env sh
set -e

./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt $@

根据train_lenet.sh内容,在caffe根目录运行如下命令:

build\x64\install\bin\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt
::或者
::build\x64\tools\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt

::尽量不要运行debug版本,慢!
::build\x64\tools\Debug\caffe-d.exe train --solver=examples/mnist/lenet_solver.prototxt

运行结果如下:
这里写图片描述

02.04 保存运行日志

在caffe根目录下(D:\git\DeepLearning\caffe)运行如下命令。创建一个运行日志目录,运行测试用例。

mkdir build\x64\log\
build\x64\install\bin\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt > build\x64\log\lenet_solver.log 2>&1

会在build\x64\log下面生产lenet_solver.log运行日志。
这里写图片描述

02.05 运行其他mnist测试用例

根据examples/mnist/*.sh,可以运行其他测试网络。
比如lenet_solver_adam.prototxt:

build\x64\install\bin\caffe.exe train --solver=examples/mnist/lenet_solver_adam.prototxt> build\x64\log\lenet_solver_adam.log 2>&1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值