首页 > 解决方案 > 无法解压不可迭代的 ... 对象

问题描述

我有一个班级pre_process_v2,但是当我尝试从中获取项目时clustering function

dataset = MyData(root='./', transform=transform)
batch_size = 128
in_channel = 1
out_channel = 16
kernel_size = 5
residuals, edge_indices, edge_attrs, clusters = pre_process_v2(in_channel, out_channel, kernel_size, dataset, batch_size)

有这样的错误。

----> residuals, edge_indices, edge_attrs, clusters = pre_process_v2(in_channel, out_channel, kernel_size, dataset, batch_size)

TypeError: cannot unpack non-iterable pre_process_v2 object
class pre_process_v2:
    def __init__(self, in_channel, out_channel, kernel_size, dataset, batch_size):
        self.conv1 = SplineConv(in_channel, out_channel, dim=2, kernel_size=kernel_size)
        self.train_dataset_prep, self.test_dataset_prep = torch.utils.data.random_split(
                               dataset[:batch_size*2], [batch_size, batch_size], 
                                generator=torch.Generator().manual_seed(42)
                            )
        self.train_loader_prep = DataLoader(self.train_dataset_prep, batch_size=batch_size, shuffle=False)
        
    def clustering(self):

        residuals = [] 
        edge_indices = []
        edge_attrs = []
        clusters = []
        
        for data in self.train_loader_prep:
            data = data.to(device)
            x, edge_index, edge_attr, pos = data.x.to(torch.float32), data.edge_index, data.edge_attr.to(torch.float32), data.pos.to(torch.float32)

            x = self.conv1(x, edge_index, edge_attr)
            residuals.append(x)

            edge_indices.append(edge_index)
            edge_attrs.append(edge_attr)

            cluster = graclus(edge_index)

            data.x = x

            data = max_pool(cluster, data, transform=transform)

            x, edge_index, edge_attr = data.x, data.edge_index, data.edge_attr

            clusters.append(cluster)
                
        return residuals, edge_indices, edge_attrs, clusters

你能告诉我为什么它会导致错误吗?

标签: pythonmachine-learningpytorch

解决方案


推荐阅读