如何解决训练 MIL 模型时,“Tensor”对象没有属性“items”的错误
我正在尝试在语音处理领域使用 MIL(多实例学习)。我已经使用 Google Colab 环境逐行实现了 Lori Sheng 在 github 中发布的代码。我在最后一节中犯了一个错误,即“In [60]”。你能帮我解决这个错误吗?我试图找到解决方案近两周但没有解决方案,因为我是新手。我试着在下面详细解释错误。
源代码链接是:https://github.com/lsheng23/Practicum/blob/master/MIL_MNIST/end_to_end_mnist_MIL.ipynb
在[60]中,“outputs = model(X)”调用了在[58]中的“MIL_NN”类的“forward”方法。
然后它抛出那种错误;
89 figure out batches
90 """
91 bag_feature,bag_att,bag_keys = list(zip(*[list(self.agg(ff.float())) + [idx] for idx,ff in (bag_features.items())]))
92 AttributeError: 'Tensor' object has no attribute 'items'
我认为这可能是因为诸如“tf 急切执行”之类的原因,但我意识到事实并非如此。
我也应用了作者的注释n=7*512,但仍然没有解决方案。
同样在此错误之前,由于“找不到文件/文件不存在”错误,我需要在作者的代码中进行一些更正(即使我不确定它是否正确)。这些是;
在 [39] 从“feature_array.npy”到“feature_array_full.npy”和在 [40] 从“feature_t_array.npy”到“feature_test_array_full.npy”
预先感谢您的宝贵帮助。
解决方法
请注意,torch.tensor
没有名为 items()
的方法。使用 item()
(单数)来获取原始数字,但是,对于 python dict
,您可以使用 .items()
。两者都不一样。
在您提供的示例中,bag_features
是一个 dict
,但根据您发布的错误,您正在对张量调用 .items()
。尝试打印 type(bag_features)
并查看返回的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。