博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[待续]记录NVIDIA/CAFFE+DIGITS中MNIST案例解析过程
阅读量:6316 次
发布时间:2019-06-22

本文共 2114 字,大约阅读时间需要 7 分钟。

安装过程

1.基本配置

- Ubuntu 14.04 - Python 2.7 - Nvidia/caffe 0.15.1 - DIGITS 6.0.0 - Protobuf 3.2 - GCC4.8 - CUDA8.0+ CUDNN

安装过程不做赘述,任何困难上网古歌+github+stackoverflow解决。

2.MNIST案例运行

./digits/digits-deserver

下载mnist数据:

python -m digits.download_data mnist ~/mnist

打开浏览器输入host地址进入DIGITS主界面。

1. 单击:Login->DATASET->classification:选择本地mnist文件夹:image,lables和validation; 选择LeNet网络,输入model和group名创建dataset。

2. DIGITS(左上角logo)->model->classification:选择mnist文件夹同上;选择LeNet网络,输入mdol和group名进行训练。 可能会遇到的报错:

- 【 Check failed: error == cudaSuccess (8 vs. 0) invalid device function】计算力不匹配,打开makefile.config把CUDA_ARCH这一行comput值写成对应显卡计算力*10(e.g:3.0计算力->30)

- 【error code -11】更换protubuf版本,一般来说如果按照如上配置,则不需要更换。

- 【MEMO run out】显卡内存不够,减小batch_size的值或者换显卡

3.original.prototxt 解析

先打开original.prototxt文本,对比DIGITS里VISUALIZE产生的网络图:

从上往下看,流程:

- raw_data分两类train_data和val_data

1. layer:

name:train-data(层名)

type:Data(层数据类型)

top:data(实际是下一层是data,用于训练的数据包括val-data)

top:label(实际是下一层是label,用于训练的所有标签包括val-label)

data_param::batch_size:64(代表一次迭代,增大该值会使1个epoch内迭代次数减小,提高了使用效率;减小该值会有效适应内存不足的情况,并且收敛更加精确)

2. layer:

name:val-data

type:Data

top:Data(数据传去data)

top:label(同上,去label)

data_param::batch_size:32(是train-data的一半,这说明选取val-data的总数是train-data的一半)

3. layer: name:scale

type:Power

bottom:data(数据从data层传来)

power_param::scale:0.0125(将像素值归一化)

4. layer:

name:conv1

type:Convolution(数据类型:卷积)

bottom:scaled(数据从scaled层来)

top:conv1(数据传往conv1层)

param::lr_mult:1.0(权重参数w的学习率倍数)

param::lr_mult:2.0(权重参数b的学习率倍数)

convolution_param::num_output:20(输出特征图像个数)

kernel_size:5(卷积层filter的尺寸是5*5)

stride: 1(filter移动步数为1)

weight_filter::type:xavier(weight_filter类型是xavierFilter,用于保证每一层输出方差尽可能相等) baise_filter::type:constant()

5. layer:

name:pool1(池化层1)

type:Pooling(类型:池化)

bottom:conv1(数据来自conv1层)

top:pool1(数据去往pool1层)

pooling_param::pool:MAX(最大池化)

kernel_size:2(池化层filter2*2)

stride:2(步数为2)

- 省略layer:conv2卷积层2和layer:pooling2池化层2

8. layer:

name:relu1(非线性层1)

type:ReLu(类型:非线性)

bottom:ip1(数据去往ip1层)

top:ip1(数据来自ip1层)

9. layer:

...

type:InnerProduct1(类型:内积,两个笛卡尔坐标向量的内积) ...

10. 11. 12. layer

...

type:Accuracy, SoftmaxWithLoss, Softmax(分别是三个产出指标:精确度、丢失和归一化函数)

4.solver.prototxt解析

转载地址:http://myyaa.baihongyu.com/

你可能感兴趣的文章
Delphi StringGrid常用属性和常用操作
查看>>
Red Hat Enterprise 6.5 手动配置静态IP地址
查看>>
对于视频矩阵的接口,我们对“她”有不少的误解
查看>>
vsftpd本地用户访问
查看>>
Confluence 6 隐藏人员目录
查看>>
游戏开发中常用的设计模式
查看>>
vsftpd服务器虚拟用户配置方法
查看>>
我的友情链接
查看>>
网站接下来的打算
查看>>
centos SVN服务器搭建
查看>>
CentOS6.8原码安装MySQL5.6
查看>>
LinkedList源码分析
查看>>
使用git
查看>>
Eclipse和包的使用
查看>>
java的集合
查看>>
EIGRP2
查看>>
java synchronized详解
查看>>
mysql调优
查看>>
python中单引,双引,三引号的区别
查看>>
面对什么样的女人时男人容易出轨?
查看>>