使用pycaffe定义网络:

  • 参考链接:Learning LeNet

  • 引入库:

    import caffefrom caffe import layers as L
    from caffe import params as P
  • 使用pycaffe定义Net:

    n = caffe.NetSpec()
  • 定义DataLayer:

    n.data, n.label = L.Data(batch_size=batch_size,backend=P.Data.LMDB, source=lmdb,transform_param=dict(scale=1. / 255), ntop=2)# 效果如下:layer {name: "data"type: "Data"top: "data"top: "label"transform_param {scale: 0.00392156862745}data_param {source: "mnist/mnist_train_lmdb"batch_size: 64backend: LMDB}
    }
  • 定义ConvolutionLayer:

    n.conv1 = L.Convolution(n.data, kernel_size=5,num_output=20, weight_filler=dict(type='xavier'))# 效果如下:layer {name: "conv1"type: "Convolution"bottom: "data"top: "conv1"convolution_param {num_output: 20kernel_size: 5weight_filler {type: "xavier"}}
    }
  • 定义PoolingLayer:

    n.pool1 = L.Pooling(n.conv1, kernel_size=2,stride=2, pool=P.Pooling.MAX)# 效果如下:layer {name: "pool1"type: "Pooling"bottom: "conv1"top: "pool1"pooling_param {pool: MAXkernel_size: 2stride: 2}
    }
  • 定义InnerProductLayer:

    n.ip1 = L.InnerProduct(n.pool2, num_output=500,weight_filler=dict(type='xavier'))# 效果如下:layer {name: "ip1"type: "InnerProduct"bottom: "pool2"top: "ip1"inner_product_param {num_output: 500weight_filler {type: "xavier"}}
    }               
  • 定义ReLULayer:

    n.relu1 = L.ReLU(n.ip1, in_place=True)# 效果如下:layer {name: "relu1"type: "ReLU"bottom: "ip1"top: "ip1"
    }
  • 定义SoftmaxWithLossLayer:

    n.loss = L.SoftmaxWithLoss(n.ip2, n.label)# 效果如下:layer {name: "loss"type: "SoftmaxWithLoss"bottom: "ip2"bottom: "label"top: "loss"
    }
  • 定义minst网络:

    import caffefrom caffe import layers as L
    from caffe import params as Pdef lenet(lmdb, batch_size):n = caffe.NetSpec()n.data, n.label = L.Data(batch_size=batch_size,backend=P.Data.LMDB, source=lmdb,transform_param=dict(scale=1. / 255), ntop=2)n.conv1 = L.Convolution(n.data, kernel_size=5,num_output=20, weight_filler=dict(type='xavier'))n.pool1 = L.Pooling(n.conv1, kernel_size=2,stride=2, pool=P.Pooling.MAX)n.conv2 = L.Convolution(n.pool1, kernel_size=5,num_output=50, weight_filler=dict(type='xavier'))n.pool2 = L.Pooling(n.conv2, kernel_size=2,stride=2, pool=P.Pooling.MAX)n.ip1 = L.InnerProduct(n.pool2, num_output=500,weight_filler=dict(type='xavier'))n.relu1 = L.ReLU(n.ip1, in_place=True)n.ip2 = L.InnerProduct(n.relu1, num_output=10,weight_filler=dict(type='xavier'))n.loss = L.SoftmaxWithLoss(n.ip2, n.label)return n.to_proto()
  • 保存网络定义:

    with open('mnist/lenet_auto_train.prototxt', 'w') as f:f.write(str(lenet('mnist/mnist_train_lmdb', 64)))
    with open('mnist/lenet_auto_test.prototxt', 'w') as f:f.write(str(lenet('mnist/mnist_test_lmdb', 100)))
  • lenet_auto_train.prototxt文件如下:(lenet_auto_test.prototxt文件类似):

    layer {name: "data"type: "Data"top: "data"top: "label"transform_param {scale: 0.00392156862745}data_param {source: "mnist/mnist_train_lmdb"batch_size: 64backend: LMDB}
    }
    layer {name: "conv1"type: "Convolution"bottom: "data"top: "conv1"convolution_param {num_output: 20kernel_size: 5weight_filler {type: "xavier"}}
    }
    layer {name: "pool1"type: "Pooling"bottom: "conv1"top: "pool1"pooling_param {pool: MAXkernel_size: 2stride: 2}
    }
    layer {name: "conv2"type: "Convolution"bottom: "pool1"top: "conv2"convolution_param {num_output: 50kernel_size: 5weight_filler {type: "xavier"}}
    }
    layer {name: "pool2"type: "Pooling"bottom: "conv2"top: "pool2"pooling_param {pool: MAXkernel_size: 2stride: 2}
    }
    layer {name: "ip1"type: "InnerProduct"bottom: "pool2"top: "ip1"inner_product_param {num_output: 500weight_filler {type: "xavier"}}
    }
    layer {name: "relu1"type: "ReLU"bottom: "ip1"top: "ip1"
    }
    layer {name: "ip2"type: "InnerProduct"bottom: "ip1"top: "ip2"inner_product_param {num_output: 10weight_filler {type: "xavier"}}
    }
    layer {name: "loss"type: "SoftmaxWithLoss"bottom: "ip2"bottom: "label"top: "loss"
    }
    

Caffe学习:使用pycaffe定义网络相关推荐

  1. pytorch学习1:pytorch 定义网络的方式

    以一个简单的全连接神经网络为例,介绍网络的定义过程 import torch import torch.nn as nn from torch.optim import SGD import torc ...

  2. CAFFE学习笔记(一)Caffe_Example之训练mnist

     CAFFE学习笔记(一)Caffe_Example之训练mnist 0.参考文献 [1]caffe官网<Training LeNet on MNIST with Caffe>;  [ ...

  3. Caffe学习笔记4图像特征进行可视化

    Caffe学习笔记4图像特征进行可视化 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit201 ...

  4. Caffe学习笔记2

    Caffe学习笔记2-用一个预训练模型提取特征 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hi ...

  5. [转] 介绍深度学习和长期记忆网络

    机器学习,深度学习 101 IBM Power Systems 入门 Beth Hoffman 和 Rupashree Bhattacharya 2017 年 7 月 04 日发布 WeiboGoog ...

  6. caffe学习(4)数据层

    数据是学习的原料,参考官网和网友的资料,来看一下数据与数据层. Data:Ins and Outs Caffe学习系列(2):数据层及参数,denny402 数据:输入与输出 在Caffe中,数据是以 ...

  7. Caffe学习笔记(二):Caffe前传与反传、损失函数、调优

    Caffe学习笔记(二):Caffe前传与反传.损失函数.调优 在caffe框架中,前传/反传(forward and backward)是一个网络中最重要的计算过程:损失函数(loss)是学习的驱动 ...

  8. caffe学习(9)LeNet在Caffe上的使用

    使用官网例程训练LeNet. Training LeNet on MNIST with Caffe 准备数据 Caffe程序的运行要注意需命令行要在Caffe的根目录下. cd $CAFFE_ROOT ...

  9. 提升深度学习模型性能及网络调参

    提升深度学习模型性能及网络调参 https://www.toutiao.com/a6637086018950398472/ 图像处理与机器视觉 2018-12-25 10:42:00 深度学习有很多的 ...

  10. Caffe学习系列(23):如何将别人训练好的model用到自己的数据上

    caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分 ...

最新文章

  1. 惰性求值 php,详细介绍C#函数式编程的示例代码
  2. python就业方向及工资-Python的5大就业方向,薪资诱人前景好!
  3. ADOQuery的LockType
  4. 原生JS实现图片滚动
  5. 如何成为一个Linux内核开发者
  6. qemu+linux+x86+64,kvm 内部错误:无法找到适合 x86_64 的模拟器
  7. 精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式
  8. ios找不到信任证书_iOS 11 中可用的受信任根证书列表
  9. Java中PreparedStatement和Statement区别
  10. 快速排序之螺钉螺母匹配
  11. IDEA中Maven项目中报错:10 unmapped Spring configuration files
  12. 渗透测试 QA 收集
  13. CE实现植物大战僵尸后台运行
  14. python爆破ZIP文件(支持纯数字,数字+字母,密码本)
  15. iOS10新特性——————陈Hong鑫
  16. 苹果5G芯片研发失败:继续依赖高通,还要担心被起诉?
  17. 了解什么是用户留存率
  18. 亚马逊FBA标签打印技巧(深圳风火轮amazon团队)
  19. USB3.0高清采集卡/HDMI TO USB3.0/ps4/5/ns/ipad平板游戏直播手游吃鸡录制相机摄像机抖音电商视频带货hdmi采集
  20. html标签转换成json失败,在html中收到带有html标签的json失败PHP

热门文章

  1. C++--第5课 - 新的关键字
  2. String类两种实例化方式的区别
  3. SpringDataJpa 概述
  4. Python入门篇-基础数据类型整型(int),字符串(str)和切片(slice)
  5. oracle中字母A或B是否包含在字符串中
  6. 用户行为分析最重要的3个点 渠道转化留存
  7. 一个简单的conky
  8. 使用源代码编译安装基于LAMP的网站架构
  9. 东芝如何看待蓝牙在物联网热潮下的机遇
  10. Mellanox:撑起国内超融合的网络天空