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

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 Editor

This temporary script file is located here:
C:\Users\asus\.spyder2\.temp.py
"""
import pickle

f = 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_set

train_set_x, train_set_y = train_set

valid_set_x, valid_set_y = valid_set

       
cnt = 0

fileHandle=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 = 0

fileHandle=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=0

for 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=0

for i in train_set_y:

       if cnt% 10 ==0:

              print cnt
              print 'train_y'

       cnt= cnt +1

       fileHandle.write("%d\n"%i)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值