Python tensorflow.python.ops.state_ops.assign() Examples
The following are 30
code examples of tensorflow.python.ops.state_ops.assign().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
tensorflow.python.ops.state_ops
, or try the search function
.
Example #1
Source File: optimizer.py From BERT with Apache License 2.0 | 6 votes |
def _finish(self, update_ops, name_scope): # Update the power accumulators. with ops.control_dependencies(update_ops): with ops.colocate_with(self._iterations): update_beta1 = self._beta1_power.assign( self._beta1_power * self._beta1_t, use_locking=self._use_locking) update_beta2 = self._beta2_power.assign( self._beta2_power * self._beta2_t, use_locking=self._use_locking) t = self._iterations + 1. update_iterations = self._iterations.assign(t, use_locking=self._use_locking) momentum_cache_power = self._get_momentum_cache(self._schedule_decay_t, t) momentum_cache_t = self._beta1_t * (1. - 0.5 * momentum_cache_power) update_m_schedule = self._m_schedule.assign( self._m_schedule * momentum_cache_t, use_locking=self._use_locking) return control_flow_ops.group( *update_ops + [update_beta1, update_beta2] + [update_iterations, update_m_schedule], name=name_scope)
Example #2
Source File: variables.py From lambda-packs with MIT License | 6 votes |
def value(self): """Returns the last snapshot of this variable. You usually do not need to call this method as all ops that need the value of the variable call it automatically through a `convert_to_tensor()` call. Returns a `Tensor` which holds the value of the variable. You can not assign a new value to this tensor as it is not a reference to the variable. To avoid copies, if the consumer of the returned value is on the same device as the variable, this actually returns the live value of the variable, not a copy. Updates to the variable are seen by the consumer. If the consumer is on a different device it will get a copy of the variable. Returns: A `Tensor` containing the value of the variable. """ return self._snapshot
Example #3
Source File: variables.py From auto-alt-text-lambda-api with MIT License | 6 votes |
def value(self): """Returns the last snapshot of this variable. You usually do not need to call this method as all ops that need the value of the variable call it automatically through a `convert_to_tensor()` call. Returns a `Tensor` which holds the value of the variable. You can not assign a new value to this tensor as it is not a reference to the variable. To avoid copies, if the consumer of the returned value is on the same device as the variable, this actually returns the live value of the variable, not a copy. Updates to the variable are seen by the consumer. If the consumer is on a different device it will get a copy of the variable. Returns: A `Tensor` containing the value of the variable. """ return self._snapshot
Example #4
Source File: factorization_ops.py From auto-alt-text-lambda-api with MIT License | 6 votes |
def _prepare_gramian(self, factors, gramian): """Helper function to create ops to prepare/calculate gramian. Args: factors: Variable or list of Variable representing (sharded) factors. Used to compute the updated corresponding gramian value. gramian: Variable storing the gramian calculated from the factors. Returns: A op that updates the gramian with the calcuated value from the factors. """ partial_gramians = [] for f in factors: with ops.colocate_with(f): partial_gramians.append(math_ops.matmul(f, f, transpose_a=True)) with ops.colocate_with(gramian): prep_gramian = state_ops.assign(gramian, math_ops.add_n(partial_gramians)).op return prep_gramian
Example #5
Source File: factorization_ops.py From auto-alt-text-lambda-api with MIT License | 6 votes |
def scatter_update(cls, factor, indices, values, sharding_func): """Helper function for doing sharded scatter update.""" assert isinstance(factor, list) if len(factor) == 1: with ops.colocate_with(factor[0]): # TODO(agarwal): assign instead of scatter update for full batch update. return state_ops.scatter_update(factor[0], indices, values).op else: num_shards = len(factor) assignments, new_ids = sharding_func(indices) assert assignments is not None assignments = math_ops.cast(assignments, dtypes.int32) sharded_ids = data_flow_ops.dynamic_partition(new_ids, assignments, num_shards) sharded_values = data_flow_ops.dynamic_partition(values, assignments, num_shards) updates = [] for i in xrange(num_shards): updates.append( state_ops.scatter_update(factor[i], sharded_ids[i], sharded_values[ i])) return control_flow_ops.group(*updates)
Example #6
Source File: imperative_graph.py From lambda-packs with MIT License | 6 votes |
def record_variable_inits(self): """Context manager to record Variable initializations. Sets _in_variable_creation to True before a Variable is initialized. NOTE(keveman): This is used for recording the list of assign ops that are used to initialize variables. It relies on the fact that the constructor of Variable class creates exactly one assign op that is used for initializing the variable. Variable ops not created using the variables.Variable class are not added to _init_ops and hence not initialized automatically. """ old_init = getattr(variables.Variable, '__init__') def record(*args, **kwargs): self._in_variable_creation = True old_init(*args, **kwargs) self._in_variable_creation = False setattr(variables.Variable, '__init__', record) yield setattr(variables.Variable, '__init__', old_init) # pylint: enable=g-doc-return-or-yield
Example #7
Source File: optimizer.py From BERT with Apache License 2.0 | 6 votes |
def _apply_dense(self, grad, var): lr_t = math_ops.cast(self._lr_t, var.dtype.base_dtype) beta1_t = math_ops.cast(self._beta1_t, var.dtype.base_dtype) beta2_t = math_ops.cast(self._beta2_t, var.dtype.base_dtype) epsilon_t = math_ops.cast(self._epsilon_t, var.dtype.base_dtype) # the following equations given in [1] # m_t = beta1 * m + (1 - beta1) * g_t m = self.get_slot(var, "m") m_t = state_ops.assign(m, beta1_t * m + (1. - beta1_t) * grad, use_locking=self._use_locking) # v_t = beta2 * v + (1 - beta2) * (g_t * g_t) v = self.get_slot(var, "v") v_t = state_ops.assign(v, beta2_t * v + (1. - beta2_t) * tf.square(grad), use_locking=self._use_locking) v_prime = self.get_slot(var, "v_prime") v_t_prime = state_ops.assign(v_prime, tf.maximum(v_prime, v_t)) var_update = state_ops.assign_sub(var, lr_t * m_t / (tf.sqrt(v_t_prime) + epsilon_t), use_locking=self._use_locking) return control_flow_ops.group(*[var_update, m_t, v_t, v_t_prime]) # keras Nadam update rule
Example #8
Source File: nadam.py From BERT with Apache License 2.0 | 6 votes |
def _finish(self, update_ops, name_scope): # Update the power accumulators. with ops.control_dependencies(update_ops): with ops.colocate_with(self._iterations): update_beta1 = self._beta1_power.assign( self._beta1_power * self._beta1_t, use_locking=self._use_locking) update_beta2 = self._beta2_power.assign( self._beta2_power * self._beta2_t, use_locking=self._use_locking) t = self._iterations + 1. update_iterations = self._iterations.assign(t, use_locking=self._use_locking) momentum_cache_power = self._get_momentum_cache(self._schedule_decay_t, t) momentum_cache_t = self._beta1_t * (1. - 0.5 * momentum_cache_power) update_m_schedule = self._m_schedule.assign( self._m_schedule * momentum_cache_t, use_locking=self._use_locking) return control_flow_ops.group( *update_ops + [update_beta1, update_beta2] + [update_iterations, update_m_schedule], name=name_scope)
Example #9
Source File: utils.py From keras-adamw with MIT License | 6 votes |
def _update_t_cur_eta_t_v2(self, lr_t=None, var=None): # tf.keras t_cur_update, eta_t_update = None, None # in case not assigned # update `t_cur` if iterating last `(grad, var)` iteration_done = self._updates_processed == (self._updates_per_iter - 1) if iteration_done: t_cur_update = state_ops.assign_add(self.t_cur, 1, use_locking=self._use_locking) self._updates_processed = 0 # reset else: self._updates_processed += 1 # Cosine annealing if self.use_cosine_annealing and iteration_done: # ensure eta_t is updated AFTER t_cur with ops.control_dependencies([t_cur_update]): eta_t_update = state_ops.assign(self.eta_t, _compute_eta_t(self), use_locking=self._use_locking) self.lr_t = lr_t * self.eta_t # for external tracking return iteration_done, t_cur_update, eta_t_update
Example #10
Source File: backend.py From lambda-packs with MIT License | 6 votes |
def __init__(self, inputs, outputs, updates=None): updates = updates or [] if not isinstance(inputs, (list, tuple)): raise TypeError('`inputs` to a TensorFlow backend function ' 'should be a list or tuple.') if not isinstance(outputs, (list, tuple)): raise TypeError('`outputs` of a TensorFlow backend function ' 'should be a list or tuple.') if not isinstance(updates, (list, tuple)): raise TypeError('`updates` in a TensorFlow backend function ' 'should be a list or tuple.') self.inputs = list(inputs) self.outputs = list(outputs) with ops.control_dependencies(self.outputs): updates_ops = [] for update in updates: if isinstance(update, tuple): p, new_p = update updates_ops.append(state_ops.assign(p, new_p)) else: # assumed already an op updates_ops.append(update) self.updates_op = control_flow_ops.group(*updates_ops)
Example #11
Source File: backend.py From lambda-packs with MIT License | 6 votes |
def batch_set_value(tuples): """Sets the values of many tensor variables at once. Arguments: tuples: a list of tuples `(tensor, value)`. `value` should be a Numpy array. """ if tuples: assign_ops = [] feed_dict = {} for x, value in tuples: value = np.asarray(value) tf_dtype = _convert_string_dtype(x.dtype.name.split('_')[0]) if hasattr(x, '_assign_placeholder'): assign_placeholder = x._assign_placeholder assign_op = x._assign_op else: assign_placeholder = array_ops.placeholder(tf_dtype, shape=value.shape) assign_op = x.assign(assign_placeholder) x._assign_placeholder = assign_placeholder x._assign_op = assign_op assign_ops.append(assign_op) feed_dict[assign_placeholder] = value get_session().run(assign_ops, feed_dict=feed_dict)
Example #12
Source File: factorization_ops.py From lambda-packs with MIT License | 6 votes |
def _prepare_gramian(self, factors, gramian): """Helper function to create ops to prepare/calculate gramian. Args: factors: Variable or list of Variable representing (sharded) factors. Used to compute the updated corresponding gramian value. gramian: Variable storing the gramian calculated from the factors. Returns: A op that updates the gramian with the calcuated value from the factors. """ partial_gramians = [] for f in factors: with ops.colocate_with(f): partial_gramians.append(math_ops.matmul(f, f, transpose_a=True)) with ops.colocate_with(gramian): prep_gramian = state_ops.assign(gramian, math_ops.add_n(partial_gramians)).op return prep_gramian
Example #13
Source File: optimizer.py From tensorflow-XNN with MIT License | 6 votes |
def _finish(self, update_ops, name_scope): # Update the power accumulators. with ops.control_dependencies(update_ops): with ops.colocate_with(self._iterations): update_beta1 = self._beta1_power.assign( self._beta1_power * self._beta1_t, use_locking=self._use_locking) update_beta2 = self._beta2_power.assign( self._beta2_power * self._beta2_t, use_locking=self._use_locking) t = self._iterations + 1. update_iterations = self._iterations.assign(t, use_locking=self._use_locking) momentum_cache_power = self._get_momentum_cache(self._schedule_decay_t, t) momentum_cache_t = self._beta1_t * (1. - 0.5 * momentum_cache_power) update_m_schedule = self._m_schedule.assign( self._m_schedule * momentum_cache_t, use_locking=self._use_locking) return control_flow_ops.group( *update_ops + [update_beta1, update_beta2] + [update_iterations, update_m_schedule], name=name_scope)
Example #14
Source File: optimizer.py From tensorflow-XNN with MIT License | 6 votes |
def _apply_dense(self, grad, var): lr_t = math_ops.cast(self._lr_t, var.dtype.base_dtype) beta1_t = math_ops.cast(self._beta1_t, var.dtype.base_dtype) beta2_t = math_ops.cast(self._beta2_t, var.dtype.base_dtype) epsilon_t = math_ops.cast(self._epsilon_t, var.dtype.base_dtype) # the following equations given in [1] # m_t = beta1 * m + (1 - beta1) * g_t m = self.get_slot(var, "m") m_t = state_ops.assign(m, beta1_t * m + (1. - beta1_t) * grad, use_locking=self._use_locking) # v_t = beta2 * v + (1 - beta2) * (g_t * g_t) v = self.get_slot(var, "v") v_t = state_ops.assign(v, beta2_t * v + (1. - beta2_t) * tf.square(grad), use_locking=self._use_locking) v_prime = self.get_slot(var, "v_prime") v_t_prime = state_ops.assign(v_prime, tf.maximum(v_prime, v_t)) var_update = state_ops.assign_sub(var, lr_t * m_t / (tf.sqrt(v_t_prime) + epsilon_t), use_locking=self._use_locking) return control_flow_ops.group(*[var_update, m_t, v_t, v_t_prime]) # keras Nadam update rule
Example #15
Source File: factorization_ops.py From lambda-packs with MIT License | 6 votes |
def scatter_update(cls, factor, indices, values, sharding_func, name=None): """Helper function for doing sharded scatter update.""" assert isinstance(factor, list) if len(factor) == 1: with ops.colocate_with(factor[0]): # TODO(agarwal): assign instead of scatter update for full batch update. return state_ops.scatter_update(factor[0], indices, values, name=name).op else: num_shards = len(factor) assignments, new_ids = sharding_func(indices) assert assignments is not None assignments = math_ops.cast(assignments, dtypes.int32) sharded_ids = data_flow_ops.dynamic_partition(new_ids, assignments, num_shards) sharded_values = data_flow_ops.dynamic_partition(values, assignments, num_shards) updates = [] for i in xrange(num_shards): updates.append(state_ops.scatter_update(factor[i], sharded_ids[i], sharded_values[i])) return control_flow_ops.group(*updates, name=name)
Example #16
Source File: in_memory_eval.py From training_results_v0.5 with Apache License 2.0 | 5 votes |
def after_create_session(self, session, coord): # pylint: disable=unused-argument """Does first run which shows the eval metrics before training.""" if ops.get_collection(ops.GraphKeys.SAVEABLE_OBJECTS): raise ValueError( 'InMemoryEval does not support saveables other than global ' 'variables.') logging.info('Predict: Building var map') self._var_name_to_train_var = { v.name: v for v in ops.get_collection(ops.GraphKeys.GLOBAL_VARIABLES) } logging.info('Predict: Building transfer set') var_names_to_transfer = set(self._var_name_to_placeholder.keys()) & set( self._var_name_to_train_var.keys()) logging.info('Predict: Building filtering evaluation vars') # Filter training var names that are not exist in evaluation self._var_name_to_train_var = { v_name: self._var_name_to_train_var[v_name] for v_name in var_names_to_transfer } logging.info('Predict: Building filtering training vars') # Filter eval var names that are not exist in training self._var_name_to_eval_var = { v_name: self._var_name_to_eval_var[v_name] for v_name in var_names_to_transfer } logging.info('Predict: Building feed op') with self._graph.as_default(): self._var_feed_op = control_flow_ops.group([ state_ops.assign(self._var_name_to_eval_var[v_name], self._var_name_to_placeholder[v_name]) for v_name in var_names_to_transfer ]) logging.info('Predict: Done building.')
Example #17
Source File: radam_utils.py From BERT with Apache License 2.0 | 5 votes |
def _finish(self, update_ops, name_scope): with ops.control_dependencies(update_ops): step, beta1_power, beta2_power = self._get_beta_accumulators() with ops.colocate_with(beta1_power): update_step = step.assign(step + 1.0, use_locking=self._use_locking) update_beta1 = beta1_power.assign(beta1_power * self._beta1_t, use_locking=self._use_locking) update_beta2 = beta2_power.assign(beta2_power * self._beta2_t, use_locking=self._use_locking) return control_flow_ops.group(*update_ops + [update_step, update_beta1, update_beta2], name=name_scope)
Example #18
Source File: lamb_utils.py From BERT with Apache License 2.0 | 5 votes |
def _finish(self, update_ops, name_scope): with ops.control_dependencies(update_ops): step, beta1_power, beta2_power = self._get_beta_accumulators() with ops.colocate_with(beta1_power): update_step = step.assign(step + 1.0, use_locking=self._use_locking) update_beta1 = beta1_power.assign(beta1_power * self._beta1_t, use_locking=self._use_locking) update_beta2 = beta2_power.assign(beta2_power * self._beta2_t, use_locking=self._use_locking) return control_flow_ops.group(*update_ops + [update_step, update_beta1, update_beta2], name=name_scope)
Example #19
Source File: optimizer.py From BERT with Apache License 2.0 | 5 votes |
def _apply_dense(self, grad, var): lr_t = math_ops.cast(self._lr_t, var.dtype.base_dtype) beta_t = math_ops.cast(self._beta_t, var.dtype.base_dtype) alpha_t = math_ops.cast(self._alpha_t, var.dtype.base_dtype) eps = 1e-7 # cap for moving average m = self.get_slot(var, "m") m_t = m.assign(tf.maximum(beta_t * m + eps, tf.abs(grad))) var_update = state_ops.assign_sub(var, lr_t * grad * (1.0 + alpha_t * tf.sign(grad) * tf.sign(m_t))) # Create an op that groups multiple operations # When this op finishes, all ops in input have finished return control_flow_ops.group(*[var_update, m_t])
Example #20
Source File: cocob_optimizer.py From cocob with Apache License 2.0 | 5 votes |
def _apply_dense(self, grad, var): gradients_sum = self.get_slot(var, "gradients_sum") grad_norm_sum = self.get_slot(var, "grad_norm_sum") tilde_w = self.get_slot(var, "tilde_w") L = self.get_slot(var, "L") reward = self.get_slot(var, "reward") L_update = tf.maximum(L,tf.abs(grad)) gradients_sum_update = gradients_sum + grad grad_norm_sum_update = grad_norm_sum + tf.abs(grad) reward_update = tf.maximum(reward-grad*tilde_w,0) new_w = -gradients_sum_update/(L_update*(tf.maximum(grad_norm_sum_update+L_update,self._alpha*L_update)))*(reward_update+L_update) var_update = var-tilde_w+new_w tilde_w_update=new_w gradients_sum_update_op = state_ops.assign(gradients_sum, gradients_sum_update) grad_norm_sum_update_op = state_ops.assign(grad_norm_sum, grad_norm_sum_update) var_update_op = state_ops.assign(var, var_update) tilde_w_update_op = state_ops.assign(tilde_w, tilde_w_update) L_update_op = state_ops.assign(L, L_update) reward_update_op = state_ops.assign(reward, reward_update) return control_flow_ops.group(*[gradients_sum_update_op, var_update_op, grad_norm_sum_update_op, tilde_w_update_op, reward_update_op, L_update_op])
Example #21
Source File: variables.py From auto-alt-text-lambda-api with MIT License | 5 votes |
def _ref(self): """Returns a reference to this variable. You usually do not need to call this method as all ops that need a reference to the variable call it automatically. Returns is a `Tensor` which holds a reference to the variable. You can assign a new value to the variable by passing the tensor to an assign op. See [`value()`](#Variable.value) if you want to get the value of the variable. Returns: A `Tensor` that is a reference to the variable. """ return self._variable
Example #22
Source File: clustering_ops.py From auto-alt-text-lambda-api with MIT License | 5 votes |
def _full_batch_training_op(self, inputs, cluster_idx_list, cluster_centers): """Creates an op for training for full batch case. Args: inputs: list of input Tensors. cluster_idx_list: A vector (or list of vectors). Each element in the vector corresponds to an input row in 'inp' and specifies the cluster id corresponding to the input. cluster_centers: Tensor Ref of cluster centers. Returns: An op for doing an update of mini-batch k-means. """ cluster_sums = [] cluster_counts = [] epsilon = constant_op.constant(1e-6, dtype=inputs[0].dtype) for inp, cluster_idx in zip(inputs, cluster_idx_list): with ops.colocate_with(inp): cluster_sums.append( math_ops.unsorted_segment_sum(inp, cluster_idx, self._num_clusters)) cluster_counts.append( math_ops.unsorted_segment_sum( array_ops.reshape( array_ops.ones( array_ops.reshape(array_ops.shape(inp)[0], [-1])), [-1, 1]), cluster_idx, self._num_clusters)) with ops.colocate_with(cluster_centers): new_clusters_centers = math_ops.add_n(cluster_sums) / (math_ops.cast( math_ops.add_n(cluster_counts), cluster_sums[0].dtype) + epsilon) if self._clusters_l2_normalized(): new_clusters_centers = nn_impl.l2_normalize(new_clusters_centers, dim=1) return state_ops.assign(cluster_centers, new_clusters_centers)
Example #23
Source File: saved_model_test.py From auto-alt-text-lambda-api with MIT License | 5 votes |
def testLegacyInitOp(self): export_dir = os.path.join(test.get_temp_dir(), "test_legacy_init_op") builder = saved_model_builder.SavedModelBuilder(export_dir) with self.test_session(graph=ops.Graph()) as sess: # Add `v1` and `v2` variables to the graph. v1 = variables.Variable(1, name="v1") ops.add_to_collection("v", v1) v2 = variables.Variable(2, name="v2") ops.add_to_collection("v", v2) # Initialize another variable `v3` to 42. v3 = variables.Variable(42, name="v3", trainable=False, collections=[]) ops.add_to_collection("v", v3) # Set up an assignment op to be run as part of the legacy_init_op. assign_v3 = state_ops.assign(v3, math_ops.add(v1, v2)) legacy_init_op = control_flow_ops.group(assign_v3, name="legacy_init_op") sess.run(variables.global_variables_initializer()) builder.add_meta_graph_and_variables( sess, ["foo"], legacy_init_op=legacy_init_op) # Save the SavedModel to disk. builder.save() with self.test_session(graph=ops.Graph()) as sess: loader.load(sess, ["foo"], export_dir) self.assertEqual(1, ops.get_collection("v")[0].eval()) self.assertEqual(2, ops.get_collection("v")[1].eval()) # Evaluates to the sum of the first two variables and assigned as part of # the legacy_init_op, following a restore. self.assertEqual(3, ops.get_collection("v")[2].eval())
Example #24
Source File: saved_model_test.py From auto-alt-text-lambda-api with MIT License | 5 votes |
def testCustomMainOp(self): export_dir = os.path.join(test.get_temp_dir(), "test_main_op") builder = saved_model_builder.SavedModelBuilder(export_dir) with self.test_session(graph=ops.Graph()) as sess: # Add `v1` and `v2` variables to the graph. v1 = variables.Variable(1, name="v1") ops.add_to_collection("v", v1) v2 = variables.Variable(2, name="v2") ops.add_to_collection("v", v2) # Initialize another variable `v3` to 42. v3 = variables.Variable(42, name="v3") ops.add_to_collection("v", v3) # Set up an assignment op to be run as part of the main_op. with ops.control_dependencies([main_op.main_op()]): add_v1_v2 = math_ops.add(v1._ref(), v2._ref()) custom_main_op = control_flow_ops.group(state_ops.assign(v3, add_v1_v2)) sess.run(custom_main_op) builder.add_meta_graph_and_variables( sess, ["foo"], main_op=custom_main_op) # Save the SavedModel to disk. builder.save() with self.test_session(graph=ops.Graph()) as sess: loader.load(sess, ["foo"], export_dir) self.assertEqual(1, ops.get_collection("v")[0].eval()) self.assertEqual(2, ops.get_collection("v")[1].eval()) # Evaluates to the sum of the first two variables and assigned as part of # the main_op, following a restore. self.assertEqual(3, ops.get_collection("v")[2].eval())
Example #25
Source File: checkpoint_utils.py From lambda-packs with MIT License | 5 votes |
def _set_checkpoint_initializer(variable, file_pattern, tensor_name, slice_spec, name="checkpoint_initializer"): """Sets variable initializer to assign op form value in checkpoint's tensor. Args: variable: `Variable` object. file_pattern: string, where to load checkpoints from. tensor_name: Name of the `Tensor` to load from checkpoint reader. slice_spec: Slice specification for loading partitioned variables. name: Name of the operation. """ base_type = variable.dtype.base_dtype restore_op = io_ops.restore_v2( file_pattern, [tensor_name], [slice_spec], [base_type], name=name)[0] variable._initializer_op = state_ops.assign(variable, restore_op)
Example #26
Source File: nadam_optimizer.py From lambda-packs with MIT License | 5 votes |
def _apply_sparse_shared(self, grad, var, indices, scatter_add): beta1_power = math_ops.cast(self._beta1_power, var.dtype.base_dtype) beta2_power = math_ops.cast(self._beta2_power, var.dtype.base_dtype) lr_t = math_ops.cast(self._lr_t, var.dtype.base_dtype) beta1_t = math_ops.cast(self._beta1_t, var.dtype.base_dtype) beta2_t = math_ops.cast(self._beta2_t, var.dtype.base_dtype) epsilon_t = math_ops.cast(self._epsilon_t, var.dtype.base_dtype) lr = (lr_t * math_ops.sqrt(1 - beta2_power) / (1 - beta1_power)) # m_t = beta1 * m + (1 - beta1) * g_t m = self.get_slot(var, "m") m_scaled_g_values = grad * (1 - beta1_t) m_t = state_ops.assign(m, m * beta1_t, use_locking=self._use_locking) with ops.control_dependencies([m_t]): m_t = scatter_add(m, indices, m_scaled_g_values) # m_bar = (1 - beta1) * g_t + beta1 * m_t m_bar = m_scaled_g_values + beta1_t * m_t # v_t = beta2 * v + (1 - beta2) * (g_t * g_t) v = self.get_slot(var, "v") v_scaled_g_values = (grad * grad) * (1 - beta2_t) v_t = state_ops.assign(v, v * beta2_t, use_locking=self._use_locking) with ops.control_dependencies([v_t]): v_t = scatter_add(v, indices, v_scaled_g_values) v_sqrt = math_ops.sqrt(v_t) var_update = state_ops.assign_sub(var, lr * m_bar / (v_sqrt + epsilon_t), use_locking=self._use_locking) return control_flow_ops.group(*[var_update, m_bar, v_t])
Example #27
Source File: cudnn_rnn_ops.py From lambda-packs with MIT License | 5 votes |
def restore(self, restored_tensors, restored_shapes): weights = restored_tensors[:len(restored_tensors) // 2] biases = restored_tensors[len(restored_tensors) // 2:] params = self._canonical_to_params(weights, biases) if not isinstance(params, tuple): params = (params,) assign_ops = [ state_ops.assign(variable, param, validate_shape=False) for variable, param in zip(self._variables, params) ] return control_flow_ops.group(*assign_ops)
Example #28
Source File: input_pipeline_ops_test.py From lambda-packs with MIT License | 5 votes |
def testObtainNext(self): with self.test_session(): var = state_ops.variable_op([], dtypes.int64) state_ops.assign(var, -1).op.run() c = constant_op.constant(["a", "b"]) sample1 = input_pipeline_ops.obtain_next(c, var) self.assertEqual(b"a", sample1.eval()) self.assertEqual(0, var.eval()) sample2 = input_pipeline_ops.obtain_next(c, var) self.assertEqual(b"b", sample2.eval()) self.assertEqual(1, var.eval()) sample3 = input_pipeline_ops.obtain_next(c, var) self.assertEqual(b"a", sample3.eval()) self.assertEqual(0, var.eval())
Example #29
Source File: backend.py From lambda-packs with MIT License | 5 votes |
def update(x, new_x): return state_ops.assign(x, new_x)
Example #30
Source File: backend.py From lambda-packs with MIT License | 5 votes |
def cast(x, dtype): """Casts a tensor to a different dtype and returns it. You can cast a Keras variable but it still returns a Keras tensor. Arguments: x: Keras tensor (or variable). dtype: String, either (`'float16'`, `'float32'`, or `'float64'`). Returns: Keras tensor with dtype `dtype`. Example: ```python >>> from keras import backend as K >>> input = K.placeholder((2, 3), dtype='float32') >>> input <tf.Tensor 'Placeholder_2:0' shape=(2, 3) dtype=float32> # It doesn't work in-place as below. >>> K.cast(input, dtype='float16') <tf.Tensor 'Cast_1:0' shape=(2, 3) dtype=float16> >>> input <tf.Tensor 'Placeholder_2:0' shape=(2, 3) dtype=float32> # you need to assign it. >>> input = K.cast(input, dtype='float16') >>> input <tf.Tensor 'Cast_2:0' shape=(2, 3) dtype=float16> ``` """ return math_ops.cast(x, dtype) # UPDATES OPS