caffe 利用cifar10进行训练_caffe网络训练cifar10-程序员宅基地

技术标签: caffe  深度学习  

下载cifar10数据集

在这里插入图片描述
http://www.cs.toronto.edu/~kriz/cifar.html

生成lmdb文件

import os
import shutil

EXAMPLE="./cifar10"
DATA="./cifar10"
DBTYPE="lmdb"

print "Creating "+DBTYPE+"..."

path1=EXAMPLE+"\\cifar10_train_"+DBTYPE
path2=EXAMPLE+"\\cifar10_test_"+DBTYPE

if os.path.exists(path1):
    shutil.rmtree(path1)
if os.path.exists(path2):
    shutil.rmtree(path2)

caffe_build="D:\\software\\caffe\\bin"
cmd1=caffe_build+"\\convert_cifar_data.exe "+DATA+" "+EXAMPLE+" "+DBTYPE
print cmd1
os.system(cmd1)

print "Computing image mean..."

cmd2=caffe_build+"\\compute_image_mean.exe --backend="+DBTYPE+" "+EXAMPLE+"\\cifar10_train_"+DBTYPE+" "+EXAMPLE+"\\mean.binaryproto"
print cmd2
os.system(cmd2)

在这里插入图片描述

使用compute_image_mean.exe 、convert_cifar_data.exe
在这里插入图片描述

配置参考,https://blog.csdn.net/qq_38641985/article/details/116400423

利用caffe生成net、solver文件并训练

#coding='utf-8'
import lmdb
import caffe
from caffe.proto import caffe_pb2
from caffe import layers as L
from caffe import params as P
from matplotlib import pyplot as plt
import numpy as np


data_path = "cifar10/"
train_net_file = "auto_train.prototxt"
test_net_file = "auto_test.prototxt"
solver_file = "auto_slover.prototxt"


def net(datafile,mean_file,batch_size):
	n = caffe.NetSpec()
	n.data,n.label=L.Data(source=datafile, backend = P.Data.LMDB, batch_size=batch_size, ntop=2, transform_param=dict(scale=1.0/255.0, mean_file=mean_file))
	n.ip1 = L.InnerProduct(n.data, num_output=200, 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)
	n.accu = L.Accuracy(n.ip2, n.label, include={'phase':caffe.TEST})
	return n.to_proto()

def config():
	s = caffe_pb2.SolverParameter()
	s.train_net = train_net_file
	s.test_net.append(test_net_file)
	s.test_interval = 500  
	s.test_iter.append(100) 
	s.display = 500
	s.max_iter = 10000	 
	s.weight_decay = 0.005
	s.base_lr = 0.1
	s.lr_policy = "step"
	s.gamma = 0.1
	s.stepsize = 5000
	s.solver_mode = caffe_pb2.SolverParameter.GPU

	with open(solver_file, 'w') as f:
		f.write(str(s))



def main():
	with open( train_net_file, 'w') as f:
		f.write(str(net(data_path+'cifar10_train_lmdb',  data_path+'mean.binaryproto', 200)))
	with open( test_net_file, 'w') as f:
		f.write(str(net(data_path+'cifar10_test_lmdb',  data_path+'mean.binaryproto', 100)))
	config()
	solver = caffe.get_solver(solver_file)


	niter = 2001
	train_loss = np.zeros(niter)
	test_acc = np.zeros(niter)

	for it in range(niter):
		solver.step(1)  
		train_loss[it] = solver.net.blobs['loss'].data
		test_acc[it] = solver.test_nets[0].blobs['accu'].data


	_, ax1 = plt.subplots()
	ax2 = ax1.twinx()
	ax1.plot(np.arange(niter), train_loss)
	ax2.plot(np.arange(niter), test_acc, 'r')
	ax1.set_xlabel('iteration')
	ax1.set_ylabel('train loss')
	ax2.set_ylabel('test accuracy')
	_.savefig('result.png')


main()

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38641985/article/details/118017941

智能推荐

嵌入式Linux应用开发-第十五章具体单板的按键驱动程序①RK3288的按键驱动程序-程序员宅基地

文章浏览阅读2.9k次,点赞4次,收藏3次。APP直接通过调用读取,导致驱动中的读取函数,这样的结构易于扩展,对于不同的单板,只需要替换 board_xxx.c提供自己的 button_operations结构体即可,构造一个file_operations结构体;drv_open配置GPIO为输入模式; drv_read返回预设状态; APP直接通过调用读取,要把GPIO1_25对应的引脚设置为 GPIO模式,要设置 conf_gpmc_a9寄存器的bit[5]为1,bit[2:0]为 7,这个寄存器的地址是 0x44E10000+0x864。_嵌入式linux应用开发-第十五章具体单板的按键驱动程序①rk3288的按键驱动程序

导出mysql表结构为doc_导出数据库表为world文档说明,以及PowerDesigner导出表结构pdm设计文档...-程序员宅基地

文章浏览阅读171次。如何使用“mysql导出数据库结构为world工具”以及如何使用powerdesigner映射数据库模型一、通过powerdesigner配置ojdbc1、安装并打开powerdesigner,新建一个模型文档,如下图2、选择“database” -> “update model from database”3、弹出窗口后选择“using a data cource”,点击右侧图标4、选择“..._mysql导出表结构word文档

[网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码_xp虚拟机安装wireshark-程序员宅基地

文章浏览阅读8.6k次,点赞9次,收藏17次。这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了Procmon软件基本用法及文件进程、注册表查看,这是一款微软推荐的系统监视工具,功能非常强大可用来检测恶意软件。这篇文章将讲解虚拟机基础知识,包括XP操作系统安装、文件共享设置、网络快照及网络设置等,最后分享虚拟机中安装安全软件进行BBS密码抓取的实验。基础性文章,希望对您有所帮助。_xp虚拟机安装wireshark

c语言运行显示病毒,常见C语言病毒-程序员宅基地

文章浏览阅读1.1k次。#include#include#include#include#includevoid copyfile(char *infile, char *outfile){FILE*in,*out;in =fopen(infile,"r");out =fopen(outfile,"w");while(!feof(in)){fputc(fgetc(in),out);}fclose(in);fclose(o..._ffblk ffblk;

8 种基本软件开发模型:选择哪一种?_请问有哪些软件过程模型,并指出在软件开发时如何选择?-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏29次。软件工程是一个非常复杂的过程。在软件开发阶段要遵循不同的软件开发生命周期模型来指定和设计。这些模型也称为软件开发生命周期(SDLC)模型/方法。每个过程模型都遵循其类型所独有的一系列阶段,以确保软件开发步骤中的成功。如今,已经有 50 多种公认的 SDLC 模型。它们都不是完美的,每一个都给特定的软件开发项目或团队带来了有利的方面和不利的方面。今天,我们将讨论业内最重要和最受欢迎的 7 种 SDLC 方法:瀑布模型 V型 迭代和增量模型 螺旋模型 大爆炸模型 敏捷模型 原型模型 Dev_请问有哪些软件过程模型,并指出在软件开发时如何选择?

javaScript:print()_javascript print-程序员宅基地

文章浏览阅读8.7k次。1. 实现打印功能1) ExecWB()通过脚本程序来调用IE菜单下面的打印命令。实现的代码如下:   function printsetup(){ // 打印页面设置   wb.execwb(8,1);   }   function printpreview(){ // 打印页面预览   wb.execwb(7,1);   }   function printit() { //打印   if (_javascript print

随便推点

Sass预处理器、混合器和Sass运算_sass 变量 和 混合器-程序员宅基地

文章浏览阅读152次。Sass(SyntacticallyAwesomeStylesheets)是一个CSS预处理器,是CSS扩展语言,可以帮助我们减少CSS重复的代码,节省开发时间。Sass(英文全称SyntacticallyAwesomeStylesheets)是一个最初由HamptonCatlin设计并由NatalieWeizenbaum开发的层叠样式表语言。Sass是一个CSS预处理器。Sass是CSS扩展语言,可以帮助我们减少CSS重复的代码,节省开发时间。..._sass 变量 和 混合器

Hive 数据同步ClickHouse_hive同步到clickhouse-程序员宅基地

文章浏览阅读6.1k次,点赞3次,收藏17次。需求:按条件筛选Hive表中的数据同步到ClickHouse中方法一:按照ClickHouse 官方文档提供的方法,在ClickHouse 中创建HDFS引擎表,读取Hive的数据,将读取的数据插入到ClickHouse本地表中。缺点:1.需要在clickhouse中创建两张表2.如果Hadoop集群压力比较大,在读取HDFS数据的时候会出现超时的情况方法二:在能直接读取HDFS数据的主机上安装clickhouse-client,读取HDFS数据后直接插入ClickHouse。#!/bin/_hive同步到clickhouse

navicat中六大约束_navicat约束-程序员宅基地

文章浏览阅读4.5k次,点赞3次,收藏19次。1.NOT NULL:非空,用于保证该字段的值不能为空比如姓名、学号等2.DEFAULT:默认,用于保证该字段有默认值比如性别3.PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空比如学号、员工编号等4.UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空比如座位号5.CHECK:检查约束【mysql中不支持】比如年龄、性别6.FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值在从表添加外键约束,用于引用主表中某列的_navicat约束

windows 10arm_什么是ARM上的Windows 10,它有什么不同?-程序员宅基地

文章浏览阅读9.5k次。windows 10armMicrosoft just launched a version of Windows 10 that will run on low-powered ARM hardware. Unlike Windows RT, the version of Windows 8 that powered the original Surface and Surface 2, thi..._win10arm版和一般win10区别

化学与计算机技术,计算机技术与化学教学整合浅议-程序员宅基地

文章浏览阅读209次。《计算机技术与化学教学整合浅议》由会员分享,可在线阅读,更多相关《计算机技术与化学教学整合浅议(7页珍藏版)》请在人人文库网上搜索。1、计算机辅助化学教学浅议保定容城县平王中学071703 王宝军内容摘要:随着计算机的普及,网络技术的发展,利用计算机辅助化学教学有很大的优势。在实际教学工作中,课件教学、利用网络与学生交流、教师计算机水平的提升、媒体资源库的建设等都是在计算机辅助化学教学的体现。当然..._计算机技术与化学

定时器系列_定时器代码-程序员宅基地

文章浏览阅读516次。为什么要用 setTimeout 模拟 setInterval ?在JS 时间循环制宏任务与微任务中讲到,setInterval 是一个宏任务,但很多时候他并不是准确无误的,会在一些极端情况下出现一些令人费解的问题:推入任务队列后的时间不准确定时器代码:setInterval(fn(),N)上面这句代码的意思其实是fn()将会在 N 秒之后被推入任务队列。所以,在 setInterval 被推入任务队列时,如果在它前面有很多任务或者某个任务等待时间较长比如网络请求等,那么这个定时器的执行时间和_定时器代码

推荐文章

热门文章

相关标签