Pytorch TypeError: eq() 接收到无效的参数组合

num_samples = 10def predict(x):    sampled_models = [guide(None, None) for _ in range(num_samples)]    yhats = [model(x).data for model in sampled_models]    mean = torch.mean(torch.stack(yhats), 0)    return np.argmax(mean.numpy(), axis=1)print('当网络被强制预测时的预测结果')correct = 0total = 0for j, data in enumerate(test_loader):    images, labels = data    predicted = predict(images.view(-1,28*28))    total += labels.size(0)    correct += (predicted == labels).sum().item()print("准确率: %d %%" % (100 * correct / total))

错误:

correct += (predicted == labels).sum().item() TypeError: eq() 接收到无效的参数组合 - 接收到 (numpy.ndarray),但期望的是以下之一:  * (Tensor other)  不匹配,因为某些参数类型无效:(!numpy.ndarray!)* (Number other)  不匹配,因为某些参数类型无效:(!numpy.ndarray!)

*


回答:

您试图比较 predictedlabels。然而,您的 predicted 是一个 np.array,而 labels 是一个 torch.tensor,因此 eq()(即 == 操作符)无法在它们之间进行比较。
np.argmax 替换为 torch.argmax

 return torch.argmax(mean, dim=1)

这样应该就可以了。

Related Posts

神经网络反向传播代码不工作

我需要编写一个简单的由1个输出节点、1个包含3个节点的…

值错误:y 包含先前未见过的标签:

我使用了 决策树分类器,我想将我的 输入 作为 字符串…

使用不平衡数据集进行特征选择时遇到的问题

我正在使用不平衡数据集(54:38:7%)进行特征选择…

广义随机森林/因果森林在Python上的应用

我在寻找Python上的广义随机森林/因果森林算法,但…

如何用PyTorch仅用标量损失来训练神经网络?

假设我们有一个神经网络,我们希望它能根据输入预测三个值…

什么是RNN中间隐藏状态的良好用途?

我已经以三种不同的方式使用了RNN/LSTM: 多对多…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注