def local_structured_add_s_v(node): if node.op == sparse.structured_add_s_v: x, y = node.inputs x_is_sparse_variable = _is_sparse_variable(x) #y_is_sparse_variable = _is_sparse_variable(y) if x_is_sparse_variable: svar = x dvar = y else: svar = y dvar = x if dvar.type.ndim != 1: return False elif svar.type.format == 'csr': CSx = sparse.CSR structured_add_s_v_csx = sparse.structured_add_s_v_csr else: return False s_val, s_ind, s_ptr, s_shape = sparse.csm_properties(svar) c_data = structured_add_s_v_csx(s_val, s_ind, s_ptr, dvar) return [CSx(c_data, s_ind, s_ptr, s_shape)] return False
def local_structured_add_s_v(node): if node.op == structured_add_s_v: x, y = node.inputs x_is_sparse_variable = _is_sparse_variable(x) #y_is_sparse_variable = _is_sparse_variable(y) if x_is_sparse_variable: svar = x dvar = y else: svar = y dvar = x if dvar.type.ndim != 1: return False elif svar.type.format == 'csr': CSx = CSR structured_add_s_v_csx = structured_add_s_v_csr else: return False s_val, s_ind, s_ptr, s_shape = csm_properties(svar) c_data = structured_add_s_v_csx(s_val, s_ind, s_ptr, dvar) return [CSx(c_data, s_ind, s_ptr, s_shape)] return False
def wrapper(*args): x = as_sparse_variable(args[0]) xs = [scalar.as_scalar(arg) for arg in args[1:]] data, ind, ptr, shape = csm_properties(x) data = tensor_op(data, *xs) return CSM(x.format)(data, ind, ptr, shape)
def local_sampling_dot_csr(node): if node.op == sparse.sampling_dot: x, y, p = node.inputs if p.type.format == 'csr': p_data, p_ind, p_ptr, p_shape = sparse.csm_properties(p) z_data, z_ind, z_ptr = sparse.sampling_dot_csr(x, y, p_data, p_ind, p_ptr, p_shape[1]) return [sparse.CSR(z_data, z_ind, z_ptr, p_shape)] return False
def structured_exp(x): """ Element-wise exponential function to the non-zero elements. """ x = as_sparse_variable(x) x_data, x_ind, x_ptr, x_shape = csm_properties(x) x_data = tensor.exp(x_data) return CSR(x_data, x_ind, x_ptr, x_shape)
def structured_sigmoid(x): """ Element-wise sigmoid function only to the non-zero elements. """ x = as_sparse_variable(x) x_data, x_ind, x_ptr, x_shape = csm_properties(x) x_data = tensor.nnet.sigmoid(x_data) return CSR(x_data, x_ind, x_ptr, x_shape)
def local_sampling_dot_csr(node): if node.op == sampling_dot: x, y, p = node.inputs if p.type.format == 'csr': p_data, p_ind, p_ptr, p_shape = csm_properties(p) z_data, z_ind, z_ptr = sampling_dot_csr(x, y, p_data, p_ind, p_ptr, p_shape[1]) return [CSR(z_data, z_ind, z_ptr, p_shape)] return False
def structured_minimum(x, y): """ Element-wise minimum function only to non-zero elements. """ x = as_sparse_variable(x) y = tensor.as_tensor_variable(y) x_data, x_ind, x_ptr, x_shape = csm_properties(x) x_data = tensor.minimum(x_data, y) return CSR(x_data, x_ind, x_ptr, x_shape)