MCPcopy Create free account
hub / github.com/apache/singa / _cossim_value

Method _cossim_value

test/python/test_operation.py:3557–3601  ·  view source on GitHub ↗
(self, dev=gpu_dev)

Source from the content-addressed store, hash-verified

3555
3556 @unittest.skipIf(not singa_wrap.USE_CUDA, 'CUDA is not enabled')
3557 def _cossim_value(self, dev=gpu_dev):
3558 # numpy val
3559 np.random.seed(0)
3560 bs = 1000
3561 vec_s = 1200
3562 a = np.random.random((bs, vec_s)).astype(np.float32)
3563 b = np.random.random((bs, vec_s)).astype(np.float32)
3564 dy = np.random.random((bs,)).astype(np.float32)
3565
3566 # singa tensor
3567 ta = tensor.from_numpy(a)
3568 tb = tensor.from_numpy(b)
3569 tdy = tensor.from_numpy(dy)
3570 ta.to_device(dev)
3571 tb.to_device(dev)
3572 tdy.to_device(dev)
3573
3574 # singa forward and backward
3575 ty = autograd.cossim(ta, tb)
3576 tda, tdb = ty.creator.backward(tdy.data)
3577
3578 np_forward = list()
3579 for i in range(len(a)):
3580 a_norm = np.linalg.norm(a[i])
3581 b_norm = np.linalg.norm(b[i])
3582 ab_dot = np.dot(a[i], b[i])
3583 out = ab_dot / (a_norm * b_norm)
3584 np_forward.append(out)
3585
3586 np_backward_a = list()
3587 np_backward_b = list()
3588 for i in range(len(a)):
3589 a_norm = np.linalg.norm(a[i])
3590 b_norm = np.linalg.norm(b[i])
3591 da = dy[i] * (b[i] / (a_norm * b_norm) - (np_forward[i] * a[i]) /
3592 (a_norm * a_norm))
3593 db = dy[i] * (a[i] / (a_norm * b_norm) - (np_forward[i] * b[i]) /
3594 (b_norm * b_norm))
3595 np_backward_a.append(da)
3596 np_backward_b.append(db)
3597
3598 np.testing.assert_array_almost_equal(tensor.to_numpy(ty),
3599 np.array(np_forward))
3600 np.testing.assert_array_almost_equal(
3601 tensor.to_numpy(tensor.from_raw_tensor(tda)), np_backward_a)
3602
3603 @unittest.skipIf(not singa_wrap.USE_CUDA, 'CUDA is not enabled')
3604 def test_cossim_value_gpu(self):

Callers 2

test_cossim_value_gpuMethod · 0.95
test_cossim_value_cpuMethod · 0.95

Calls 4

dotMethod · 0.80
appendMethod · 0.80
to_deviceMethod · 0.45
backwardMethod · 0.45

Tested by

no test coverage detected