python跑了一个下载的模型,这个问题是数据有什么问题吗

代码比较长,截了报错的那个方法部分,用的我自己的数据,大致是哪里的问题呢,报错的那一行我指出来了


def load_data(path="./data/cora/", dataset="cora"):
    """Load citation network dataset (cora only for now)"""
    print('Loading {} dataset...'.format(dataset))

    idx_features_labels = np.genfromtxt("{}{}.content".format(path, dataset), dtype=np.dtype(str))



    features = sp.csr_matrix(idx_features_labels[:, 1:-1], dtype=np.float32)#[:, 1:-1]去除第一列和最后一列

    labels = encode_onehot(idx_features_labels[:, -1])

    # build graph
    idx = np.array(idx_features_labels[:, 0], dtype=np.int32)
    idx_map = {j: i for i, j in enumerate(idx)}
    edges_unordered = np.genfromtxt("{}{}.cites".format(path, dataset), dtype=np.int32)
#下一行代码这里报错了
    edges = np.array(list(map(idx_map.get, edges_unordered.flatten())), dtype=np.int32).reshape(edges_unordered.shape)
    adj = sp.coo_matrix((np.ones(edges.shape[0]), (edges[:, 0], edges[:, 1])), shape=(labels.shape[0], labels.shape[0]), dtype=np.float32)

    # build symmetric adjacency matrix
    adj = adj + adj.T.multiply(adj.T > adj) - adj.multiply(adj.T > adj)

    features = normalize_features(features)
    adj = normalize_adj(adj + sp.eye(adj.shape[0]))

    idx_train = range(140)
    idx_val = range(200, 500)
    idx_test = range(500, 1500)

    adj = torch.FloatTensor(np.array(adj.todense()))
    features = torch.FloatTensor(np.array(features.todense()))
    labels = torch.LongTensor(np.where(labels)[1])

    idx_train = torch.LongTensor(idx_train)
    idx_val = torch.LongTensor(idx_val)
    idx_test = torch.LongTensor(idx_test)

    return adj, features, labels, idx_train, idx_val, idx_test

img

该回答引用ChatGPT

根据报错信息,问题可能出在 np.array(list(map(idx_map.get, edges_unordered.flatten())), dtype=np.int32).reshape(edges_unordered.shape) 这一行代码上。其中,TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType' 表示 int() 函数的参数必须是字符串、字节序列或数字,但实际上它得到了一个 NoneType 对象。因此,可能的问题是在 edges_unordered 数组中有 NoneType 类型的元素或者这个数组为空。

您好,关于您提出的python跑一个模型报错的问题,根据您描述的问题来看:
首先报了一个警告,提示numpy重复导入了。这可能是由于您调用了多个模块,而这些模块中都引入了numpy导致的,不影响的话,暂且可以不管。
其次报错内部有一个int()方法里面的参数为空了。你找下哪里传入的数据有问题。你可以尝试把每一步的参数和变量输出下,看下是否是正常的。或者使用调试运行,看下每一步的数据是否正确。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据报错信息来看,似乎是在第13行代码中的文件路径问题。你可以检查以下几点:

1.确认数据集文件是否存在。确保你下载的数据集文件存放在了正确的路径下,且文件名和路径名没有错误。

2.检查路径是否正确。确认数据集文件路径和文件名是否和代码中指定的一致,注意大小写是否匹配。

3.确认数据集文件格式是否正确。代码中使用了 numpy 库的 genfromtxt() 函数,可以通过检查数据集文件的格式是否正确来避免报错。你可以打印 idx_features_labels 变量的值,查看是否与数据集文件的格式一致。

希望这些提示对你有所帮助。

可以尝试改为:

    edges = np.array(list(map(idx_map.get(), edges_unordered.flatten())), dtype=np.int32).reshape(edges_unordered.shape)

参考GPT和自己的思路,根据报错信息可以看出,np.array 函数的参数出现了 NoneType 类型,这很有可能是因为数据格式不正确导致的。建议检查以下可能引起问题的地方:

1 检查数据文件路径是否正确,尤其是路径中是否有多余的空格或者符号。
2 检查数据文件的格式是否正确,确保 cora.content 和 cora.cites 文件的格式与代码中读取数据的方式相匹配。
3 检查数据文件中是否存在空值或缺失值,这可能会导致数据读取出现问题。
4 检查数据文件中是否有异常字符或格式错误的行,这些错误的行可能会导致数据读取出错。
另外,根据代码和报错信息,可能需要将 np.array 函数的参数改为字符串类型,如下所示:

edges = np.array(list(map(lambda x: idx_map.get(str(x)), edges_unordered.flatten())), dtype=np.int32).reshape(edges_unordered.shape)

这里使用了 lambda 函数将输入的参数转化为字符串类型,以避免 np.array 函数出现类型错误的问题。

以下答案基于ChatGPT与GISer Liu编写:

  • 1.根据报错信息,这个问题不是数据本身有问题,而是在代码中有一个对象被赋值为了NoneType,而int()函数不能接受这种类型的对象作为参数。具体来说,这个问题可能出现在以下几行代码中:

    idx_map = {j: i for i, j in enumerate(idx)}
    edges = np.array(list(map(idx_map.get, edges_unordered.flatten())), dtype=np.int32).reshape(edges_unordered.shape)
    

    你可以检查一下这些变量是否正确地赋值了,或者尝试输出一下它们的值,看看是否有NoneType的情况出现。如果这些变量的值都是正确的,那么问题可能出现在其他地方,需要更多的信息才能确定。

  • 2.根据你的输出:可以确定问题在edges = np.array(list(map(idx_map.get, edges_unordered.flatten())), dtype=np.int32).reshape(edges_unordered.shape)这一行代码;

    这个错误通常是由于在edges_unordered中有索引超出了idx_map的键值范围而导致的。你可以尝试打印出edges_unordered和idx_map来确定哪些键值对应不上,然后对这些不对应的键值进行处理。

例如,你可以检查一下edges_unordered中的值是否正确,是否有越界的索引。如果有,你可以考虑将它们替换为正确的索引值,或者将它们从数据集中移除。如果没有,则可以检查idx_map是否包含了edges_unordered中所有的索引值,如果不是,你可以尝试更新idx_map以包含这些索引值。

你这可能是因为idx_map.get方法返回了None,导致后续的转换出现问题。在这种情况下,建议你可以检查一下你的数据是否正确,特别是在edges_unordered中是否有值为None的元素。你可以打印edges_unordered来查看它的内容,然后检查这些元素是否在idx_map中有对应的值。如果没有,那么你需要检查一下为什么这些值在idx_features_labels中没有出现,或者在处理idx_features_labels时是否出现了错误。