制作theano可用的训练样本

最终生成的效果

我把我制作的训练样本贴出来,供大家参考。


  1. import random  
  2. import numpy    
  3. import time    
  4. nums=[]  #训练样本的list  
  5.     
  6. start = time.time()    
  7. with open('11.txt') as f:  #11.txt为图像数据,每个数位0-255,数与数之间为空格,一个图像数据为一行  
  8.     for line in f:    
  9.     
  10.         a=line.split()    
  11.         nums+=a    
  12.     
  13.     
  14.     
  15. sss=numpy.asarray(nums,dtype=float)    
  16. sss=sss/255  
  17. sss=sss.reshape(2800,784)  
  18.   
  19. aa=time.time()-start    
  20. print 'ok'   ,  aa#print的输出为:ok 2.89900016785    
  21.   
  22.   
  23. nums1=[] #标签的list  
  24. start = time.time()    
  25. with open('22.txt') as f:  #22.txt为图像标签  
  26.     for line in f:    
  27.         a=line.split()    
  28.         nums1+=a  
  29.     
  30.     
  31.     
  32. sss1=numpy.asarray(nums1,dtype=int)    
  33.   
  34. aa1=time.time()-start    
  35. print 'ok'   ,  aa1#print的输出为:ok 2.89900016785    
  36.   
  37. ee1=zip(sss,sss1)  #zip形成字典  
  38. random.shuffle(ee1)#这个是将数据进行随机化排列  
  39.     
  40.   
  41. dd1,dd2=map(list,zip(*ee1))#将ee1拆分成两个list  
  42.   
  43. ddd1=numpy.asarray(dd1,dtype=float)  #将list转变成numpy数组  
  44. ddd2=numpy.asarray(dd2,dtype=int)    
  45. cc=ddd1,ddd2       #最终得到cc这个元祖  
import random
import numpy  
import time  
nums=[]  #训练样本的list
  
start = time.time()  
with open('11.txt') as f:  #11.txt为图像数据,每个数位0-255,数与数之间为空格,一个图像数据为一行
    for line in f:  
  
        a=line.split()  
        nums+=a  
  
  
  
sss=numpy.asarray(nums,dtype=float)  
sss=sss/255
sss=sss.reshape(2800,784)

aa=time.time()-start  
print 'ok'   ,  aa#print的输出为:ok 2.89900016785  


nums1=[] #标签的list
start = time.time()  
with open('22.txt') as f:  #22.txt为图像标签
    for line in f:  
        a=line.split()  
        nums1+=a
  
  
  
sss1=numpy.asarray(nums1,dtype=int)  

aa1=time.time()-start  
print 'ok'   ,  aa1#print的输出为:ok 2.89900016785  

ee1=zip(sss,sss1)  #zip形成字典
random.shuffle(ee1)#这个是将数据进行随机化排列
  

dd1,dd2=map(list,zip(*ee1))#将ee1拆分成两个list

ddd1=numpy.asarray(dd1,dtype=float)  #将list转变成numpy数组
ddd2=numpy.asarray(dd2,dtype=int)  
cc=ddd1,ddd2       #最终得到cc这个元祖


下面为完整代码:

  1. import random  
  2. import numpy    
  3. import time    
  4. import gzip    
  5. import cPickle    
  6. class shuju(object):  
  7.       
  8.     def __init__(self,in1,in2,in3,in4):  
  9.         self.in1=in1  
  10.         self.in2=in2  
  11.         self.in3=in3  
  12.         self.in4=in4  
  13.           
  14.           
  15.      
  16.      
  17.     def duqushuju(self):  
  18.           
  19.         nums=[]  #训练样本的list  
  20.             
  21.         start = time.time()    
  22.         with open(self.in1) as f:  #11.txt为图像数据  
  23.             for line in f:    
  24.             
  25.                 a=line.split()    
  26.                 nums+=a    
  27.             
  28.             
  29.             
  30.         sss=numpy.asarray(nums,dtype=float)    
  31.         sss=sss/255  
  32.         sss=sss.reshape(self.in3,self.in4)  
  33.           
  34.         aa=time.time()-start    
  35.         print 'ok'   ,  aa#print的输出为:ok 2.89900016785    
  36.           
  37.           
  38.         nums1=[] #标签的list  
  39.         start = time.time()    
  40.         with open(self.in2) as f:  #22.txt为图像标签  
  41.             for line in f:    
  42.                 a=line.split()    
  43.                 nums1+=a  
  44.             
  45.             
  46.             
  47.         sss1=numpy.asarray(nums1,dtype=int)    
  48.           
  49.         aa1=time.time()-start    
  50.         print 'ok'   ,  aa1#print的输出为:ok 2.89900016785    
  51.           
  52.         ee1=zip(sss,sss1)  #zip形成字典  
  53.         random.shuffle(ee1)#这个是将数据进行随机化排列  
  54.             
  55.           
  56.         dd1,dd2=map(list,zip(*ee1))#将ee1拆分成两个list  
  57.           
  58.         ddd1=numpy.asarray(dd1,dtype=float)  #将list转变成numpy数组  
  59.         ddd2=numpy.asarray(dd2,dtype=int)    
  60.         return ddd1,ddd2       #最终得到cc这个元祖  
  61.      
  62.      
  63.   
  64. def shu():  
  65.     a1='11.txt'#训练数据(train)  
  66.     a2='111.txt'#测试数据(test)  
  67.     a3='1111.txt'#检验数据(valid)  
  68.     b1='22.txt'  
  69.     b2='222.txt'  
  70.     b3='2222.txt'  
  71.     o1=shuju(a1,b1,2800,784)  
  72.     o2=shuju(a2,b2,800,784)  
  73.     o3=shuju(a3,b3,200,784)  
  74.     oo1=o1.duqushuju()  
  75.     oo2=o2.duqushuju()  
  76.     oo3=o3.duqushuju()  
  77.     return oo1,oo2,oo3  
  78.       
  79.       
  80.       
  81.   
  82. if __name__ == '__main__':  
  83.     oo1,oo2,oo3=shu()  
  84.     d=oo1,oo3,oo2  
  85.      
  86.   
  87.     p1=cPickle.dumps(d,2)  #生成pkl.gz文件就和theano中的一样  
  88.     s=gzip.open('cnn.pkl.gz','wb')#要保存的文件路径,这里用了gzip,压缩文件    
  89.     s.write(p1)    
  90.     s.close()    
  91.     print 'ok'    
import random
import numpy  
import time  
import gzip  
import cPickle  
class shuju(object):
    
    def __init__(self,in1,in2,in3,in4):
        self.in1=in1
        self.in2=in2
        self.in3=in3
        self.in4=in4
        
        
   
   
    def duqushuju(self):
        
        nums=[]  #训练样本的list
          
        start = time.time()  
        with open(self.in1) as f:  #11.txt为图像数据
            for line in f:  
          
                a=line.split()  
                nums+=a  
          
          
          
        sss=numpy.asarray(nums,dtype=float)  
        sss=sss/255
        sss=sss.reshape(self.in3,self.in4)
        
        aa=time.time()-start  
        print 'ok'   ,  aa#print的输出为:ok 2.89900016785  
        
        
        nums1=[] #标签的list
        start = time.time()  
        with open(self.in2) as f:  #22.txt为图像标签
            for line in f:  
                a=line.split()  
                nums1+=a
          
          
          
        sss1=numpy.asarray(nums1,dtype=int)  
        
        aa1=time.time()-start  
        print 'ok'   ,  aa1#print的输出为:ok 2.89900016785  
        
        ee1=zip(sss,sss1)  #zip形成字典
        random.shuffle(ee1)#这个是将数据进行随机化排列
          
        
        dd1,dd2=map(list,zip(*ee1))#将ee1拆分成两个list
        
        ddd1=numpy.asarray(dd1,dtype=float)  #将list转变成numpy数组
        ddd2=numpy.asarray(dd2,dtype=int)  
        return ddd1,ddd2       #最终得到cc这个元祖
   
   

def shu():
    a1='11.txt'#训练数据(train)
    a2='111.txt'#测试数据(test)
    a3='1111.txt'#检验数据(valid)
    b1='22.txt'
    b2='222.txt'
    b3='2222.txt'
    o1=shuju(a1,b1,2800,784)
    o2=shuju(a2,b2,800,784)
    o3=shuju(a3,b3,200,784)
    oo1=o1.duqushuju()
    oo2=o2.duqushuju()
    oo3=o3.duqushuju()
    return oo1,oo2,oo3
    
    
    

if __name__ == '__main__':
    oo1,oo2,oo3=shu()
    d=oo1,oo3,oo2
   

    p1=cPickle.dumps(d,2)  #生成pkl.gz文件就和theano中的一样
    s=gzip.open('cnn.pkl.gz','wb')#要保存的文件路径,这里用了gzip,压缩文件  
    s.write(p1)  
    s.close()  
    print 'ok'  

如果想直接读取文件名列表的话可以参见下面这个博文,包括文件太大上述方法显示错误的解决方案。

http://blog.csdn.net/yeyang911/article/details/38148035

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值