【问题标题】:Followup on question "Use coo_matrix in TensorFlow"跟进问题“在 TensorFlow 中使用 coo_matrix”
【发布时间】:2018-09-25 21:40:46
【问题描述】:

question的回答中提到:

tf_coo_matrix = tf.SparseTensorValue(
indices=np.array([coo_matrix.rows, coo_matrix.cols]).T,
values=coo_matrix.data,
dense_shape=coo_matrix.shape)

我试图理解为什么在使用 TensorFlow 时需要转置一个 scipy 稀疏矩阵。提前致谢。

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    如果你查看tf.SparseTensor 的文档,indices 预计是一个二维张量,维度为(N, ndims),其中N 是稀疏张量中非零值的数量,@ 987654326@ 是它的维数。对于稀疏矩阵(二维),每一行将包含values中对应值的行和列。

    在sn-p中,coo_matrix.rows是稀疏矩阵的行索引数组,coo_matrix.cols是列索引数组。 np.array([coo_matrix.rows, coo_matrix.cols]) 将是一个有两行和N 列的数组,这与稀疏张量所期望的顺序相反,因此将其与.T 进行转置,您将得到(N, 2) 索引张量。并不是说您没有转置稀疏矩阵,索引仍然保持不变,您只是按照要求的顺序将它们提供给tf.SparseTensorValue。例如,您可以通过 np.stack([coo_matrix.rows, coo_matrix.cols], axis=1) 获得相同的结果。

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多