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

Habiba ·
更新时间:2024-11-11
· 714 次阅读

        在《深度学习caffe--手写字体识别例程(一)》中,我们进行了手写字体识别例程的演练,其中第一步就是用get_mnist.sh脚本文件来获取mnist数据集,这篇文章我们来研究一下这个脚本文件到底做了什么。我们在caffe根目录下的data/mnist/目录下可以找到这个脚本文件,源码如下所示。

#!/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

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

        2、DIR="$( cd "$(dirname "$0")" ; pwd -P )" 这一句比较复杂,我们由内而外进行分析。

首先来看$0,它表示的是第一个参数,相当于c语言中的argv[0],这里实际上就是脚本文件的名字。所以dirname "$0"就等价于dirname get_mnist.sh。

dirname的作用是取文件所在的路径,dirname get_mnist.sh的作用就是取get_mnist.sh所在的路径。前面的$表示返回命令的结果。

cd "$(dirname "$0")" 这一句的含义就是进入get_mnist.sh所在的目录。

在继续往外层分析,cd "$(dirname "$0")" ; pwd -P表示进入到get_mnist.sh所在的目录后,执行pwd -P命令。

pwd -P的作用是返回当前目录,目录是链接时,显示出实际路径,而非使用连接(link)路径。

在我的计算机中,get_mnist.sh所在的路径为

/home/bigmarshal/Documents/deep_learning/caffe/data/mnist

因此最终DIR=/home/bigmarshal/Documents/deep_learning/caffe/data/mnist

        3、cd "$DIR"的作用就是进入到DIR指定的路径内,然后echo "Downloading..."在终端上打印Downloading...

        4、脚本文件余下的部分是一个for循环,在循环中检查train-images-idx3-ubyte、train-labels-idx1-ubyte、t10k-images-idx3-ubyte、t10k-labels-idx1-ubyte这四个文件在当前路径下是否存在,如果不存在,则从网址http://yann.lecun.com/exdb/mnist/下载扩展名为.gz的相应文件,其中-e的作用是判断文件是否存在。下载之后,将文件解压到当前文件夹。

        通过这个脚本,就可以将实例中用到的四个数据集文件下载到相应文件夹了。


作者:fxfreefly



get caffe 手写字体 字体 mnist

需要 登录 后方可回复, 如果你还没有账号请 注册新账号