资讯专栏INFORMATION COLUMN

Caffe神经网络服务层及主要参数

89542767 / 325人阅读

  此篇文章主要是给大家介绍了Caffe神经网络服务层及主要参数实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪


  前言


  要运行caffe,必须要先构建一个实体模型(model),如较为常见的Lenet,Alex等,所以一个实体模型由好几个屋(layer)构成,每个屋又由很多主要参数构成。每一个主要参数都界定在caffe.proto这一文档中。要熟练掌握caffe,最重要的就是学好环境变量(prototxt)的编辑。


  层有许多种种类,例如Data,Convolution,Pooling等,层间的数据流动要以Blobs的形式进行。


  服务层


  下面我们就为大家介绍一下下服务层.


  服务层是每一个模型底层,是模型通道,不但给出的数据的键入,也给出的数据从Blobs转换成其他文件格式开展储存导出。一般数据的预处理(如减掉平均值,等比例缩放,裁切和镜象等),在这一层层设定主要参数完成。


  信息来源能够来自高效率的数据库系统(如LevelDB和LMDB),可以直接是来自于运行内存。假如不太注重质量得话,数据信息也可以来自硬盘的hdf5文件或照片格式。


  每一个服务层都所具有的公共主要参数:首先看实例


  layer{
  name:"cifar"
  type:"Data"
  top:"data"
  top:"label"
  include{
  phase:TRAIN
  }
  transform_param{
  mean_file:"examples/cifar10/mean.binaryproto"
  }
  data_param{
  source:"examples/cifar10/cifar10_train_lmdb"
  batch_size:100
  backend:LMDB
  }
  }


  name:表明该层名字,可任意取


  type:层种类,假如是Data,表明数据信息来自LevelDB或LMDB。依据数据信息的源头不一样,服务层的种类也不尽相同(接下来会详细描述)。一般是在练习时,大家都采用的LevelDB或LMDB数据信息,因而层种类设为Data。


  top或bottom:每层用bottom来录入数据,用top来导出数据信息。如果要有top没有bottom,则此层仅有导出,并没有键入。相反也是。假如多么个top的多个bottom,表明多么个blobs数据的输入输出。


  data与label:在数据层中,至少有一个命名为data的top。如果有第二个top,一般命名为label。这种(data,label)配对是分类模型所必需的。


  include:一般训练的时候和测试的时候,模型的层是不一样的。该层(layer)是属于训练阶段的层,还是属于测试阶段的层,需要用include来指定。如果没有include参数,则表示该层既在训练模型中,又在测试模型中。


  Transformations:数据的预处理,可以将数据变换到定义的范围内。如设置scale为0.00390625,实际上就是1/255,即将输入数据由0-255归一化到0-1之间


  其它的数据预处理也在这个地方设置:


  transform_param{
  scale:0.00390625
  mean_file_size:"examples/cifar10/mean.binaryproto"
  #用一个配置文件来进行均值操作
  mirror:1#1表示开启镜像,0表示关闭,也可用ture和false来表示
  #剪裁一个227*227的图块,在训练阶段随机剪裁,在测试阶段从中间裁剪
  crop_size:227
  }


  后面的data_param部分,就是根据数据的来源不同,来进行不同的设置。


  1、数据来自于数据库(如LevelDB和LMDB)


  层类型(layer type):Data


  必须设置的参数:


  source:包含数据库的目录名称,如examples/mnist/mnist_train_lmdb


  batch_size:每次处理的数据个数,如64


  可选的参数:


  rand_skip:在开始的时候,路过某个数据的输入。通常对异步的SGD很有用。


  backend:选择是采用LevelDB还是LMDB,默认是LevelDB.


  示例:


  layer{
  name:"mnist"
  type:"Data"
  top:"data"
  top:"label"
  include{
  phase:TRAIN
  }
  transform_param{
  scale:0.00390625
  }
  data_param{
  source:"examples/mnist/mnist_train_lmdb"
  batch_size:64
  backend:LMDB
  }
  }

  2、数据来自于内存


  层类型:MemoryData


  必须设置的参数:


  batch_size:每一次处理的数据个数,比如2


  channels:通道数


  height:高度


  width:宽度


  示例:


  layer{
  top:"data"
  top:"label"
  name:"memory_data"
  type:"MemoryData"
  memory_data_param{
  batch_size:2
  height:100
  width:100
  channels:1
  }
  transform_param{
  scale:0.0078125
  mean_file:"mean.proto"
  mirror:false
  }
  }
  3、数据来自于HDF5
  层类型:HDF5Data
  必须设置的参数:
  source:读取的文件名称
  batch_size:每一次处理的数据个数


  示例:


  layer{
  name:"data"
  type:"HDF5Data"
  top:"data"
  top:"label"
  hdf5_data_param{
  source:"examples/hdf5_classification/data/train.txt"
  batch_size:10
  }
  }

  4、数据来自于图片


  层类型:ImageData


  必须设置的参数:


  source:一个文本文件的名字,每一行给定一个图片文件的名称和标签(label)


  batch_size:每一次处理的数据个数,即图片数


  可选参数:


  rand_skip:在开始的时候,路过某个数据的输入。通常对异步的SGD很有用。


  shuffle:随机打乱顺序,默认值为false


  new_height,new_width:如果设置,则将图片进行resize


  示例:


  layer{
  name:"data"
  type:"ImageData"
  top:"data"
  top:"label"
  transform_param{
  mirror:false
  crop_size:227
  mean_file:"data/ilsvrc12/imagenet_mean.binaryproto"
  }
  image_data_param{
  source:"examples/_temp/file_list.txt"
  batch_size:50
  new_height:256
  new_width:256
  }
  }


  5、数据来源于Windows


  层类型:WindowData


  必须设置的参数:


  source:一个文本文件的名字


  batch_size:每一次处理的数据个数,即图片数


  示例:


  layer{
  name:"data"
  type:"WindowData"
  top:"data"
  top:"label"
  include{
  phase:TRAIN
  }
  transform_param{
  mirror:true
  crop_size:227
  mean_file:"data/ilsvrc12/imagenet_mean.binaryproto"
  }
  window_data_param{
  source:"examples/finetune_pascal_detection/window_file_2007_trainval.txt"
  batch_size:128
  fg_threshold:0.5
  bg_threshold:0.5
  fg_fraction:0.25
  context_pad:16
  crop_mode:"warp"
  }
  }


  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128774.html

相关文章

  • Caffe卷积神经网络视觉层Vision Layers及参数详解

      此篇文章主要是给大家介绍了Caffe神经网络视觉效果层VisionLayers及主要参数详细说明,感兴趣的小伙伴可以参考参考一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪  前言  每一个层都有着的主要参数,如name,type,bottom,top和transform_param请参考我前篇文章:Caffe神经网络数据访问层及主要参数  文中只解读视觉效果层(VisionLayer...

    89542767 评论0 收藏0
  • 基准评测TensorFlow、Caffe等在三类流行深度神经网络上的表现

    摘要:在两个平台三个平台下,比较这五个深度学习库在三类流行深度神经网络上的性能表现。深度学习的成功,归因于许多层人工神经元对输入数据的高表征能力。在年月,官方报道了一个基准性能测试结果,针对一个层全连接神经网络,与和对比,速度要快上倍。 在2016年推出深度学习工具评测的褚晓文团队,赶在猴年最后一天,在arXiv.org上发布了的评测版本。这份评测的初版,通过国内AI自媒体的传播,在国内业界影响很...

    canopus4u 评论0 收藏0
  • caffe的python插口之手写数字识别mnist案例

      文中主要是给大家介绍了caffe的python插口之手写数字识别mnist案例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪  论文引言  机器学习第一个案例一般都是是mnist,只需这个案例彻底搞懂了,其他的便是触类旁通的事了。因为字数缘故,文中不简单介绍环境变量里边每一个指标的具体函义,如果要搞明白的,请参考我之前的微博文章:  数据访问层及主...

    89542767 评论0 收藏0
  • 关于深度学习的框架、特征和挑战

    摘要:在嵌入式系统上的深度学习随着人工智能几乎延伸至我们生活的方方面面,主要挑战之一是将这种智能应用到小型低功耗设备上。领先的深度学习框架我们来详细了解下和这两个领先的框架。适用性用于图像分类,但并非针对其他深度学习的应用,例如文本或声音。 在嵌入式系统上的深度学习随着人工智能 (AI) 几乎延伸至我们生活的方方面面,主要挑战之一是将这种智能应用到小型、低功耗设备上。这需要嵌入式平台,能够处理高性...

    JohnLui 评论0 收藏0
  • 雅虎开源首个色情图像检测深度学习解决方案

    摘要:雅虎开源了一个进行色情图像检测的深度学习解决方案。卷积神经网络架构和权衡近年来,卷积神经网络已经在图像分类问题中取得了巨大成功。自年以来,新的卷积神经网络架构一直在不断改进标准分类挑战的精度。 雅虎开源了一个进行色情图像检测的深度学习解决方案。据文章介绍,这可能是较早的识别 NSFW 图像的开源模型。开源地址:https://github.com/yahoo/open_nsfw自动识别一张对...

    saucxs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<