深度学习caffe–手写字体识别例程(四)—— create_mnist.sh脚本文件详解

释放双眼,带上耳机,听听看~!

        在《深度学习caffe–手写字体识别例程(一)》中,我们进行了手写字体识别例程的演练,在获取了数据集后,需要将数据集转换为caffe需要的LMDB格式的文件,使用create_mnist.sh脚本文件进行转换,这篇文章我们来研究一下这个脚本文件到底做了什么。我们在caffe根目录下的examples/mnist/目录下可以找到这个脚本文件,源码如下所示。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1#!/usr/bin/env sh
2# This script converts the mnist data into lmdb/leveldb format,
3# depending on the value assigned to $BACKEND.
4set -e
5
6EXAMPLE=examples/mnist
7DATA=data/mnist
8BUILD=build/examples/mnist
9
10BACKEND="lmdb"
11
12echo "Creating ${BACKEND}..."
13
14rm -rf $EXAMPLE/mnist_train_${BACKEND}
15rm -rf $EXAMPLE/mnist_test_${BACKEND}
16
17$BUILD/convert_mnist_data.bin $DATA/train-images-idx3-ubyte \
18  $DATA/train-labels-idx1-ubyte $EXAMPLE/mnist_train_${BACKEND} --backend=${BACKEND}
19$BUILD/convert_mnist_data.bin $DATA/t10k-images-idx3-ubyte \
20  $DATA/t10k-labels-idx1-ubyte $EXAMPLE/mnist_test_${BACKEND} --backend=${BACKEND}
21
22echo "Done."
23

        1、在文件的第一行指定的是脚本的解释程序,第二行和第三行是对这个脚步文件的功能的注释。

        2、set -e的作用是在接下来执行的命令中,如果命令的返回值不为0,那么会使所在的进程或shell退出。

        3、接下来三行代码


1
2
3
4
1EXAMPLE=examples/mnist
2DATA=data/mnist
3BUILD=build/examples/mnist
4

定义了3个变量EXAMPLE、DATA、BUILD,它们分别表示三个路径。

        4、BACKEND="lmdb"定义了另一个变量为LMDB尾缀。

        5、echo "Creating ${BACKEND}…"的作用是在终端上打印Creating lmdb… ,其中${BACKEND}表示BACKEND的取值,即lmdb。

        6、


1
2
3
1rm -rf $EXAMPLE/mnist_train_${BACKEND}
2rm -rf $EXAMPLE/mnist_test_${BACKEND}
3

这两行代码的作用是删除EXAMPLE目录下的mnist_train_lmdb和mnist_test_lmdb文件或目录。它们是将以前的痕迹清楚掉,避免与新生成的数据产生混乱。

        7、接下来的命令


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

它的作用是调用BUILD目录下的convert_mnist_data.bin可执行文件来进行数据转换,$DATA/train-images-idx3-ubyte和$DATA/train-labels-idx1-ubyte为DATA目录下的转换前的图片文件和标签文件,也就是转换的原料,$EXAMPLE/mnist_train_${BACKEND}为转换完的文件保存的路径,–backend=${BACKEND}表示生成的文件类型。这两行代码最终会将我们下载的mnist训练数据集转换为lmdb格式的文件。关于convert_mnist_data.bin的作用,我们将在下一篇文章中进行详解。

        8、接下来的两行

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

它与7中的两行代码的作用是相似的,只不过这两行转换的是测试数据集。

       9、最后一行


1
2
1echo "Done."
2

它的作用是转换完成后,在终端中打印Done.

给TA打赏
共{{data.count}}人
人已打赏
安全运维

基于spring boot和mongodb打造一套完整的权限架构(三)【抽象实现类和swagger的实现】

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索