在theano的对角线上创建具有特征值的方阵

Creating square matrix with eigenvalues on the diagonal in theano

我想创建一个特征值在对角线上的方阵:

eigen_values, eigen_vectors = theano.tensor.nlinalg.eig(covariance_matrix)
D = T.nlinalg.AllocDiag(eigen_values)

但是显然theano并没有把我创建的D矩阵当作标准矩阵,所以我不能在后续的计算中使用它。

theano.tensor.var.AsTensorError: ('Cannot convert <theano.tensor.nlinalg.AllocDiag object at 0x7face5708450> to TensorType', <class 'theano.tensor.nlinalg.AllocDiag'>)

您正在使用一个操作class,就像它是一个操作函数一样。

而不是

D = T.nlinalg.AllocDiag(eigen_values)

尝试

D = T.nlinalg.AllocDiag()(eigen_values)

D = T.nlinalg.alloc_diag(eigen_values)