【问题标题】:Changing graph dataset matrices from sparse format to dense将图形数据集矩阵从稀疏格式更改为密集格式
【发布时间】:2022-10-02 02:51:24
【问题描述】:

我第一次尝试使用 CoRA 数据集在 tensorflow 上训练图神经网络。数据集提供的特征和邻接矩阵以稀疏表示形式出现,但我在这里不需要它。因此,我想使用 numpy 的 todense() 但事实证明它不存在。供您参考,以下是相关代码:

import tensorflow as tf
import numpy as np
from spektral.datasets import citation

cora_dataset = spektral.datasets.citation.Citation(name=\'cora\')
test_mask = cora_dataset.mask_te
train_mask = cora_dataset.mask_tr
val_mask = cora_dataset.mask_va
graph = cora_dataset.graphs[0]
features = graph.x
adj = graph.a
labels = graph.y

features = features.todense()

错误是: \"AttributeError: \'numpy.ndarray\' object has no attribute \'todense\"

我想知道是否有替代 todense() 或任何其他将稀疏表示转换为密集表示的方法。

    标签: python numpy tensorflow matrix graph-neural-network


    【解决方案1】:

    您可以使用 tf.sparse.to_dense 将稀疏矩阵转换为密集矩阵。

    这是示例:

    indices = [
     [0, 1],
     [0, 2],
     [0, 4],
     [1, 0],
     [1, 2],
     [1, 3],
     [1, 5],
     [2, 0],
     [2, 1],
     [2, 3],
     [2, 4],
     [3, 1],
     [3, 2],
     [3, 7],
     [4, 0],
     [4, 2],
     [4, 5],
     [4, 6],
     [5, 1],
     [5, 4],
     [5, 6],
     [6, 4],
     [6, 5],
     [6, 7],
     [7, 3],
     [7, 6]]
    values = [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]
    dense_shape = [8,8]
    adjacency_matrix = tf.sparse.SparseTensor(
        indices, values, dense_shape
    )
    dense_matrix = tf.sparse.to_dense(adjacency_matrix)
    
    

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-06
      • 2016-06-25
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 2013-08-27
      相关资源
      最近更新 更多