def testBasicAdd(self): for dtype in [dtypes.float32, dtypes.int32, dtypes.int64]: with self.test_session(use_gpu=True): x = array_ops.ones([7, 3], dtype) y = np.ones([7, 3], dtype.as_numpy_dtype) self.assertAllClose(x.eval(), y) x = array_ops.inplace_add(x, [3], array_ops.ones([1, 3], dtype)) y[3, :] += 1 self.assertAllClose(x.eval(), y) x = inplace_ops.inplace_add(x, [-1], array_ops.ones([1, 3], dtype) * 2) y[-1, :] += 2 self.assertAllClose(x.eval(), y) x = inplace_ops.inplace_add(x, 5, array_ops.ones([3], dtype) * 7) y[5, :] += 7 self.assertAllClose(x.eval(), y) x = inplace_ops.inplace_add(x, None, array_ops.ones([7, 3], dtype) * 99) y[:, :] += 99 self.assertAllClose(x.eval(), y)
def testBasicAdd(self): for dtype in [dtypes.float32, dtypes.int32, dtypes.int64]: with self.cached_session(use_gpu=True): x = array_ops.ones([7, 3], dtype) y = np.ones([7, 3], dtype.as_numpy_dtype) self.assertAllClose(x.eval(), y) x = array_ops.inplace_add(x, [3], array_ops.ones([1, 3], dtype)) y[3, :] += 1 self.assertAllClose(x.eval(), y) x = inplace_ops.inplace_add(x, [-1], array_ops.ones([1, 3], dtype) * 2) y[-1, :] += 2 self.assertAllClose(x.eval(), y) x = inplace_ops.inplace_add(x, 5, array_ops.ones([3], dtype) * 7) y[5, :] += 7 self.assertAllClose(x.eval(), y) x = inplace_ops.inplace_add(x, None, array_ops.ones([7, 3], dtype) * 99) y[:, :] += 99 self.assertAllClose(x.eval(), y)
def testRandom1D(self): with self.test_session(use_gpu=True): d0 = 100 x = array_ops.zeros([d0]) y = np.zeros([d0]) for _ in xrange(20): idx = np.random.choice(d0, d0 // 10, replace=False) val = np.random.randint(10, size=(d0 // 10)) op = np.random.randint(3) if op == 0: x = inplace_ops.inplace_update(x, idx, val) y[idx] = val elif op == 1: x = inplace_ops.inplace_add(x, idx, val) y[idx] += val elif op == 2: x = inplace_ops.inplace_sub(x, idx, val) y[idx] -= val self.assertAllClose(x.eval(), y)
def testRandom(self): with test_util.use_gpu(): d0, d1, d2 = 100, 3, 5 x = array_ops.zeros([d0, d1, d2]) y = np.zeros([d0, d1, d2]) for _ in range(20): idx = np.random.choice(d0, d0 // 10, replace=False) val = np.random.randint(10, size=(d0 // 10, d1, d2)) op = np.random.randint(3) if op == 0: x = inplace_ops.inplace_update(x, idx, val) y[idx, :] = val elif op == 1: x = inplace_ops.inplace_add(x, idx, val) y[idx, :] += val elif op == 2: x = inplace_ops.inplace_sub(x, idx, val) y[idx, :] -= val self.assertAllClose(x, y)