深度学习中如何为不同类别图像添加0和1标签
正确实现两类图像的标签分配
你的错误代码会遍历两次X_train,先给所有图像添加标签1,再添加标签0,最终Y_train的长度是X_train的2倍,且每个图像对应了两个错误标签,完全不符合分类任务中每个样本对应一个标签的要求。
以下是几种正确的实现方式:
方式1:添加图像时同步添加标签
如果imageA属于类别0,imageB属于类别1,在把图像加入X_train的同时,直接给Y_train添加对应标签:
X_train = [] Y_train = [] # 类别0的图像 X_train.append(imageA) Y_train.append(0) # 类别1的图像 X_train.append(imageB) Y_train.append(1)
方式2:批量处理同类图像
如果你有一批类别0的图像(比如存在imageA_list列表中)和一批类别1的图像(存在imageB_list列表中),可以批量添加:
X_train = [] Y_train = [] # 批量添加类别0的图像及对应标签 for img in imageA_list: X_train.append(img) Y_train.append(0) # 批量添加类别1的图像及对应标签 for img in imageB_list: X_train.append(img) Y_train.append(1)
方式3:基于已有X_train的结构生成标签
如果X_train已经构建完成,且你知道图像的类别分布(比如前k个是类别0,剩余是类别1),可以用列表快速生成标签:
# 假设前k个元素是类别0,其余是类别1,k值根据实际情况修改 k = 1 Y_train = [0] * k + [1] * (len(X_train) - k)
或者如果有一个和X_train对应的类别标识列表(比如categories,元素为'A'或'B'),可以用列表推导式映射标签:
# categories是与X_train长度一致的列表,元素为'A'(类别0)或'B'(类别1) Y_train = [0 if cat == 'A' else 1 for cat in categories]
内容的提问来源于stack exchange,提问作者Meriem Chahinez Ben
相关产品推荐
相关产品推荐

