首页 > 解决方案 > 训练 MIL 模型时,“张量”对象的错误没有属性“项目”

问题描述

我正在尝试在语音处理区域中使用 MIL(多实例学习)。我已经使用 Google Colab 环境逐行实现了 Lori Sheng 在 github 上发布的代码。我在最后一节出现了一个错误,即“在 [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 eager execution”之类的东西,但我意识到事实并非如此。

我还应用了作者的注释,即 n=7*512,但仍然没有解决方案。

同样在此错误之前,由于“找不到文件/文件不存在”错误,我需要在作者的代码中进行一些更正(即使我不确定它是否正确)。这些曾经是;

在 [39] 从“feature_array.npy”到“feature_array_full.npy”和在 [40] 从“feature_t_array.npy”到“feature_test_array_full.npy”

提前感谢您的宝贵帮助。

标签: neural-networkgoogle-colaboratorytensormnistmultiple-instances

解决方案


请注意,torch.tensor没有一个名为items(). 使用item()(singular) 来获取原始数字,但是,使用 pythondict你可以使用.items(). 两者是不同的。

在您提供的示例中,bag_features是 a dict,但是根据您发布的错误,您正在调用.items()张量。尝试打印type(bag_features)并查看返回的内容。


推荐阅读