繁体   English   中英

如何解决“TypeError:预期的 str、bytes 或 os.PathLike 对象,而不是列表”

[英]How can I solve "TypeError: expected str, bytes or os.PathLike object, not list"

我正在尝试从掌纹做我的人检测项目。

有001、002、003、004、......、091、092形式的文件夹,每个文件夹有7个训练数据。 我想把所有的数据一个一个地拿来训练它们。

示例文件路径:

'Dataset/TrainWithROI/001/001-Train1.JPG', 
'Dataset/TrainWithROI/001/001-Train2.JPG', 
'Dataset/TrainWithROI/001/001-Train3.JPG', 
'Dataset/TrainWithROI/001/001-Train4.JPG', 
'Dataset/TrainWithROI/001/001-Train5.JPG', 
'Dataset/TrainWithROI/001/001-Train6.JPG', 
'Dataset/TrainWithROI/001/001-Train7.JPG',

但是在我开始训练模型之前,我遇到了这样的错误。

def open_images(path):
    image = load_img(path, color_mode = 'rgb')
    image = np.array(image)/255.0
    return image

def get_labels(paths):

    label = []
    for path in paths:
        path = path.split('/')[-2]
        label.append(labels.index(path))
    return label

def data_gen(data_paths, batch_size=1):
    img=[]
    lab=[]
    for i in range(0, len(data_paths), batch_size):
        paths = data_paths[i:i+batch_size]
        images = open_images(paths)
        img.append(open_images(paths).reshape(224, 224, 3))
        labels = get_labels(paths)
        lab.append(get_labels(paths))
        
        #yield images,np.array(labels)
    return np.array(img) , np.array(lab)

模型:

X_train, y_train = data_gen(train_paths)
X_test, y_test = data_gen(test_paths)

错误:

TypeError:预期的 str、字节或 os.PathLike 对象,而不是列表

您正在提供open_images函数的路径列表,但未对其进行编码以支持该路径。 你可以修改这个函数来处理这个问题,试试这个代码:

def open_images(path):
    images = []
    for path in paths:
        image = load_img(path, color_mode = 'rgb')
        image = np.array(image)/255.0
        images.append(image)
    return np.array(images)

您正在将图像列表传递给函数open_images ,但此函数仅用于打开一个图像,而不是列表。
尝试这个:

def data_gen(data_paths, batch_size=1):
    img=[]
    lab=[]
    for i in range(0, len(data_paths), batch_size):
        paths = data_paths[i:i+batch_size]
        for x in paths:
            images = open_images(x)
            img.append(open_images(x).reshape(224, 224, 3))
            labels = get_labels(x)
            lab.append(get_labels(x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM