def __init__(self): self.prev_state = graph.is_grad_enabled()
def tan(x): local_requires_grad = is_zhangliang_requires_grad(x) a_ = Zhangliang(x) values = np.tan(a_.values) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def __enter__(self): self.prev_state = graph.is_grad_enabled() graph.set_grad_enable(True)
def min(x, dim=None, keepdims=False): local_requires_grad = is_zhangliang_requires_grad(x) a_ = Zhangliang(x) values = np.min(a_.values, axis=dim, keepdims=keepdims) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def clamp(x, xmin=0., xmax=1.): local_requires_grad = is_zhangliang_requires_grad(x) a_ = Zhangliang(x) values = np.clip(a_.values, a_max=xmax, a_min=xmin) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def minimum(x, y): local_requires_grad = is_zhangliang_requires_grad(x) or is_zhangliang_requires_grad(y) a_ = Zhangliang.array(x) b_ = Zhangliang.array(y) values = np.minimum(a_.values, b_.values) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def reshape(x, new_shape): local_requires_grad = is_zhangliang_requires_grad(x) a_ = Zhangliang(x) values = np.reshape(a_.values, new_shape) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def truediv(x, y): local_requires_grad = is_zhangliang_requires_grad(x) or is_zhangliang_requires_grad(y) a_ = Zhangliang.array(x) b_ = Zhangliang.array(y) value = a_.values / b_.values return Zhangliang(value, dtype=value.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def pow(x, y): local_requires_grad = is_zhangliang_requires_grad(x) or is_zhangliang_requires_grad(y) a_ = Zhangliang(x) b_ = Zhangliang(y) values = np.power(a_.values, b_.values) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def add(x, y): local_requires_grad = is_zhangliang_requires_grad(x) or is_zhangliang_requires_grad(y) # Incase of non-zhangliang, convert the inputs to Zhangliang a_ = Zhangliang.array(x) b_ = Zhangliang.array(y) value = a_.values + b_.values return Zhangliang(value, dtype=value.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def tile(x, reps): local_requires_grad = is_zhangliang_requires_grad(x) values = np.tile(x.values, reps) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def vstack(inputs): local_requires_grad = False encap_inputs = [] for a_input in inputs: local_requires_grad = local_requires_grad or is_zhangliang_requires_grad(a_input) encap_inputs.append(Zhangliang(a_input).values) values = np.concatenate(encap_inputs, axis=0) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def unsqueeze(x, dim): local_requires_grad = is_zhangliang_requires_grad(x) a_ = Zhangliang(x) old_shape = x.shape new_shape = list(old_shape) new_shape.insert(dim, 1) values = np.reshape(a_.values, newshape=new_shape) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())
def squeeze(x, dim=None): local_requires_grad = is_zhangliang_requires_grad(x) a_ = Zhangliang(x) values = np.squeeze(a_.values, axis=dim) return Zhangliang(values, dtype=values.dtype, requires_grad=local_requires_grad and graph.is_grad_enabled())