(self, use_resource=False, use_callable_params=False)
| 156 | self.evaluate(repeated_index_update_var)) |
| 157 | |
| 158 | def doTestBasic(self, use_resource=False, use_callable_params=False): |
| 159 | if context.executing_eagerly() and not use_resource: |
| 160 | self.skipTest( |
| 161 | "Skipping test with use_resource=False and executing eagerly.") |
| 162 | for i, dtype in enumerate([dtypes.half, dtypes.float32, dtypes.float64]): |
| 163 | with self.session(graph=ops.Graph()): |
| 164 | # Initialize variables for numpy implementation. |
| 165 | m0, v0, m1, v1 = 0.0, 0.0, 0.0, 0.0 |
| 166 | var0_np = np.array([1.0, 2.0], dtype=dtype.as_numpy_dtype) |
| 167 | grads0_np = np.array([0.1, 0.1], dtype=dtype.as_numpy_dtype) |
| 168 | var1_np = np.array([3.0, 4.0], dtype=dtype.as_numpy_dtype) |
| 169 | grads1_np = np.array([0.01, 0.01], dtype=dtype.as_numpy_dtype) |
| 170 | |
| 171 | if use_resource: |
| 172 | var0 = resource_variable_ops.ResourceVariable( |
| 173 | var0_np, name="var0_%d" % i) |
| 174 | var1 = resource_variable_ops.ResourceVariable( |
| 175 | var1_np, name="var1_%d" % i) |
| 176 | else: |
| 177 | var0 = variables.RefVariable(var0_np) |
| 178 | var1 = variables.RefVariable(var1_np) |
| 179 | grads0 = constant_op.constant(grads0_np) |
| 180 | grads1 = constant_op.constant(grads1_np) |
| 181 | |
| 182 | learning_rate = lambda: 0.001 |
| 183 | beta1 = lambda: 0.9 |
| 184 | beta2 = lambda: 0.999 |
| 185 | epsilon = lambda: 1e-8 |
| 186 | if not use_callable_params: |
| 187 | learning_rate = learning_rate() |
| 188 | beta1 = beta1() |
| 189 | beta2 = beta2() |
| 190 | epsilon = epsilon() |
| 191 | |
| 192 | opt = adam.AdamOptimizer(learning_rate=learning_rate) |
| 193 | update = opt.apply_gradients(zip([grads0, grads1], [var0, var1])) |
| 194 | opt_variables = opt.variables() |
| 195 | beta1_power, beta2_power = opt._get_beta_accumulators() |
| 196 | self.assertTrue(beta1_power is not None) |
| 197 | self.assertTrue(beta2_power is not None) |
| 198 | self.assertIn(beta1_power, opt_variables) |
| 199 | self.assertIn(beta2_power, opt_variables) |
| 200 | # Ensure that non-slot variables are the same type as the requested |
| 201 | # variables. |
| 202 | self.assertEqual( |
| 203 | use_resource, |
| 204 | resource_variable_ops.is_resource_variable(beta1_power)) |
| 205 | self.assertEqual( |
| 206 | use_resource, |
| 207 | resource_variable_ops.is_resource_variable(beta2_power)) |
| 208 | |
| 209 | if not context.executing_eagerly(): |
| 210 | with ops.Graph().as_default(): |
| 211 | # Shouldn't return non-slot variables from other graphs. |
| 212 | self.assertEqual(0, len(opt.variables())) |
| 213 | self.evaluate(variables.global_variables_initializer()) |
| 214 | # Fetch params to validate initial values |
| 215 | self.assertAllClose([1.0, 2.0], self.evaluate(var0)) |
no test coverage detected