def make_node(self, C, b): C = as_tensor_variable(C) b = as_tensor_variable(b) assert C.ndim == 2 assert b.ndim in (1, 2) # infer dtype by solving the most simple # case with (1, 1) matrices o_dtype = scipy.linalg.solve( np.eye(1).astype(C.dtype), np.eye(1).astype(b.dtype)).dtype x = tensor(shape=b.broadcastable, dtype=o_dtype) return Apply(self, [C, b], [x])
def make_node(self, A, b): assert imported_scipy, "Scipy not available. Scipy is needed for the Solve op" A = as_tensor_variable(A) b = as_tensor_variable(b) assert A.ndim == 2 assert b.ndim in [1, 2] # infer dtype by solving the most simple # case with (1, 1) matrices o_dtype = scipy.linalg.solve( np.eye(1).astype(A.dtype), np.eye(1).astype(b.dtype)).dtype x = tensor(broadcastable=b.broadcastable, dtype=o_dtype) return Apply(self, [A, b], [x])
def make_node(self, A, b): A = as_tensor_variable(A) b = as_tensor_variable(b) if A.ndim != 2: raise ValueError(f"`A` must be a matrix; got {A.type} instead.") if b.ndim not in (1, 2): raise ValueError(f"`b` must be a matrix or a vector; got {b.type} instead.") # Infer dtype by solving the most simple case with 1x1 matrices o_dtype = scipy.linalg.solve( np.eye(1).astype(A.dtype), np.eye(1).astype(b.dtype) ).dtype x = tensor(shape=b.broadcastable, dtype=o_dtype) return Apply(self, [A, b], [x])