我是一名从事地球物理反演的研究员。它需要求解线性系统:Au = rhs。这里A通常是稀疏矩阵,但rhs和u可以是稠密矩阵,也可以是向量。为了进行基于梯度的反演,需要进行灵敏度计算,需要大量的矩阵矩阵和矩阵向量乘法。最近,我在矩阵(稀疏)-矩阵(稠密)乘法中发现了一种奇怪的行为,下面是一个例子:
import numpy as np
import scipy.sparse as sp
n = int(1e6)
m = int(100)
e = np.ones(n)
A = sp.spdiags(np.vstack((e, e, e)), np.array([-1, 0, 1]), n, n)
A
我试图使用tf.matmul()来执行稀疏矩阵乘法。
然而,与密集矩阵乘法相比,推理速度要慢得多。
根据tf.sparse_matmul()中的描述:
在一个平台上使用这个与密集矩阵相乘的盈亏平衡是稀疏矩阵中30%的零值。
因此,我用7/8的零值来构造稀疏矩阵。
这是我的代码:
import tensorflow as tf
import numpy as np
import time
a = tf.Variable(np.arange(1000).reshape(250,4) ,dtype=tf.float32) #dense matrix
b = tf.Variable(np.
我试图通过使用z3py应用编程接口断言对矩阵乘法的约束来计算结果矩阵。以下方法适用于矩阵加法。以下是代码,它有3个矩阵: x,y和sol。sol是x和y (sol==x+y)的相加,我有兴趣限制结果矩阵(sol)的值为零,并检查"x“和"y”中哪些未知值产生的结果矩阵为零。下面是加法的列表理解方法。
from z3 import*
x = [ [Real("x_%s_%s" %(i+1, j+1)) for j in range(2) ] for i in range(2)]
y = [ [Real("y_%s_%s" %(i+1, j+1)
我正在寻找一种有效的方法来执行一个矩阵乘法(点积)的两个时间相关的2D矩阵,以结束与一个时间相关的2D矩阵。
例如:
a = np.zeros([7200,13,4])
b = np.zeros([7200,4,7])
我想以
c = np.zeros([7200,13,7])
我已经找到了np.tensordot,但是这产生了一个4D矩阵,而不是一个3D矩阵。另外,其他numpy函数也没有给我提供所需的形状。所以,我想知道是否有任何方法可以不使用for-循环来执行这个矩阵乘法?
诚挚的问候,
蒂莫西·范代尔
我有一个有三列x,y,x的数据名s9,我想把每一行作为一个矩阵与一个3*3矩阵R910相乘,得到一个数组s910。这是我写的代码,但我得到了错误:
'numpy.ndarray' object is not callable`
在得到结果矩阵后,我想在结果中添加一个1*3矩阵。
for i in range(len(s9.values)):
np.matmul(R910*s9.values(i))
return s910