caffe中使用自己的数据训练网络之数据的划分

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28915885/article/details/79961413

现假设我们得到了一批已经分好类的数据,但是这些数据却没有做划分,即没有分为:training set/dev set/test set,现在,我们将得到的数据做training和dev的划分。现假设我们对于training和dev的划分为3:1,则:

# -*- coding: utf-8 -*-
"""
Created on Sun Apr 15 22:37:28 2018

@author: Daniel
"""

import random
import os
import shutil


img_root = "F:/GitHub/caffe_sub/caffe/models/my_caffe_resnet_test/"

test_path = img_root  + 'test/'
for root, dirs, files in os.walk(img_root + 'train2/'):
    for dir in dirs:
        path = os.path.join(test_path, str(dir))#准备当前正在遍历的文件夹对应于test下的文件夹
        folder = os.path.exists(path)

        if not folder:
            os.makedirs(path)
            #print("makedirs#:" + str(path))
        else:
            print("this folder exists!")
        for root, dirs, files in os.walk(img_root+'train2/'+str(dir)):
            #确定比例:验证集与训练集的比例
            dev_sets = int(0.25*len(files))
            print('dev_sets#:' + str(dev_sets))

            for i in range(dev_sets):
                #从files中随机选择一个file
                random_file = random.choice(files)
                #获得该文件的路径
                src = os.path.join(img_root+'train2/' + str(dir) + '/'+ random_file)
                #将该文件放到path中
                shutil.move(src, path)
                #删除src中的该文件
                src_file = src#os.path.join(src, random_file)

                #修改文件权限
                # os.chmod(src_file, stat.S_IWRITE)#由于此处文件移动到的对应的文件,故不用删除了
                #删除该文件
                #os.remove(src_file)

                #不仅要删除文件中的选中文件,还要删除files中列表中的该文件
                print('files#: ' + str(files))
                files.remove(random_file)#移动后将其从files列表中删除
                print('files#: ' + str(files))

以上的代码将train中的数据随机选择了一部分移动到了test中的相对应的文件中,实现了数据的3:1划分。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页