在检查下面的笔记本时,我对他是如何创建稀疏矩阵M感到困惑,我试图理解coo_matrix在这种情况下是如何工作的,但在查找函数的scipy文档后无法得到它。特别是代码块如下:
import scipy.sparse as sparse
n = len(Y)
k = theta.shape[0]
data = [1]*n
M = sparse.coo_matrix((data, (Y, range(n))), shape=(k,n)).toarray()
从:https://www.kaggle.com/code/synnfusion/softmax-on-mnist-from-scratch/notebook
Y是mnist数据集中标签(数字0-9)的矢量。
- 谢谢-谢谢
1条答案
按热度按时间goucqfw61#
进行输入:
制作稀疏矩阵:
从不同的Angular 来看:
该矩阵有3个关键属性,应与输入密切匹配:
给定这样的输入,创建矩阵并没有太多的工作--直接接受输入,或者稍微调整一下,就可以得到第一种数组。
工作是在方法中,比如
toarray
,它创建了一个密集数组。稀疏矩阵如何Map到该数组应该是显而易见的,尽管代码细节被隐藏了。从我看到的一些错误来看,我认为它实际上是这样的:M.tocsr().toarray()
。csr
实现了大多数稀疏数学运算以及索引。coo
是一种基本格式,在最初创建矩阵时最有用。