我已经使用train_test_split
函数将我的数据划分为X_train
、X_test
、y_train
、y_test
,然后使用utils.data.DataLoader
将其提供给我的CNN,但问题是我不知道如何访问我的标签张量来制作混淆矩阵并将其与我的预测张量进行比较。我知道这是一个基本问题,但无论如何,我们都很感激你的帮助。
X_train, X_test, y_train, y_test = train_test_split(faces, emotions, test_size=0.1, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.1, random_state=41)
我用了
train = torch.utils.data.TensorDataset(torch.from_numpy(X_train), torch.from_numpy(y_train))
train_loader = torch.utils.data.DataLoader(train, batch_size=100, shuffle=True)
用于将数据馈送到我的网络似乎你可以像train_set.targets
一样,只需在train_set后面键入targets属性来访问你的标签,但这对我来说不起作用。如何获取标签?
for i, (inputs, labels) in enumerate(dataloader):
inputs = inputs.to(device)
labels = labels.to(device)
outputs = model(inputs)
_, preds = torch.max(outputs, 1)
通常,我建议使用两个DataLoader,一个用于培训,另一个用于测试/验证。由于您想要制作一个混淆矩阵,您可以简单地通过numpy数组y_train
和预测preds
来访问标签,例如,通过在循环中将它们连接到numpy数组。
有关如何使用DataLoader的更多信息,我建议看一下这个非常好的教程:https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar10-tutorial-py
和
https://pytorch.org/tutorials/beginner/data_loading_tutorial.html