Caffe学习:使用pycaffe定义网络
使用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定义网络相关推荐
- pytorch学习1:pytorch 定义网络的方式
以一个简单的全连接神经网络为例,介绍网络的定义过程 import torch import torch.nn as nn from torch.optim import SGD import torc ...
- CAFFE学习笔记(一)Caffe_Example之训练mnist
CAFFE学习笔记(一)Caffe_Example之训练mnist 0.参考文献 [1]caffe官网<Training LeNet on MNIST with Caffe>; [ ...
- Caffe学习笔记4图像特征进行可视化
Caffe学习笔记4图像特征进行可视化 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit201 ...
- Caffe学习笔记2
Caffe学习笔记2-用一个预训练模型提取特征 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hi ...
- [转] 介绍深度学习和长期记忆网络
机器学习,深度学习 101 IBM Power Systems 入门 Beth Hoffman 和 Rupashree Bhattacharya 2017 年 7 月 04 日发布 WeiboGoog ...
- caffe学习(4)数据层
数据是学习的原料,参考官网和网友的资料,来看一下数据与数据层. Data:Ins and Outs Caffe学习系列(2):数据层及参数,denny402 数据:输入与输出 在Caffe中,数据是以 ...
- Caffe学习笔记(二):Caffe前传与反传、损失函数、调优
Caffe学习笔记(二):Caffe前传与反传.损失函数.调优 在caffe框架中,前传/反传(forward and backward)是一个网络中最重要的计算过程:损失函数(loss)是学习的驱动 ...
- caffe学习(9)LeNet在Caffe上的使用
使用官网例程训练LeNet. Training LeNet on MNIST with Caffe 准备数据 Caffe程序的运行要注意需命令行要在Caffe的根目录下. cd $CAFFE_ROOT ...
- 提升深度学习模型性能及网络调参
提升深度学习模型性能及网络调参 https://www.toutiao.com/a6637086018950398472/ 图像处理与机器视觉 2018-12-25 10:42:00 深度学习有很多的 ...
- Caffe学习系列(23):如何将别人训练好的model用到自己的数据上
caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分 ...
最新文章
- 惰性求值 php,详细介绍C#函数式编程的示例代码
- python就业方向及工资-Python的5大就业方向,薪资诱人前景好!
- ADOQuery的LockType
- 原生JS实现图片滚动
- 如何成为一个Linux内核开发者
- qemu+linux+x86+64,kvm 内部错误:无法找到适合 x86_64 的模拟器
- 精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式
- ios找不到信任证书_iOS 11 中可用的受信任根证书列表
- Java中PreparedStatement和Statement区别
- 快速排序之螺钉螺母匹配
- IDEA中Maven项目中报错:10 unmapped Spring configuration files
- 渗透测试 QA 收集
- CE实现植物大战僵尸后台运行
- python爆破ZIP文件(支持纯数字,数字+字母,密码本)
- iOS10新特性——————陈Hong鑫
- 苹果5G芯片研发失败:继续依赖高通,还要担心被起诉?
- 了解什么是用户留存率
- 亚马逊FBA标签打印技巧(深圳风火轮amazon团队)
- USB3.0高清采集卡/HDMI TO USB3.0/ps4/5/ns/ipad平板游戏直播手游吃鸡录制相机摄像机抖音电商视频带货hdmi采集
- html标签转换成json失败,在html中收到带有html标签的json失败PHP