在Python中将不同类的图像分割为训练集和测试集
我是python新手,但我想用python实现深度学习工具。我收集了一组不同类别的图片。我的工作是使用卷积网络进行图像分类。第一步是将这些图像分成两组进行训练和测试。然后我将加载这些图像,并在将它们送入网络之前进行一些预处理。我现在只对第一部分感到好奇 我为此发布了我的工作:在Python中将不同类的图像分割为训练集和测试集,python,Python,我是python新手,但我想用python实现深度学习工具。我收集了一组不同类别的图片。我的工作是使用卷积网络进行图像分类。第一步是将这些图像分成两组进行训练和测试。然后我将加载这些图像,并在将它们送入网络之前进行一些预处理。我现在只对第一部分感到好奇 我为此发布了我的工作: import numpy as np from os import listdir def getPaths(rootPath): folderList = listdir(rootPath) imgPa
import numpy as np
from os import listdir
def getPaths(rootPath):
folderList = listdir(rootPath)
imgPaths = []
categories = []
for folders in folderList:
imgPath = os.path.join(rootPath,folders)
imgPaths.append(imgPath)
categories.append(folders)
return (imgPaths, categories)
def getImgPaths(rootPath, p):
temp = getPaths(rootPath)
folderPaths, categories = temp
trainImgPaths = []
trainLabels = []
testImgPaths = []
testLabels = []
for ii in range(len(folderPaths)):
temp2 = getPaths(folderPaths[ii])
imgPaths = temp2[0]
randIdx = np.random.permutation(len(imgPaths))
trainIdx = randIdx[:int(p*len(imgPaths))]
testIdx = [idx for idx in randIdx if not idx in trainIdx]
trainPaths = [imgPaths[kk] for kk in trainIdx]
testPaths = [imgPaths[kk] for kk in testIdx]
trainCat = [categories[ii] for jj in xrange(len(trainPaths))]
testCat = [categories[ii] for jj in xrange(len(testPaths))]
trainImgPaths.extend(trainPaths)
testImgPaths.extend(testPaths)
trainLabels.extend(trainCat)
testLabels.extend(testCat)
return (trainImgPaths, trainLabels, testImgPaths, testLabels)
代码可以工作,但似乎有些麻烦 你试了什么?或者你想让我们完成你的任务?我只想编写两个函数。我可以在Matlab中实现这些,但是在python中遇到了一些问题。遇到了哪些问题?让我们看看你试过什么!你需要分层还是随机抽样才行?@MMF:我稍后会发布我的作品
import os, random
def getImagePaths(imgroot, cats, pot): # please excuse the naming
trainImagePaths = []
testImagePaths = []
trainlabels = []
testlabels = []
for cat in cats:
files = os.listdir(os.path.join(imgroot, cat))
split = int(pot*len(files))
trainImagePaths.extend(files[:split])
testImagePths.extend(files[split:]
trainlabels.extend([cat]*split)
testlabels.extend([cat]*len(files)-split)
# optionally, shuffle
return trainImagePaths, testImagePaths, trainlabels, testLabels