【发布时间】:2021-11-28 19:35:32
【问题描述】:
我想知道为什么会出现这个错误。我的直觉告诉我 tensorDataset 将最后一列读取为标签,但我不知道如果我输入一个单独的标签数据集作为第二个参数,它为什么会这样。另外,有人可以解释一下 one-hot 编码是如何工作的,以及我如何解决这个问题,因为我每个项目只需要一个标签吗?
Error: return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
RuntimeError: 1D target tensor expected, multi-target not supported
代码:
if __name__ == '__main__':
inputs_file = pd.read_csv('dataset.csv')
targets_file = pd.read_csv('labels.csv')
inputs = inputs_file.iloc[1:1001].values
targets = targets_file.iloc[1:1001].values
inputs = torch.tensor(inputs, dtype=torch.float32)
targets = torch.tensor(targets)
dataset = TensorDataset(inputs, targets)
val_size = 200
test_size = 100
train_size = len(dataset) - (val_size + test_size)
# Divide dataset into 3 unique random subsets
training_data, validation_data, test_data = random_split(dataset, [train_size, val_size, test_size])
batch_size = 50
train_loader = DataLoader(training_data, batch_size, shuffle=True, num_workers=4, pin_memory=True)
valid_loader = DataLoader(validation_data, batch_size*2, num_workers=4, pin_memory=True)
【问题讨论】:
-
你的代码中
targets的形状是什么? -
targets.shape = (999, 1) inputs.shape = (999, 11)
-
在创建张量数据集之前尝试
targets = targets.squeeze(1)。 -
现在我收到了这个错误:RuntimeError: mat1 and mat2 shapes can be multiplied (11x1 and 11x8)跨度>
标签: python numpy machine-learning deep-learning pytorch