deeplearning----利用逻辑回归分类MINIST数字

来源:互联网 发布:淘宝店铺装修自学 编辑:程序博客网 时间:2024/06/04 09:21

Google实验室的Corinna Cortes和纽约大学柯朗研究所的Yann LeCun建有一个手写数字数据库,训练库有60,000张手写数字图像,测试库有10,000张。

请访问原站 http://yann.lecun.com/exdb/mnist/



模型


 对数回归模型是线性概率分类器,它有两个参数,权重矩阵W和偏移向量b.分类的过程是把数据投影到一组高维超平面上,数据和平面的距离反应了它属于这个类别的概率。这个模型的数学公式可以表示为:

#

模型的输出即为预测的结果,它的值为:

代码如下:



原例子中的mnist.pkl.gz是压缩后的数据族,为了能够便于C++直接处理,我们首先把mnist.pkl.gz改成易于处理的数据-结果对,即:将mnist.pkl解压为6个文件:

train_set_x,  train_set_y

valid_set_x, valid_set_y

test_set_x, test_set_y

对应train,valid,test三个集合(每个集合两对,即数据-结果对)。

train_set_x中的784列对应train_set_y中的一行,即代表一个测试数据集合。其中train_set_x每一行是一个浮点数,784行(784为28x28的灰度浮点数 )代表一个数字的灰度图,对应train_set_y的一行,即对应的数字。

 

这个python程序如下,很简单,写成文本文件好了,然后再写一个C++程序读这个文本文件,转成相关的 二进制文件。

 我的python版本是2.7,所以与3.X版本的语法上有区别,要注意:

# -*- coding: utf-8 -*-"""Spyder EditorThis temporary script file is located here:C:\Users\asus\.spyder2\.temp.py"""import picklef = open(r'e:\mnist.pkl', 'rb')#write_file=open(r'e:\ab.txt','wb')train_set,valid_set, test_set = pickle.load(f)f.close()test_set_x, test_set_y = test_settrain_set_x, train_set_y = train_setvalid_set_x, valid_set_y = valid_set       cnt = 0fileHandle=open(r'e:\test_set_x.txt',"w")for i in test_set_x:       if cnt% 10 ==0:              print cnt              print 'test_x'       cnt= cnt +1       for j in i:              fileHandle.write("%.6f\n"%j)             fileHandle.close()cnt = 0fileHandle=open(r'e:\test_set_y.txt',"w")for i in test_set_y:       if cnt% 10 ==0:              print cnt              print 'test_y'       cnt= cnt +1       fileHandle.write("%d\n"%i)              fileHandle=open(r'e:\train_set_x.txt',"w")cnt=0for i in train_set_x:       if cnt% 10 ==0:              print cnt              print 'train_x'       cnt= cnt +1       for j in i:              fileHandle.write("%.6f\n"%j)fileHandle.close()fileHandle=open(r'e:\train_set_y.txt',"w")cnt=0for i in train_set_y:       if cnt% 10 ==0:              print cnt              print 'train_y'       cnt= cnt +1       fileHandle.write("%d\n"%i)


0 0
原创粉丝点击