partitioned_variables_test.py revision dd56e71952b73f4ab1158f8343812cbccd5c1c8d
10cf9ed3a719c0782695154d5a0bca260001cec15A. Unique TensorFlower# Copyright 2015 The TensorFlow Authors. All Rights Reserved. 203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# 303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# Licensed under the Apache License, Version 2.0 (the "License"); 403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# you may not use this file except in compliance with the License. 503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# You may obtain a copy of the License at 603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# 703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# http://www.apache.org/licenses/LICENSE-2.0 803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# 903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# Unless required by applicable law or agreed to in writing, software 1003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# distributed under the License is distributed on an "AS IS" BASIS, 1103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# See the License for the specific language governing permissions and 1303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# limitations under the License. 1403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower# ============================================================================== 1503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 1603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower"""Tests for partitioned_variables.py.""" 1703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlowerfrom __future__ import absolute_import 1803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlowerfrom __future__ import division 1903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlowerfrom __future__ import print_function 2003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 2103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlowerimport numpy as np 2203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlowerfrom six.moves import xrange # pylint: disable=redefined-builtin 2303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlowerimport tensorflow as tf 2403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 2504654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 2604654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdoclass PartitionerCreatorsTest(tf.test.TestCase): 2704654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 285b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower def _testVariableAxisSizePartitioner(self, name, axis, max_shard_bytes, 295b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_axis_shards, 305b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_partitions, 315b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shards=None): 325b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower partitioner = tf.variable_axis_size_partitioner( 335b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower axis=axis, max_shard_bytes=max_shard_bytes, max_shards=max_shards) 345b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower 355b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower with tf.variable_scope("root", partitioner=partitioner): 36775a7490047299f2b64bf4fafcb6504852b8082dWei Ho v0 = tf.get_variable(name, dtype=tf.float32, shape=(4, 8, 16, 32)) 37775a7490047299f2b64bf4fafcb6504852b8082dWei Ho v0_list = v0._get_variable_list() 38775a7490047299f2b64bf4fafcb6504852b8082dWei Ho v0_part = v0._get_partitions() 395b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower self.assertEqual(len(v0_list), expected_axis_shards) 405b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower self.assertAllEqual(v0_part, expected_partitions) 415b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower 4204654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo def testVariableAxisSizePartitioner(self): 4304654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo with self.test_session(): 4404654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo # Create a partitioned variable of shape (4, 8, 16, 32) type float32 4504654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo # Bytes per slice along the given axes: 4604654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 4704654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo # 8 * 16 * 32 * sizeof(float32) = 16384 / slice on axis 0 4804654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo # 4 * 16 * 32 * sizeof(float32) = 8192 / slice on axis 1 4904654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo # 4 * 8 * 32 * sizeof(float32) = 4096 / slice on axis 2 5004654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo # 4 * 8 * 16 * sizeof(float32) = 2048 / slice on axis 3 5104654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 5204654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo # Now partition it in different ways... 5304654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 545b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # No need to slice: bytes_per_slice * dim0 = 65536 < max_shard_bytes 555b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower self._testVariableAxisSizePartitioner("v0", axis=0, 565b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shard_bytes=131072, 575b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_axis_shards=1, 585b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_partitions=(1, 1, 1, 1)) 595b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower 605b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # Slice exactly once: bytes_per_slice * dim1 = 65536 = max_shard_bytes 615b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower self._testVariableAxisSizePartitioner("v1", axis=1, 625b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shard_bytes=65536, 635b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_axis_shards=1, 645b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_partitions=(1, 1, 1, 1)) 655b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower 665b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # Slice into 2 parts: 675b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # bytes_per_slice = 4096 685b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # slices_per_shard = 32768 / 4096 = 8 695b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # axis_shards = 16 / 8 = 2 705b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower self._testVariableAxisSizePartitioner("v2", axis=2, 715b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shard_bytes=32768, 725b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_axis_shards=2, 735b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_partitions=(1, 1, 2, 1)) 745b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower 755b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # This partitioner makes sure we maximize the number of shards along 765b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # axis 3. Slice it into 32 parts: 775b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # bytes_per_slice = 2048 785b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # slices_per_shard = 2048 / 2048 = 1 795b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # axis_shards = 32 / 1 = 32 805b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower self._testVariableAxisSizePartitioner("v3a", axis=3, 815b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shard_bytes=2048, 825b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_axis_shards=32, 835b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_partitions=(1, 1, 1, 32)) 8404654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 852ec20cda397ca5ba23838261c4c9526b8506af67A. Unique TensorFlower # This partitioner makes sure we do not go past the bound of allowable 865b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # number of shards along axis 3. 875b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # Slice into 32 parts: 885b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # bytes_per_slice = 2048 895b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # slices_per_shard = max(1, 1024 / 2048) = 1 905b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # axis_shards = 32 / 1 = 32 915b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # Slice into max of 32 parts because: max_shard_bytes < bytes_per_slice 925b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower self._testVariableAxisSizePartitioner("v3b", axis=3, 935b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shard_bytes=1024, 945b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_axis_shards=32, 955b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_partitions=(1, 1, 1, 32)) 965b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower 975b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # Specify max_shards so that it won't affect sharding. 985b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower self._testVariableAxisSizePartitioner("v3c", axis=3, 995b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shard_bytes=1024, 1005b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_axis_shards=32, 1015b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_partitions=(1, 1, 1, 32), 1025b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shards=33) 1035b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower 1045b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower # Specify max_shards so that it will affect sharding. 1055b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower self._testVariableAxisSizePartitioner("v3d", axis=3, 1065b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shard_bytes=1024, 1075b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_axis_shards=2, 1085b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower expected_partitions=(1, 1, 1, 2), 1095b4ee6df47f40ba49eadc8b97435d232f0f83c0eA. Unique TensorFlower max_shards=2) 11004654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 11104654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo # Use the partitioner with strings 11204654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo partitioner_axis3_str = tf.variable_axis_size_partitioner( 1132ec20cda397ca5ba23838261c4c9526b8506af67A. Unique TensorFlower axis=3, max_shard_bytes=32768, bytes_per_string_element=8) 11404654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 11504654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo with tf.variable_scope("root", partitioner=partitioner_axis3_str): 116775a7490047299f2b64bf4fafcb6504852b8082dWei Ho v3str = tf.get_variable( 11704654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo "v3str", 118775a7490047299f2b64bf4fafcb6504852b8082dWei Ho initializer=np.array([""] * 4 * 8 * 16 * 32).reshape(4, 8, 16, 32), 119775a7490047299f2b64bf4fafcb6504852b8082dWei Ho dtype=tf.string, 120775a7490047299f2b64bf4fafcb6504852b8082dWei Ho shape=(4, 8, 16, 32)) 121775a7490047299f2b64bf4fafcb6504852b8082dWei Ho v3str_list = v3str._get_variable_list() 122775a7490047299f2b64bf4fafcb6504852b8082dWei Ho v3str_part = v3str._get_partitions() 12304654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 1242ec20cda397ca5ba23838261c4c9526b8506af67A. Unique TensorFlower # Now the estimated bytes_per_slice = 4*8*16*bytes_per_string_element 1252ec20cda397ca5ba23838261c4c9526b8506af67A. Unique TensorFlower # which is equal to 4096. Setting a max_shard_bytes of 32768 12604654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo # and we should get a split of 4. 1272ec20cda397ca5ba23838261c4c9526b8506af67A. Unique TensorFlower # Slice into 4 parts: 1282ec20cda397ca5ba23838261c4c9526b8506af67A. Unique TensorFlower # bytes_per_slice = 4096 1292ec20cda397ca5ba23838261c4c9526b8506af67A. Unique TensorFlower # slices_per_shard = 32768 / 4096 = 8 1302ec20cda397ca5ba23838261c4c9526b8506af67A. Unique TensorFlower # axis_shards = 32 / 8 = 4 13104654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo self.assertEqual(len(v3str_list), 4) 13204654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo self.assertAllEqual(v3str_part, (1, 1, 1, 4)) 13304654ab6734a81c6bf491c370218f9173484a2f0Eugene Brevdo 134f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower def _testMinMaxVariablePartitioner(self, max_partitions, axis, min_slice_size, 135f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name, var_shape, 136f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards, expected_partitions): 137f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower partitioner = tf.min_max_variable_partitioner(max_partitions=max_partitions, 138f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower axis=axis, 139f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=min_slice_size) 140f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower with tf.variable_scope("root", partitioner=partitioner): 141f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower v0 = tf.get_variable(var_name, dtype=tf.float32, shape=var_shape) 142f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower v0_list = v0._get_variable_list() 143f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower v0_part = v0._get_partitions() 144f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self.assertEqual(len(v0_list), expected_axis_shards) 145f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self.assertAllEqual(v0_part, expected_partitions) 146f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower 147f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower def testMinMaxVariablePartitioner(self): 148f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower with self.test_session(): 149f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower # Partitioning a variable of shape=[2048] with a minimum of 2K per slice. 150f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=100, axis=0, 151f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=2 << 10, 152f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v0_0", var_shape=[2048], 153f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=4, 154f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[4]) 155f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower 156f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower # Partitioning a variable of shape=[2048, 1024] with a minimum of 256K per 157f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower # slice. 158f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=100, axis=0, 159f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=256 << 10, 160f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v0", var_shape=[2048, 1024], 161f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=32, 162f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[32, 1]) 163f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower 164f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower # max_partitions restricts partitioning of the variable. 165f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=16, axis=0, 166f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=256 << 10, 167f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v1_max", 168f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_shape=[2048, 1024], 169f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=16, 170f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[16, 1]) 171f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=1, axis=0, 172f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=256 << 10, 173f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v2_max", 174f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_shape=[2048, 1024], 175f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=1, 176f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[1, 1]) 177f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower 178f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower # Reducing/Increasing min_slice_size proportionately increases/reduces the 179f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower # number of partitions. 180f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=100, axis=0, 181f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=128 << 10, 182f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v3_slice", 183f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_shape=[2048, 1024], 184f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=64, 185f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[64, 1]) 186f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=100, axis=0, 187f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=512 << 10, 188f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v4_slice", 189f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_shape=[2048, 1024], 190f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=16, 191f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[16, 1]) 192f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower 193f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower # Partitioning the variable along a different axis. 194f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=100, axis=1, 195f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=256 << 10, 196f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v5_axis", 197f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_shape=[64, 1024, 1, 3], 198f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=3, 199f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[1, 3, 1, 1]) 200f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=100, axis=3, 201f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=256 << 10, 202f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v6_axis", 203f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_shape=[64, 1024, 1, 3], 204f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=3, 205f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[1, 1, 1, 3]) 206f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower 207f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower # Can not partition the variable more than what its shape allows. 208f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=100, axis=0, 209f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=256 << 10, 210f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v7_shape", 211f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_shape=[16, 128, 1024], 212f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=16, 213f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[16, 1, 1]) 214f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower self._testMinMaxVariablePartitioner(max_partitions=100, axis=0, 215f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower min_slice_size=256 << 10, 216f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_name="v8_shape", 217f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower var_shape=[4, 512, 1024], 218f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_axis_shards=4, 219f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower expected_partitions=[4, 1, 1]) 220f2d00a47fd40c1006bc08b53be6bcbad7983dfd8A. Unique TensorFlower 22103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 22203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlowerdef _IotaInitializer(shape, dtype=tf.float32): 22303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower assert dtype == tf.float32 22403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower if len(shape) == 1: 22503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower return range(shape[0]) 22603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower else: 22703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower val = _IotaInitializer(shape[1:], dtype) 22803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower return [[(10 ** i) * v for v in val] for i in range(shape[0])] 22903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 23003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 23103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlowerclass PartitionedVariablesTestCase(tf.test.TestCase): 23203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 23303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def _TestSaveSpec(self, slices, expected_specs): 23403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(len(expected_specs), len(slices)) 23503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower for i in xrange(len(expected_specs)): 23603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEquals(expected_specs[i], slices[i]._save_slice_info.spec) 23703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 23803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testVecConstantInit(self): 23903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 24003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd_par = tf.constant([1, 2, 3, 4]) 24103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs = tf.create_partitioned_variables([4], [4], rnd_par) 24203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 24303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower val = tf.concat(0, vs).eval() 24403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = rnd_par.eval() 24503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose(rnd, val) 24603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual([tf.int32] * 4, [v.dtype.base_dtype for v in vs]) 24703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self._TestSaveSpec(vs, ["4 0,1", "4 1,1", "4 2,1", "4 3,1"]) 24803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 24903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testConstantInit(self): 25003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 25103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd_par = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8]]) 25203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs = tf.create_partitioned_variables([2, 4], [1, 2], rnd_par) 25303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 25403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower val = tf.concat(1, vs).eval() 25503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = rnd_par.eval() 25603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose(rnd, val) 25703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual([tf.int32] * 2, [v.dtype.base_dtype for v in vs]) 25803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self._TestSaveSpec(vs, ["2 4 0,2:0,2", "2 4 0,2:2,2"]) 25903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 26003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testName(self): 26103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 26203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd_par = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8]]) 26303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with tf.variable_scope("hi"): 26403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs1 = tf.create_partitioned_variables([2, 4], [1, 2], rnd_par) 26503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs2 = tf.create_partitioned_variables([2, 4], [1, 2], rnd_par) 26603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 26703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var1_name = vs1[0]._save_slice_info.full_name 26803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var2_name = vs2[0]._save_slice_info.full_name 26903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual("hi/PartitionedVariable", var1_name) 27003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual("hi/PartitionedVariable_1", var2_name) 27103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var1_name + "/part_0:0", vs1[0].name) 27203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var1_name + "/part_1:0", vs1[1].name) 27303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var2_name + "/part_0:0", vs2[0].name) 27403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var2_name + "/part_1:0", vs2[1].name) 27503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Test same variable. 27603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 27703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd_par = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8]]) 27803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with tf.variable_scope("hola") as vs: 279775a7490047299f2b64bf4fafcb6504852b8082dWei Ho vs1 = tf.create_partitioned_variables( 280775a7490047299f2b64bf4fafcb6504852b8082dWei Ho [2, 4], [1, 2], rnd_par, dtype=tf.int32) 28103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with tf.variable_scope(vs, reuse=True): 282775a7490047299f2b64bf4fafcb6504852b8082dWei Ho vs2 = tf.create_partitioned_variables( 283775a7490047299f2b64bf4fafcb6504852b8082dWei Ho [2, 4], [1, 2], rnd_par, dtype=tf.int32) 28403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 28503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var1_name = vs1[0]._save_slice_info.full_name 28603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var2_name = vs2[0]._save_slice_info.full_name 28703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual("hola/PartitionedVariable", var1_name) 28803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual("hola/PartitionedVariable", var2_name) 28903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var1_name + "/part_0:0", vs1[0].name) 29003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var1_name + "/part_1:0", vs1[1].name) 29103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var2_name + "/part_0:0", vs2[0].name) 29203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var2_name + "/part_1:0", vs2[1].name) 29303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Test name_scope 29403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 29503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd_par = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8]]) 29603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with tf.name_scope("ola"): 29703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs1 = tf.create_partitioned_variables([2, 4], [1, 2], rnd_par) 29803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs2 = tf.create_partitioned_variables([2, 4], [1, 2], rnd_par) 29903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 30003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var1_name = vs1[0]._save_slice_info.full_name 30103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var2_name = vs2[0]._save_slice_info.full_name 30203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Currently, the name scope 'ola' has no effect. 30303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual("PartitionedVariable", var1_name) 30403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual("PartitionedVariable_1", var2_name) 30503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var1_name + "/part_0:0", vs1[0].name) 30603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var1_name + "/part_1:0", vs1[1].name) 30703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var2_name + "/part_0:0", vs2[0].name) 30803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual(var2_name + "/part_1:0", vs2[1].name) 30903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 31003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testRandomInitValue(self): 31103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 31203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = tf.Variable(tf.random_uniform([200, 40])) 31303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs = tf.create_partitioned_variables( 31403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd.get_shape(), [1, 10], rnd.initialized_value()) 31503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 31603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower val = tf.concat(1, vs).eval() 31703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = rnd.eval() 31803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose(rnd, val) 31903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual([tf.float32] * 10, [v.dtype.base_dtype for v in vs]) 32003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self._TestSaveSpec(vs, ["200 40 0,200:0,4", 32103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "200 40 0,200:4,4", 32203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "200 40 0,200:8,4", 32303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "200 40 0,200:12,4", 32403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "200 40 0,200:16,4", 32503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "200 40 0,200:20,4", 32603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "200 40 0,200:24,4", 32703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "200 40 0,200:28,4", 32803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "200 40 0,200:32,4", 32903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "200 40 0,200:36,4"]) 33003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 33103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testRandomInitUnevenPartitions(self): 33203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 33303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = tf.Variable( 33403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.random_uniform([20, 43], dtype=tf.float64)) 33503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var_lists = [ 33603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.create_partitioned_variables( 33703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd.get_shape(), [1, i], 33803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd.initialized_value()) 33903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower for i in xrange(1, 10)] 34003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 34103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd_val = rnd.eval() 34203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Only check the slice save specs for the first 5 tf. 34303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower save_specs = [ 34403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # One slice 34503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower ["20 43 0,20:0,43"], 34603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Two slices 34703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower ["20 43 0,20:0,22", 34803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:22,21"], 34903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Three slices 35003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower ["20 43 0,20:0,15", 35103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:15,14", 35203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:29,14"], 35303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Four slices 35403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower ["20 43 0,20:0,11", 35503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:11,11", 35603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:22,11", 35703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:33,10"], 35803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Five slices 35903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower ["20 43 0,20:0,9", 36003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:9,9", 36103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:18,9", 36203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:27,8", 36303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "20 43 0,20:35,8"]] 36403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower for i, vs in enumerate(var_lists): 36503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var_val = tf.concat(1, vs).eval() 36603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose(rnd_val, var_val) 36703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertEqual( 36803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower [tf.float64] * len(vs), [v.dtype.base_dtype for v in vs]) 36903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower if i < len(save_specs): 37003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self._TestSaveSpec(vs, save_specs[i]) 37103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 37203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testDegenerate(self): 37303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 37403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = tf.Variable(tf.random_uniform([10, 43])) 37503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs = tf.create_partitioned_variables( 37603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd.get_shape(), [1, 1], rnd.initialized_value()) 37703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 37803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower val = tf.concat(0, vs).eval() 37903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = rnd.eval() 38003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose(rnd, val) 38103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self._TestSaveSpec(vs, ["10 43 0,10:0,43"]) 38203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 38303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testSliceSizeOne(self): 38403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 38503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = tf.Variable(tf.random_uniform([10, 43])) 38603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs = tf.create_partitioned_variables( 38703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd.get_shape(), [10, 1], rnd.initialized_value()) 38803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 38903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower val = tf.concat(0, vs).eval() 39003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = rnd.eval() 39103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose(rnd, val) 39203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self._TestSaveSpec(vs, ["10 43 0,1:0,43", 39303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "10 43 1,1:0,43", 39403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "10 43 2,1:0,43", 39503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "10 43 3,1:0,43", 39603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "10 43 4,1:0,43", 39703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "10 43 5,1:0,43", 39803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "10 43 6,1:0,43", 39903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "10 43 7,1:0,43", 40003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "10 43 8,1:0,43", 40103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "10 43 9,1:0,43"]) 40203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 40303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testIotaInitializer(self): 40403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose([0., 1., 2., 3.], _IotaInitializer([4])) 40503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose([[0., 1.], [0., 10.], [0., 100.], [0., 1000.]], 40603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower _IotaInitializer([4, 2])) 40703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 40803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower vs = tf.create_partitioned_variables([13, 5], [3, 1], _IotaInitializer) 40903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 41003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower slice0 = _IotaInitializer([5, 5]) 41103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower slice1 = _IotaInitializer([4, 5]) 41203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower slice2 = _IotaInitializer([4, 5]) 41303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower val = tf.concat(0, vs).eval() 41403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose(slice0 + slice1 + slice2, val) 41503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self._TestSaveSpec(vs, ["13 5 0,5:0,5", 41603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "13 5 5,4:0,5", 41703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower "13 5 9,4:0,5"]) 41803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 41903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testRandomInitializer(self): 42003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Sanity check that the slices uses a different seed when using a random 42103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # initializer function. 42203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 42303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var0, var1 = tf.create_partitioned_variables( 42403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower [20, 12], [1, 2], tf.random_uniform_initializer()) 42503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 42603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower val0, val1 = var0.eval().flatten(), var1.eval().flatten() 42703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertTrue(np.linalg.norm(val0 - val1) > 1e-6) 42803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # Negative test that proves that slices have the same values if 42903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower # the random initializer uses a seed. 43003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 43103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower var0, var1 = tf.create_partitioned_variables( 43203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower [20, 12], [1, 2], tf.random_uniform_initializer(seed=201)) 43303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.initialize_all_variables().run() 43403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower val0, val1 = var0.eval().flatten(), var1.eval().flatten() 43503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower self.assertAllClose(val0, val1) 43603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 43703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower def testSomeErrors(self): 43803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.test_session(): 43903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower rnd = tf.Variable(tf.random_uniform([10, 43])) 44003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.assertRaises(ValueError): 44103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.create_partitioned_variables([10], [1, 1], rnd.initialized_value()) 44203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.assertRaises(ValueError): 44303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.create_partitioned_variables([10, 20], [1], rnd.initialized_value()) 44403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.assertRaises(ValueError): 44503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.create_partitioned_variables([10, 43], [1], rnd.initialized_value()) 44603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.assertRaises(ValueError): 44703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.create_partitioned_variables( 44803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower [10, 43], [1, 2, 3], rnd.initialized_value()) 44903869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.assertRaises(ValueError): 45003869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.create_partitioned_variables( 45103869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower [10, 43], [11, 1], rnd.initialized_value()) 45203869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.assertRaises(ValueError): 45303869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.create_partitioned_variables( 45403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower [10, 43], [20, 1], rnd.initialized_value()) 45503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower with self.assertRaises(ValueError): 45603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.create_partitioned_variables( 45703869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower [10, 43], [1, 50], rnd.initialized_value()) 45803869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 459dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower def testControlDepsNone(self): 460dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower with self.test_session() as session: 461dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower c = tf.constant(1.0) 462dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower with tf.control_dependencies([c]): 463dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower # d get the control dependency. 464dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower d = tf.constant(2.0) 465dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower # Partitioned variables do not. 466dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower var_x = tf.get_variable( 467dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower "x", 468dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower initializer=tf.ones_initializer([2]), 469dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower partitioner=tf.variable_axis_size_partitioner(4)) 470dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower 471dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower ops_before_read = session.graph.get_operations() 472dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower var_x.as_tensor() # Caches the ops for subsequent reads. 473dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower reading_ops = [op for op in session.graph.get_operations() 474dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower if op not in ops_before_read] 475dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower 476dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower self.assertEqual([c.op], d.op.control_inputs) 477dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower # Tests that no control dependencies are added to reading a partitioned 478dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower # variable which is similar to reading a variable. 479dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower for op in reading_ops: 480dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower self.assertEqual([], op.control_inputs) 481dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower 482dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower def testConcat(self): 483dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower with self.test_session() as session: 484dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower var_x = tf.get_variable( 485dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower "x", 486dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower initializer=tf.constant([1., 2.]), 487dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower partitioner=tf.variable_axis_size_partitioner(4)) 488dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower 489dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower c = tf.constant(1.0) 490dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower with tf.control_dependencies([c]): 491dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower ops_before_concat = session.graph.get_operations() 492dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower value = var_x.concat() 493dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower concat_ops = [op for op in session.graph.get_operations() 494dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower if op not in ops_before_concat] 495dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower 496dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower concat_control_inputs = [ci for op in concat_ops 497dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower for ci in op.control_inputs] 498dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower self.assertTrue( 499dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower c.op in concat_control_inputs, 500dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower "var_x.concat() should get control dependencies from its scope.") 501dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower tf.initialize_all_variables().run() 502dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower self.assertAllClose(value.eval(), var_x.as_tensor().eval()) 503dd56e71952b73f4ab1158f8343812cbccd5c1c8dA. Unique TensorFlower 50403869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower 50503869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlowerif __name__ == "__main__": 50603869e6e9cfac85d3e0f87ded01f4dd8de10ed67A. Unique TensorFlower tf.test.main() 507