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

9 篇文章 0 订阅
5 篇文章 0 订阅

现假设我们得到了一批已经分好类的数据,但是这些数据却没有做划分,即没有分为: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划分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值