def test_cross_entropy_derivative_cputensor(): be = CPU(rng_seed=0) outputs = CPUTensor([0.5, 0.9, 0.1, 0.0001]) targets = CPUTensor([0.5, 0.99, 0.01, 0.2]) temp = [be.zeros(outputs.shape), be.zeros(outputs.shape)] expected_result = ((outputs.asnumpyarray() - targets.asnumpyarray()) / (outputs.asnumpyarray() * (1 - outputs.asnumpyarray()))) assert_tensor_near_equal( expected_result, cross_entropy_derivative(be, outputs, targets, temp))
def test_cross_entropy_derivative_cputensor(): be = CPU(rng_seed=0) outputs = CPUTensor([0.5, 0.9, 0.1, 0.0001]) targets = CPUTensor([0.5, 0.99, 0.01, 0.2]) temp = [be.zeros(outputs.shape), be.zeros(outputs.shape)] expected_result = ((outputs.asnumpyarray() - targets.asnumpyarray()) / (outputs.asnumpyarray() * (1 - outputs.asnumpyarray()))) assert_tensor_near_equal(expected_result, cross_entropy_derivative(be, outputs, targets, temp))
def test_cross_entropy_cputensor(): be = CPU(rng_seed=0) outputs = CPUTensor([0.5, 0.9, 0.1, 0.0001]) targets = CPUTensor([0.5, 0.99, 0.01, 0.2]) temp = [be.zeros(outputs.shape), be.zeros(outputs.shape)] expected_result = np.sum((- targets.asnumpyarray()) * np.log(outputs.asnumpyarray()) - (1 - targets.asnumpyarray()) * np.log(1 - outputs.asnumpyarray()), keepdims=True) assert_tensor_near_equal(expected_result, cross_entropy(be, outputs, targets, temp))
def test_cross_entropy_cputensor(): be = CPU(rng_seed=0) outputs = CPUTensor([0.5, 0.9, 0.1, 0.0001]) targets = CPUTensor([0.5, 0.99, 0.01, 0.2]) temp = [be.zeros(outputs.shape), be.zeros(outputs.shape)] expected_result = np.sum( (-targets.asnumpyarray()) * np.log(outputs.asnumpyarray()) - (1 - targets.asnumpyarray()) * np.log(1 - outputs.asnumpyarray()), keepdims=True) assert_tensor_near_equal(expected_result, cross_entropy(be, outputs, targets, temp))
def test_cross_entropy_limits(): be = CPU(rng_seed=0) outputs = CPUTensor([0.5, 1.0, 0.0, 0.0001]) targets = CPUTensor([0.5, 0.0, 1.0, 0.2]) eps = 2**-23 temp = [be.zeros(outputs.shape), be.zeros(outputs.shape)] expected_result = np.sum( (-targets.asnumpyarray()) * np.log(outputs.asnumpyarray() + eps) - (1 - targets.asnumpyarray()) * np.log(1 - outputs.asnumpyarray() + eps), keepdims=True) assert_tensor_near_equal(expected_result, cross_entropy(be, outputs, targets, temp, eps))
def test_asnumpyarray(self): tns = CPUTensor([[1, 2], [3, 4]]) res = tns.asnumpyarray() assert isinstance(res, np.ndarray) assert_tensor_equal(res, np.array([[1, 2], [3, 4]]))