当前位置: 首页 > 编程日记 > 正文

Caffe中对cifar10执行train操作

参考Caffe source中examples/cifar10目录下内容。

cifar10是一个用于普通物体识别的数据集,cifar10被分为10类,分别为airplane、automobile、bird、cat、deer、dog、frog、horse、ship、truck,关于cifar10的详细介绍可以参考: http://blog.csdn.net/fengbingchun/article/details/53560637

调整后的cifar10_quick_solver.prototxt内容如下:

# reduce the learning rate after 8 epochs (4000 iters) by a factor of 10# The train/test net protocol buffer definition
net: "E:/GitCode/Caffe_Test/test_data/model/cifar10/cifar10_quick_train_test.prototxt"
# test_iter specifies how many forward passes the test should carry out.
# In the case of MNIST, we have test batch size 100 and 100 test iterations,
# covering the full 10,000 testing images.
test_iter: 100
# Carry out testing every 500 training iterations.
test_interval: 500
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.001
momentum: 0.9
weight_decay: 0.004
# The learning rate policy
lr_policy: "fixed"
# Display every 100 iterations
display: 100
# The maximum number of iterations
max_iter: 4000
# snapshot intermediate results
snapshot: 4000
snapshot_format: HDF5
snapshot_prefix: "E:/GitCode/Caffe_Test/test_data/model/cifar10/cifar10_quick"
# solver mode: CPU or GPU
#solver_mode: GPU
调整后的cifar10_quick_train_test.prototxt内容如下:

name: "CIFAR10_quick"
layer {name: "cifar"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {mean_file: "E:/GitCode/Caffe_Test/test_data/model/cifar10/mean.binaryproto"}data_param {source: "E:/GitCode/Caffe_Test/test_data/cifar10/cifar10_train_lmdb"batch_size: 100backend: LMDB}
}
layer {name: "cifar"type: "Data"top: "data"top: "label"include {phase: TEST}transform_param {mean_file: "E:/GitCode/Caffe_Test/test_data/model/cifar10/mean.binaryproto"}data_param {source: "E:/GitCode/Caffe_Test/test_data/cifar10/cifar10_test_lmdb"batch_size: 100backend: LMDB}
}
layer {name: "conv1"type: "Convolution"bottom: "data"top: "conv1"param {lr_mult: 1}param {lr_mult: 2}convolution_param {num_output: 32pad: 2kernel_size: 5stride: 1weight_filler {type: "gaussian"std: 0.0001}bias_filler {type: "constant"}}
}
layer {name: "pool1"type: "Pooling"bottom: "conv1"top: "pool1"pooling_param {pool: MAXkernel_size: 3stride: 2}
}
layer {name: "relu1"type: "ReLU"bottom: "pool1"top: "pool1"
}
layer {name: "conv2"type: "Convolution"bottom: "pool1"top: "conv2"param {lr_mult: 1}param {lr_mult: 2}convolution_param {num_output: 32pad: 2kernel_size: 5stride: 1weight_filler {type: "gaussian"std: 0.01}bias_filler {type: "constant"}}
}
layer {name: "relu2"type: "ReLU"bottom: "conv2"top: "conv2"
}
layer {name: "pool2"type: "Pooling"bottom: "conv2"top: "pool2"pooling_param {pool: AVEkernel_size: 3stride: 2}
}
layer {name: "conv3"type: "Convolution"bottom: "pool2"top: "conv3"param {lr_mult: 1}param {lr_mult: 2}convolution_param {num_output: 64pad: 2kernel_size: 5stride: 1weight_filler {type: "gaussian"std: 0.01}bias_filler {type: "constant"}}
}
layer {name: "relu3"type: "ReLU"bottom: "conv3"top: "conv3"
}
layer {name: "pool3"type: "Pooling"bottom: "conv3"top: "pool3"pooling_param {pool: AVEkernel_size: 3stride: 2}
}
layer {name: "ip1"type: "InnerProduct"bottom: "pool3"top: "ip1"param {lr_mult: 1}param {lr_mult: 2}inner_product_param {num_output: 64weight_filler {type: "gaussian"std: 0.1}bias_filler {type: "constant"}}
}
layer {name: "ip2"type: "InnerProduct"bottom: "ip1"top: "ip2"param {lr_mult: 1}param {lr_mult: 2}inner_product_param {num_output: 10weight_filler {type: "gaussian"std: 0.1}bias_filler {type: "constant"}}
}
layer {name: "accuracy"type: "Accuracy"bottom: "ip2"bottom: "label"top: "accuracy"include {phase: TEST}
}
layer {name: "loss"type: "SoftmaxWithLoss"bottom: "ip2"bottom: "label"top: "loss"
}
cifar10_quick_train_test.prototxt可视化结果如下图(http://ethereon.github.io/netscope/quickstart.html):


训练代码如下: 它既可以在CPU也可以在GPU模式下运行,分别对应的工程为Caffe_Test和Caffe_GPU_Test,在GPU模式下耗时较少。

#include "funset.hpp"
#include "common.hpp"int cifar10_train()
{
#ifdef CPU_ONLYcaffe::Caffe::set_mode(caffe::Caffe::CPU);
#elsecaffe::Caffe::set_mode(caffe::Caffe::GPU);
#endifconst std::string filename{ "E:/GitCode/Caffe_Test/test_data/model/cifar10/cifar10_quick_solver.prototxt" };caffe::SolverParameter solver_param;if (!caffe::ReadProtoFromTextFile(filename.c_str(), &solver_param)) {fprintf(stderr, "parse solver.prototxt fail\n");return -1;}cifar10_convert(); // convert cifar10 to LMDBif (cifar10_compute_image_mean() != 0) { // compute cifar10 image mean, generate mean.binaryprotofprintf(stderr, "compute cifar10 image mean fail\n");return -1;}caffe::SGDSolver<float> solver(solver_param);solver.Solve();fprintf(stderr, "cifar10 train finish\n");return 0;
}
执行结果如下图所示:

默认最大迭代次数为4000,此时accuracy为0.7062;如果设置最大迭代次数为10000,则此时accuracy约为0.72。

GitHub:https://github.com/fengbingchun/Caffe_Test

相关文章:

解决掉这些痛点和难点,让知识图谱不再是“噱头”

&#xff08;图片付费下载自视觉中国&#xff09;作者| 夕颜出品| AI科技大本营&#xff08;ID:rgznai100&#xff09;2012 年&#xff0c;谷歌正式提出知识图谱的概念&#xff0c;当时&#xff0c;研究人员的主要目的是用来优化搜索引擎技术。今年初&#xff0c;谷歌前员工&am…

mongodb使用常用语法,持续更新

设置快捷命令D:\mongodb4.0.8\bin>mongod --config "D:\mongodb4.0.8\mongo.conf" --auth --install --serviceName "MongoDB"mongodb配置文件#数据库路径dbpathD:\mongodb4.0.8\data\db#日志输出文件路径logpathD:\mongodb4.0.8\data\log\MongoDB.log#…

Android之NDK开发的简单实例

NDK全称为Native Development Kit&#xff0c;是本地开发工具集。在Android开发中&#xff0c;有时为了能更好的重用以前的C/C的代码&#xff0c;需要将这些代码编译成相应的so&#xff0c;然后通地JNI以供上层JAVA调用。当然&#xff0c;也有的是为了更高的保护性和安全性。下…

阿里披露AI完整布局,飞天AI平台首次亮相

作者 | 夕颜编辑 | 唐小引出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;9 月 26 日上午&#xff0c;在云栖大会阿里云飞天智能主论坛上&#xff0c;年轻的阿里巴巴副总裁、阿里云智能计算平台事业部总经理、高级研究员贾扬清与其在 Facebook 的老同事—— Faceboo…

使用Caffe基于cifar10进行物体识别

在http://blog.csdn.net/fengbingchun/article/details/72953284中对cifar10进行train&#xff0c;这里通过train得到的model&#xff0c;对图像进行识别。cifar10数据集共包括10类&#xff0c;按照0到9的顺序依次为airplane(飞机)、automobile(轿车)、bird(鸟)、cat(猫)、deer…

SoJpt Boot 2.3-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发

SoJpt Boot 2.3-3.8 发布了。SoJpt Boot 基于 JFinal 与 Spring Boot制作, 实现了 Spring Boot 与 Jfinal 的混合双打,使 Spring Boot 下的开发者能够体验 Jfinal 的极速开发特性。新版更新内容如下&#xff1a; SoJpt-Boot-2.3-3.8 changelog 1、加入事务注解,Tx(value"c…

PL/SQL程序设计 第七章 包的创建和应用

7.1 引言包是一组相关过程、函数、变量、常量和游标等PL/SQL程序设计元素的组合&#xff0c;它具有面向对象程序设计语言的特点&#xff0c;是对这些PL/SQL 程序设计元素的封装。包类似于C和JAVA语言中的类&#xff0c;其中变量相当于类中的成员变量&#xff0c;过程和函数相当…

C++11中头文件chrono的使用

在C11中&#xff0c;<chrono>是标准模板库中与时间有关的头文件。该头文件中所有函数与类模板均定义在std::chrono命名空间中。 std::chrono是在C11中引入的&#xff0c;是一个模板库&#xff0c;用来处理时间和日期的Time library。要使用chrono库&#xff0c;需要incl…

为什么平头哥做芯片如此迅猛?

作者 | 胡巍巍 发自杭州云栖大会责编 | 唐小引来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;2018年10月31日&#xff0c;阿里旗下的平头哥半导体有限公司成立。如今&#xff0c;平头哥成立不到一年&#xff0c;就已成绩斐然。2019年9月25日&#xff0c;阿里巴巴旗…

Vue 组件库 heyui@1.18.0 发布,新增地址选择、图片预览组件

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; 新增 CategoryPicker 新增组件 CategoryPicker&#xff0c;地址级联组件的最佳方案。 <CategoryPicker :option"option" v-model"value"/> 相关文档 ImagePreview 新…

HTML5 Dashboard – 那些让你激动的 Web 技术

HTML5 Dashboard 是一个 Mozilla 推出的项目&#xff0c;里面展示了最前沿的 HTML5&#xff0c;CSS3&#xff0c;JavaScript 技术。每一项技术都有简洁&#xff0c;在线演示以及详细的文档链接。这些技术将成为未来一段时间 Web 开发的顶尖技术&#xff0c;如果不想落伍的话就赶…

计算机解决问题没有奇技淫巧,但动态规划还是有点套路

作者 | labuladong来源 | labuladong&#xff08;ID:labuladong&#xff09; 【导读】动态规划算法似乎是一种很高深莫测的算法&#xff0c;你会在一些面试或算法书籍的高级技巧部分看到相关内容&#xff0c;什么状态转移方程&#xff0c;重叠子问题&#xff0c;最优子结构等高…

idea下,Jetty采用main方法启动web项目

为什么80%的码农都做不了架构师&#xff1f;>>> 对于maven多模块的spring web项目&#xff0c;本地开发时&#xff0c;启动的方式一般有如下几种&#xff1a; 使用容器&#xff08;tomcat/jetty/resin等&#xff09;&#xff0c;该方式需要ide支持&#xff0c;而社…

概率论中均值、方差、标准差介绍及C++/OpenCV/Eigen的三种实现

概率论是用于表示不确定性声明(statement)的数学框架。它不仅提供了量化不确定性的方法&#xff0c;也提供了用于导出新的不确定性声明的公理。在人工智能领域&#xff0c;概率论主要有两种用途。首先&#xff0c;概率法则告诉我们AI系统如何推理&#xff0c;据此我们设计一些算…

[转]CentOS 5.5下FTP安装及配置

一、FTP的安装 1、检测是否安装了FTP : [rootlocalhost ~]# rpm -q vsftpd vsftpd-2.0.5-16.el5_5.1 否则显示:[rootlocalhost ~]# package vsftpd is not installed 查看ftp运行状态 service vsftpd status 2、如果没安装FTP&#xff0c;运行yum install vsftpd命令进行安装 如…

C++11中头文件thread的使用

C11中加入了<thread>头文件&#xff0c;此头文件主要声明了std::thread线程类。C11的标准类std::thread对线程进行了封装。std::thread代表了一个线程对象。应用C11中的std::thread便于多线程程序的移值。 <thread>是C标准程序库中的一个头文件&#xff0c;定义了…

python3 urllib 类

urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法&#xff0c;返回一个文件对象&#xff0c;然后可以进行类似文件对象的操作。本例试着打开google >>> import urllib >>> f urllib.urlopen(http://www.google.com.hk/) >&…

阿里飞天大数据飞天AI平台“双生”系统正式发布,9大全新数据产品集中亮相

作者 | 夕颜 责编 | 唐小引 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 如今&#xff0c;大数据和 AI 已经成为两个分不开的词汇&#xff0c;没有大数据&#xff0c;AI 就失去了根基&#xff1b;没有 AI&#xff0c;数据不会呈现爆发式的增长。如何将 AI 与大…

关于JavaScript的闭包(closure)

&#xff08;转载自阮一峰博客&#xff09; 闭包&#xff08;closure&#xff09;是Javascript语言的一个难点&#xff0c;也是它的特色&#xff0c;更是函数式编程的重要思想之一&#xff0c;很多高级应用都要依靠闭包实现。 下面就是我的学习笔记&#xff0c;对于Javascript初…

Vagrant控制管理器——“Hobo”

Hobo是控制Vagrant盒子和在Mac上编辑Vagrantfiles的最佳和最简单的方法。您可以快速启动&#xff0c;停止和重新加载您的Vagrant机器。您可以从头开始轻松创建新的Vagrantfile。点击进入&#xff0c;尽享Hobo for Mac全部功能&#xff01; Hobo做什么&#xff1f; 启动&#xf…

微众银行AI团队开源联邦学习框架,并发布《联邦学习白皮书1.0》

&#xff08;图片由AI科技大本营付费下载自视觉中国&#xff09;编辑 | Jane来源 | 《联邦学习白皮书1.0》出品 | AI科技大本营(ID&#xff1a;rgznai100&#xff09;【导语】2019年&#xff0c;联邦学习成为业界技术研究与应用的焦点。近日&#xff0c;微众银行 AI 项目组编制…

C++11中头文件atomic的使用

原子库为细粒度的原子操作提供组件&#xff0c;允许无锁并发编程。涉及同一对象的每个原子操作&#xff0c;相对于任何其他原子操作是不可分的。原子对象不具有数据竞争(data race)。原子类型对象的主要特点就是从不同线程访问不会导致数据竞争。因此从不同线程访问某个原子对象…

Oracle回收站

回收站是删除对象使用的存储空间。可以使用实例参数recyclebin禁用回收站&#xff0c;默认是on&#xff0c;可以为某个会话或系统设置为off或on。所有模式都有一个回收站。 当表空间不足时可以自动重用回收站对象占用的表空间&#xff08;此后不可能恢复对象&#xff09;&#…

协方差矩阵介绍及C++/OpenCV/Eigen的三种实现

函数f(x)关于某分布P(x)的期望(expectation)或者期望值(expected value)是指&#xff0c;当x由P产生&#xff0c;f作用于x时&#xff0c;f(x)的平均值。对于离散型随机变量&#xff0c;这可以通过求和得到&#xff1a;对于连续型随机变量可以通过求积分得到&#xff1a;当概率分…

10分钟搭建你的第一个图像识别模型 | 附完整代码

&#xff08;图片由AI科技大本营付费下载自视觉中国&#xff09;作者 | Pulkit Sharma译者 | 王威力来源 | 数据派THU&#xff08;ID&#xff1a;DatapiTHU&#xff09;【导读】本文介绍了图像识别的深度学习模型的建立过程&#xff0c;通过陈述实际比赛的问题、介绍模型框架和…

Rancher 2.2.2 发布,优化 Kubernetes 集群运维

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; >>> Rancher 2.2.2 发布了。Rancher 是一个开源的企业级 Kubernetes 平台&#xff0c;可以管理所有云上、所有发行版、所有 Kubernetes集群&#xff0c;解决了生产环境中企业用户可能面…

EXP/EXPDP, IMP/IMPDP应用

2019独角兽企业重金招聘Python工程师标准>>> EXP/EXPDP, IMP/IMPDP应用 exp name/pwddbname filefilename.dmp tablestablename rowsy indexesn triggersn grantsn $ sqlplus username/passwordhostname:port/SERVICENAME OR $ sqlplus username Enter password:…

微软语音AI技术与微软听听文档小程序实践 | AI ProCon 2019

演讲嘉宾 | 赵晟、张鹏整理 | 伍杏玲来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;【导语】9 月 7 日&#xff0c;在CSDN主办的「AI ProCon 2019」上&#xff0c;微软&#xff08;亚洲&#xff09;互联网工程院人工智能语音团队首席研发总监赵晟、微软&#xff0…

C++11中std::condition_variable的使用

<condition_variable>是C标准程序库中的一个头文件&#xff0c;定义了C11标准中的一些用于并发编程时表示条件变量的类与方法等。条件变量是并发程序设计中的一种控制结构。多个线程访问一个共享资源(或称临界区)时&#xff0c;不但需要用互斥锁实现独享访问以避免并发错…

docker基础文档(链接,下载,安装)

一、docker相关链接1.docker中国区官网(包含部分中文文档&#xff0c;下载安装包&#xff0c;镜像加速器)&#xff1a;https://www.docker-cn.com/2.docker官方镜像仓库&#xff1a;https://cloud.docker.com/3.docker下载&#xff1a;https://www.docker-cn.com/community-edi…