【Kaggel】Digit Recognizer——使用caffe model

一、Kaggel简介

 Kaggel是一个主要为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台。Digit Recognizer是平台上的一个简单的练习项目。

 

二、Digit Recognizer介绍

 题目大意是做一个手写数字识别的分类任务,所给的数据有sample_submission.csv,test.csv和train.csv。sample_submission.csv给出了提交文件的例子(参考其格式),test.csv给出了需要进行分类的测试数据,train.csv给出了带有标签的训练数据。数据是28*28的图像,在提供的数据文件中以一个1*784的一维向量表示,csv文件中一行代表一张图片的向量表示。train.csv中每行开头有附加的一个标签,表示这张图片中写的数字。


三、caffe model测试

 用caffe+mnist数据集训练模型。采用训练了10000次的模型,网络使用Lenet,在准备好网络文件,模型文件和测试数据的csv文件之后,用python程序将数据处理后放入模型,得出结果并储存为标准格式。

 

代码如下:

import numpy as np
import pandas as pd
import sys
caffe_root = '/home/xionghao/caffe/'  #caffe的根目录
sys.path.insert(0, caffe_root + 'python')

import caffe

caffe.set_mode_cpu()

#设置网络配置文件和模型文件
model_def = '/home/xionghao/caffe/examples/kaggle/lenet.prototxt'
model_weights = '/home/xionghao/caffe/examples/kaggle/lenet_iter_10000.caffemodel'

#初始化网络
net = caffe.Net(model_def,model_weights,caffe.TEST)     

#读取测试数据
test=pd.read_csv('/home/xionghao/caffe/examples/kaggle/test.csv').values
n=np.shape(test)[0]

testId = range(1, n+1)
testLabel=[]

for i in xrange(n):
	#归一化
    input=test[i,:]/255.0
    #将1*784的向量调整为28*28的矩阵
	input=input.reshape((1,1,28,28))
	#输入数据
    net.blobs['data'].data[...] = input
    #前向传播一次,从返回的prob中选取最大可能性的分类
	output = net.forward()['prob'][0].argmax()
    testLabel.append(output)
	print output

dataframe = pd.DataFrame({'ImageId': testId, 'Label': testLabel})
dataframe.to_csv("submissions.csv", index=False)

四、上传结果

 将生成的submissions.csv提交,最后准确率为0.99800

程序打包:https://github.com/MBXH/Kaggle_Digit_Recognizer_ByCaffeModel.git

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值