gpt4 book ai didi

python - 将标签数据添加到卷积神经网络的更好方法?

转载 作者:行者123 更新时间:2023-12-01 06:40:49 25 4
gpt4 key购买 nike

我正在研究图像分类 CNN 来练习理解机器学习,我希望尽可能简单地真正了解正在发生的事情,同时保持一定的效率。

我的目录结构如下:

training folder 
3 folders named 0, 1, 2
0 contains only pictures of cats
1 contains only pictures of dogs
2 contains only pictures of ducks
testing folder
3 folders named 0, 1, 2
0 contains only pictures of cats
1 contains only pictures of dogs
2 contains only pictures of ducks

我创建了这段代码来遍历文件夹 0,将所有图像(猫的)转换为图像数组,然后转到文件夹 1 并对所有图像(狗的)执行相同的操作,最后转到文件夹 2 并对鸭子重复上述操作。然后,我将返回的列表转换为定义为 x_train 的 numpy 数组,以输入到模型中。

def get_img_array(dir):
for num in range(0,3):
image_list = [img for img in os.listdir(dir + str(num)) if img.endswith('.jpg')]
for img_name in range(0,len(image_list)):
loaded_image = image.load_img(dir + str(num) + '\\' + str(image_list[img_name]), grayscale = False)
process_img = image.img_to_array(loaded_image)
processed_list.append(process_img/255)
return processed_list

但我不知道如何继续给他们标签 y_train 和 y_test

我知道我可以创建一个 csv 文件,其中包含每个图像的名称以及下一列中相应的标签,例如“0”、“1”和“2”,具体取决于图片,并以这种方式导入它们,但我很好奇是否有更好、更有效的方法来添加具有我当前结构的标签?

我尝试研究和查看 GitHub 存储库、指南和 SO 问题(Convolutional Neural Networks labels 不幸的是没有有用的答案),但我只遇到了很难解释的数据集,或者它是从以我未知的方式预先标记的数据库导入,因此深入的解释会很棒!

最佳答案

您可以在创建像素数组的同时创建标签数组。假设您的类别是 cat=0,dog=1,ducks=2。初始化一个空的 numpy 数组并为以下内容创建标签数组每个文件夹。并将每个数组连接起来以获得最终标签。

def get_img_array(dir):
labels_arr= np.empty(shape=[0,1])
for num in range(0,3):
image_list = [img for img in os.listdir(dir + str(num)) if img.endswith('.jpg')]
for img_name in range(0,len(image_list)):
loaded_image = image.load_img(dir + str(num) + '\\' + str(image_list[img_name]), grayscale = False)
process_img = image.img_to_array(loaded_image)
processed_list.append(process_img/255)
labels = np.full((len(image_list),1),num)
labels_arr= np.concatenate((labels_arr, labels))
return processed_list,labels_arr

也请检查此答案以获得更直观的结果。 How to prepare training data for image classification

关于python - 将标签数据添加到卷积神经网络的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59462450/

25 4 0