基于pycaffe从零开始写mnist(第一篇)——生成txt文件

遇到的问题:

1.F0725 23:05:55.042811  4306 common.cpp:158] Check failed: error == cudaSuccess (10 vs. 0)  invalid device ordinal
*** Check failure stack trace: ***


因为我在set_device上设置为第二块gpu,但是仅仅有一块gpu,因此会报错,所以应该执行gpu为set_device(0)

caffe.set_device(1)

2.F0725 23:28:49.673435  4586 image_data_layer.cpp:148] Check failed: cv_img.data Could not load 
*** Check failure stack trace: ***

竟然报找不到图片的错误,莫名其妙,我写的可是全路径啊

好吧,从当前路径开始往下写,终于找到文件了,因此在将txt文件传入神经网络的时候,并非输入全路径,而是输入相对路径

--------------------------------------------------------------------------------
这里要注意:生成的txt文件的图片路径一定要是相对路径

具体代码如下:
# -*- coding: utf-8 -*-
__author__ = 'xuy'

"""
用来生成txt文件,最终生成的是的路径是相对路径,不是绝对路径

格式是:
图片文件名 label(也就是文件夹名称)



"""




import commands
import os
import re
import random




train_root_dir='mnist/train'
test_root_dir='mnist/test'

train_save_name=train_root_dir+'/mytrain.txt'
test_save_name=test_root_dir+'/mytest.txt'
fw_train=open(train_save_name,'w')#打开的是文件名称
fw_test=open(test_save_name,'w')
for parent,dirnames,filenames in os.walk(train_root_dir):#三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
#开始遍历train文件夹下面的所有的文件名称
    for filename in filenames:

        pattern_train=r'(\d{0,10}.png$)'
        pattern_train_png_filename=re.search(pattern_train,filename)
        if pattern_train_png_filename !=None:
            train_png_filename=pattern_train_png_filename.group(0)#这个是以png为后缀名的文件名,其他文件名被过滤掉了
            train_all_file_name=os.path.join(parent,train_png_filename)#添加了全路径名称
            # print "the full filename is: ",train_all_file_name

            train_label_FileName=train_all_file_name[-11:-10]
            # print "the train label is :",train_label_FileName

            train_WriteFile_content=train_all_file_name+' '+train_label_FileName+'\n'
            # shuffle_train_WriteFile_content=random.sample(train_WriteFile_content,len(train_WriteFile_content))

            fw_train.write(train_WriteFile_content)

        # print "parent is:" + parent
        # print "filename is:" + filename
        # all_file_name=os.path.join(parent,filename)
        # print "the full filename is: ",all_file_name #输出文件路径信息

for parent,dirnames,filenames in os.walk(test_root_dir):
    for filename in filenames:

        pattern_test=r'(\d{0,10}.png$)'
        pattern_test_png_filename=re.search(pattern_test,filename)
        if pattern_test_png_filename !=None:
            test_png_filename=pattern_test_png_filename.group(0)
            test_all_file_name=os.path.join(parent,test_png_filename)
            # print "the full filename is: ",test_all_file_name
            test_label_FileName=test_all_file_name[-11:-10]
            test_WriteFile_content=test_all_file_name+' '+test_label_FileName+'\n'
            # random.shuffle(test_WriteFile_content)这个报错
            # shuffle_test_WriteFile_content=random.sample(test_WriteFile_content,len(test_WriteFile_content))
            fw_test.write(test_WriteFile_content)


fw_train.close()
fw_test.close()


 


此时生成的文件是有顺序的,这就会导致训练的时候准确率不高,实验的时候,才10%多一点,因此需要打乱顺序

通过系统命令:shuf train.txt >shuf_train.txt,这样就生成了一个乱序的txt文件,因此就可以进入下一篇,构造网络结构+训练了


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值