def backward(self, values, gradients): x, y = self.args dfdx = self.dfdx(values[x], values[y], values[self]) dfdy = self.dfdy(values[x], values[y], values[self]) if x in gradients: gradients[x] += nphacks.contract_like(dfdx * gradients[self], values[x]) if y in gradients: gradients[y] += nphacks.contract_like(dfdy * gradients[self], values[y])
def backward(self, values, gradients): c, x, y = self.args if x in gradients: gradients[x] += nphacks.contract_like(c.astype(bool) * gradients[self], values[x]) if y in gradients: gradients[y] += nphacks.contract_like(numpy.logical_not(c) * gradients[self], values[x])
def backward(self, values, gradients): x, y = self.args if x in gradients: gradients[x] += nphacks.contract_like(gradients[self], values[x]) if y in gradients: gradients[y] += nphacks.contract_like(gradients[self], values[y])
def backward(self, values, gradients): x = self.args[0] dfdx = self.dfdx(values[x], values[self]) if x in gradients: gradients[x] += nphacks.contract_like(dfdx * gradients[self], values[x])