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

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

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1#!/usr/bin/env sh
2# This scripts downloads the mnist data and unzips it.
3
4DIR="$( cd "$(dirname "$0")" ; pwd -P )"
5cd "$DIR"
6
7echo "Downloading..."
8
9for fname in train-images-idx3-ubyte train-labels-idx1-ubyte t10k-images-idx3-ubyte t10k-labels-idx1-ubyte
10do
11    if [ ! -e $fname ]; then
12        wget --no-check-certificate http://yann.lecun.com/exdb/mnist/${fname}.gz
13        gunzip ${fname}.gz
14    fi
15done
16

        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所在的路径为


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

因此最终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的作用是判断文件是否存在。下载之后,将文件解压到当前文件夹。

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

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

基于spring boot和mongodb打造一套完整的权限架构(一)

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

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