Python 使用PyTorch的多标签、多类图像分类器(ConvNet)

Python 使用PyTorch的多标签、多类图像分类器(ConvNet),python,classification,pytorch,convolutional-neural-network,multilabel-classification,Python,Classification,Pytorch,Convolutional Neural Network,Multilabel Classification,我正在尝试用PyTorch实现一个图像分类器(CNN/ConvNet),我想从csv文件中读取标签。我有4个不同的类,一个图像可能属于多个类 我已经通读了和,但没有一本涵盖我的具体情况。我已经成功地构建了torch.utils.data.Dataset类的自定义函数,该函数仅适用于从二进制分类器的csv文件中读取标签 这是到目前为止我所拥有的torch.utils.data.Dataset类的代码(与上面链接的第三个教程略有修改): 具体而言,我正在尝试从具有以下结构的文件中读取标签: 我的具

我正在尝试用PyTorch实现一个图像分类器(CNN/ConvNet),我想从csv文件中读取标签。我有4个不同的类,一个图像可能属于多个类

我已经通读了和,但没有一本涵盖我的具体情况。我已经成功地构建了
torch.utils.data.Dataset
类的自定义函数,该函数仅适用于从二进制分类器的csv文件中读取标签

这是到目前为止我所拥有的
torch.utils.data.Dataset类的代码(与上面链接的第三个教程略有修改):

具体而言,我正在尝试从具有以下结构的文件中读取标签:

我的具体问题是,我不知道如何在我的
Dataset
类中实现这一点。我想我缺少了csv中标签的(手动)分配与PyTorch如何读取之间的联系,因为我对该框架相当陌生。

我非常感谢任何关于如何让这个工作的帮助,或者如果有实际的例子涵盖这一点,一个链接也将非常感谢

也许我遗漏了什么,但是如果您想将列
1..N
N=4
)转换为标签向量或形状
(N,)
(例如,给定示例数据,
标签(img1)=[0,0,0,1]
标签(img3)=[1,0,1,0]
,…),为什么不:

  • 将所有标签列读入
    self.label\u arr

    self.label_arr = np.asarray(self.data_info.iloc[:, 1:]) # columns 1 to N
    
  • 相应地返回
    \uuu getitem\uuuu()
    中的标签(此处无更改):

  • 为了训练分类器,您可以计算
    (N,)
    预测和目标标签之间的交叉熵

    self.label_arr = np.asarray(self.data_info.iloc[:, 1:]) # columns 1 to N
    
    single_image_label = self.label_arr[index]