aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/python/kernel_tests/variables_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/python/kernel_tests/variables_test.py')
-rw-r--r--tensorflow/python/kernel_tests/variables_test.py242
1 files changed, 242 insertions, 0 deletions
diff --git a/tensorflow/python/kernel_tests/variables_test.py b/tensorflow/python/kernel_tests/variables_test.py
new file mode 100644
index 0000000000..f2a7ea0af8
--- /dev/null
+++ b/tensorflow/python/kernel_tests/variables_test.py
@@ -0,0 +1,242 @@
+"""Tests for tf.py."""
+import operator
+
+import tensorflow.python.platform
+
+import numpy as np
+
+import tensorflow.python.platform
+
+import tensorflow as tf
+from tensorflow.python.ops import random_ops
+
+
+class VariablesTestCase(tf.test.TestCase):
+
+ def testInitialization(self):
+ with self.test_session():
+ var0 = tf.Variable(0.0)
+ self.assertEqual("Variable:0", var0.name)
+ self.assertEqual([], var0.get_shape())
+ self.assertEqual([], var0.get_shape())
+
+ var1 = tf.Variable(1.1)
+ self.assertEqual("Variable_1:0", var1.name)
+ self.assertEqual([], var1.get_shape())
+ self.assertEqual([], var1.get_shape())
+
+ with self.assertRaisesOpError("Attempting to use uninitialized value"):
+ var0.eval()
+
+ with self.assertRaisesOpError("Attempting to use uninitialized value"):
+ var1.eval()
+
+ tf.initialize_all_variables().run()
+
+ self.assertAllClose(0.0, var0.eval())
+ self.assertAllClose(1.1, var1.eval())
+
+ def testInitializationOrder(self):
+ with self.test_session():
+ rnd = tf.Variable(random_ops.random_uniform([3, 6]), name="rnd")
+ self.assertEqual("rnd:0", rnd.name)
+ self.assertEqual([3, 6], rnd.get_shape())
+ self.assertEqual([3, 6], rnd.get_shape())
+
+ dep = tf.Variable(rnd.initialized_value(), name="dep")
+ self.assertEqual("dep:0", dep.name)
+ self.assertEqual([3, 6], dep.get_shape())
+ self.assertEqual([3, 6], dep.get_shape())
+
+ # Currently have to set the shape manually for Add.
+ added_val = rnd.initialized_value() + dep.initialized_value() + 2.0
+ added_val.set_shape(rnd.get_shape())
+
+ depdep = tf.Variable(added_val, name="depdep")
+ self.assertEqual("depdep:0", depdep.name)
+ self.assertEqual([3, 6], depdep.get_shape())
+ self.assertEqual([3, 6], depdep.get_shape())
+
+ tf.initialize_all_variables().run()
+
+ self.assertAllClose(rnd.eval(), dep.eval())
+ self.assertAllClose(rnd.eval() + dep.eval() + 2.0,
+ depdep.eval())
+
+ def testAssignments(self):
+ with self.test_session():
+ var = tf.Variable(0.0)
+ plus_one = var.assign_add(1.0)
+ minus_one = var.assign_sub(2.0)
+ four = var.assign(4.0)
+ tf.initialize_all_variables().run()
+ self.assertAllClose(0.0, var.eval())
+
+ self.assertAllClose(1.0, plus_one.eval())
+ self.assertAllClose(1.0, var.eval())
+
+ self.assertAllClose(-1.0, minus_one.eval())
+ self.assertAllClose(-1.0, var.eval())
+
+ self.assertAllClose(4.0, four.eval())
+ self.assertAllClose(4.0, var.eval())
+
+ def _countUpToTest(self, dtype):
+ with self.test_session():
+ zero = tf.constant(0, dtype=dtype)
+ var = tf.Variable(zero)
+ count_up_to = var.count_up_to(3)
+
+ tf.initialize_all_variables().run()
+ self.assertEqual(0, var.eval())
+
+ self.assertEqual(0, count_up_to.eval())
+ self.assertEqual(1, var.eval())
+
+ self.assertEqual(1, count_up_to.eval())
+ self.assertEqual(2, var.eval())
+
+ self.assertEqual(2, count_up_to.eval())
+ self.assertEqual(3, var.eval())
+
+ with self.assertRaisesOpError("Reached limit of 3"):
+ count_up_to.eval()
+ self.assertEqual(3, var.eval())
+
+ with self.assertRaisesOpError("Reached limit of 3"):
+ count_up_to.eval()
+ self.assertEqual(3, var.eval())
+
+ def testCountUpToInt32(self):
+ self._countUpToTest(tf.int32)
+
+ def testCountUpToInt64(self):
+ self._countUpToTest(tf.int64)
+
+ def testUseVariableAsTensor(self):
+ with self.test_session():
+ var_x = tf.Variable(2.0)
+ var_y = tf.Variable(3.0)
+ tf.initialize_all_variables().run()
+ self.assertAllClose(2.0, var_x.eval())
+ self.assertAllClose(3.0, var_y.eval())
+ self.assertAllClose(5.0, tf.add(var_x, var_y).eval())
+
+ def testCollections(self):
+ with self.test_session():
+ var_x = tf.Variable(2.0)
+ var_y = tf.Variable(2.0, trainable=False)
+ var_z = tf.Variable(2.0, trainable=True)
+ var_t = tf.Variable(
+ 2.0, trainable=True,
+ collections=[tf.GraphKeys.TRAINABLE_VARIABLES,
+ tf.GraphKeys.VARIABLES])
+ self.assertEqual([var_x, var_y, var_z, var_t], tf.all_variables())
+ self.assertEqual([var_x, var_z, var_t], tf.trainable_variables())
+
+ def testOperators(self):
+ with self.test_session():
+ var_f = tf.Variable([2.0])
+ add = var_f + 0.0
+ radd = 1.0 + var_f
+ sub = var_f - 1.0
+ rsub = 1.0 - var_f
+ mul = var_f * 10.0
+ rmul = 10.0 * var_f
+ div = var_f / 10.0
+ rdiv = 10.0 / var_f
+ lt = var_f < 3.0
+ rlt = 3.0 < var_f
+ le = var_f <= 2.0
+ rle = 2.0 <= var_f
+ gt = var_f > 3.0
+ rgt = 3.0 > var_f
+ ge = var_f >= 2.0
+ rge = 2.0 >= var_f
+ neg = -var_f
+ abs_v = abs(var_f)
+
+ var_i = tf.Variable([20])
+ mod = var_i % 7
+ rmod = 103 % var_i
+
+ var_b = tf.Variable([True, False])
+ and_v = operator.and_(var_b, [True, True])
+ or_v = operator.or_(var_b, [False, True])
+ xor_v = operator.xor(var_b, [False, False])
+ invert_v = ~var_b
+
+ rnd = np.random.rand(4, 4).astype("f")
+ var_t = tf.Variable(rnd)
+ slice_v = var_t[2, 0:0]
+
+ tf.initialize_all_variables().run()
+ self.assertAllClose([2.0], add.eval())
+ self.assertAllClose([3.0], radd.eval())
+ self.assertAllClose([1.0], sub.eval())
+ self.assertAllClose([-1.0], rsub.eval())
+ self.assertAllClose([20.0], mul.eval())
+ self.assertAllClose([20.0], rmul.eval())
+ self.assertAllClose([0.2], div.eval())
+ self.assertAllClose([5.0], rdiv.eval())
+ self.assertAllClose([-2.0], neg.eval())
+ self.assertAllClose([2.0], abs_v.eval())
+ self.assertAllClose([True], lt.eval())
+ self.assertAllClose([False], rlt.eval())
+ self.assertAllClose([True], le.eval())
+ self.assertAllClose([True], rle.eval())
+ self.assertAllClose([False], gt.eval())
+ self.assertAllClose([True], rgt.eval())
+ self.assertAllClose([True], ge.eval())
+ self.assertAllClose([True], rge.eval())
+
+ self.assertAllClose([6], mod.eval())
+ self.assertAllClose([3], rmod.eval())
+
+ self.assertAllClose([True, False], and_v.eval())
+ self.assertAllClose([True, True], or_v.eval())
+ self.assertAllClose([True, False], xor_v.eval())
+ self.assertAllClose([False, True], invert_v.eval())
+
+ self.assertAllClose(rnd[2, 0:0], slice_v.eval())
+
+ def testSession(self):
+ with self.test_session() as sess:
+ var = tf.Variable([1, 12])
+ tf.initialize_all_variables().run()
+ self.assertAllClose([1, 12], sess.run(var))
+
+
+class IsInitializedTest(tf.test.TestCase):
+
+ def testNoVars(self):
+ with tf.Graph().as_default():
+ self.assertEqual(None, tf.assert_variables_initialized())
+
+ def testVariables(self):
+ with tf.Graph().as_default(), self.test_session() as sess:
+ v = tf.Variable([1, 2])
+ w = tf.Variable([3, 4])
+ _ = v, w
+ inited = tf.assert_variables_initialized()
+ with self.assertRaisesOpError("Attempting to use uninitialized value"):
+ sess.run(inited)
+ tf.initialize_all_variables().run()
+ sess.run(inited)
+
+ def testVariableList(self):
+ with tf.Graph().as_default(), self.test_session() as sess:
+ v = tf.Variable([1, 2])
+ w = tf.Variable([3, 4])
+ inited = tf.assert_variables_initialized([v])
+ with self.assertRaisesOpError("Attempting to use uninitialized value"):
+ inited.op.run()
+ sess.run(w.initializer)
+ with self.assertRaisesOpError("Attempting to use uninitialized value"):
+ inited.op.run()
+ v.initializer.run()
+ inited.op.run()
+
+
+if __name__ == "__main__":
+ tf.test.main()