MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / testAddWeight

Method testAddWeight

tensorflow/python/layers/base_test.py:91–147  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

89
90 @test_util.run_in_graph_and_eager_modes
91 def testAddWeight(self):
92 layer = base_layers.Layer(name='my_layer')
93
94 # Test basic variable creation.
95 variable = layer.add_variable(
96 'my_var', [2, 2], initializer=init_ops.zeros_initializer())
97 self.assertEqual(variable.name, 'my_layer/my_var:0')
98 self.assertEqual(layer.variables, [variable])
99 self.assertEqual(layer.trainable_variables, [variable])
100 self.assertEqual(layer.non_trainable_variables, [])
101 if not context.executing_eagerly():
102 self.assertEqual(
103 layer.variables,
104 ops.get_collection(ops.GraphKeys.TRAINABLE_VARIABLES))
105
106 # Test non-trainable variable creation.
107 # layer.add_variable should work even outside `build` and `call`.
108 variable_2 = layer.add_variable(
109 'non_trainable_var', [2, 2],
110 initializer=init_ops.zeros_initializer(),
111 trainable=False)
112 self.assertEqual(layer.variables, [variable, variable_2])
113 self.assertEqual(layer.trainable_variables, [variable])
114 self.assertEqual(layer.non_trainable_variables, [variable_2])
115
116 if not context.executing_eagerly():
117 self.assertEqual(
118 len(ops.get_collection(ops.GraphKeys.TRAINABLE_VARIABLES)), 1)
119
120 regularizer = lambda x: math_ops.reduce_sum(x) * 1e-3
121 _ = layer.add_variable(
122 'reg_var', [2, 2],
123 initializer=init_ops.zeros_initializer(),
124 regularizer=regularizer)
125 self.assertEqual(len(layer.losses), 1)
126
127 added_variable = [False]
128
129 # Test that sync `ON_READ` variables are defaulted to be non-trainable.
130 variable_3 = layer.add_variable(
131 'sync_on_read_var', [2, 2],
132 initializer=init_ops.zeros_initializer(),
133 synchronization=variable_scope.VariableSynchronization.ON_READ,
134 aggregation=variable_scope.VariableAggregation.SUM)
135 self.assertEqual(layer.non_trainable_variables, [variable_2, variable_3])
136
137 @def_function.function
138 def function_adds_weight():
139 if not added_variable[0]:
140 layer.add_variable(
141 'reg_var_from_function', [2, 2],
142 initializer=init_ops.zeros_initializer(),
143 regularizer=regularizer)
144 added_variable[0] = True
145
146 function_adds_weight()
147 self.assertEqual(len(layer.losses), 2)
148

Callers

nothing calls this directly

Calls 4

add_variableMethod · 0.95
executing_eagerlyMethod · 0.80
reduce_sumMethod · 0.80
get_collectionMethod · 0.45

Tested by

no test coverage detected