将图数据集矩阵从稀疏格式更改为密集格式



我第一次尝试使用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。narray对象没有属性'todense'">

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

您可以使用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)

我希望这对你有帮助。

相关内容

最新更新