本文整理匯總了Python中tensorflow.compat.v1.assign_add方法的典型用法代碼示例。如果您正苦於以下問題:Python v1.assign_add方法的具體用法?Python v1.assign_add怎麽用?Python v1.assign_add使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類tensorflow.compat.v1
的用法示例。
在下文中一共展示了v1.assign_add方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: weight_noise
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def weight_noise(noise_rate, learning_rate, var_list):
"""Apply weight noise to vars in var_list."""
if not noise_rate:
return [tf.no_op()]
tf.logging.info("Applying weight noise scaled by learning rate, "
"noise_rate: %0.5f", noise_rate)
noise_ops = []
for v in var_list:
with tf.device(v.device): # pylint: disable=protected-access
scale = noise_rate * learning_rate * 0.001
if common_layers.should_generate_summaries():
tf.summary.scalar("weight_noise_scale", scale)
noise = tf.truncated_normal(v.shape) * scale
noise_op = v.assign_add(noise)
noise_ops.append(noise_op)
return noise_ops
示例2: _apply_cond
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def _apply_cond(self, apply_fn, grad, var, *args, **kwargs):
"""Apply conditionally if counter is zero."""
grad_acc = self.get_slot(var, "grad_acc")
def apply_adam(grad_acc, apply_fn, grad, var, *args, **kwargs):
total_grad = (grad_acc + grad) / tf.cast(self._n_t, grad.dtype)
adam_op = apply_fn(total_grad, var, *args, **kwargs)
with tf.control_dependencies([adam_op]):
grad_acc_to_zero_op = grad_acc.assign(
tf.zeros_like(grad_acc), use_locking=self._use_locking)
return tf.group(adam_op, grad_acc_to_zero_op)
def accumulate_gradient(grad_acc, grad):
assign_op = tf.assign_add(grad_acc, grad, use_locking=self._use_locking)
return tf.group(assign_op) # Strip return value
return tf.cond(
tf.equal(self._get_iter_variable(), 0),
lambda: apply_adam(grad_acc, apply_fn, grad, var, *args, **kwargs),
lambda: accumulate_gradient(grad_acc, grad))
示例3: _apply_cond
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def _apply_cond(self, apply_fn, grad, var, *args, **kwargs):
"""Apply conditionally if counter is zero."""
grad_acc = self.get_slot(var, "grad_acc")
def apply_adam(grad_acc, apply_fn, grad, var, *args, **kwargs):
total_grad = (grad_acc + grad) / tf.cast(self._n_t, grad.dtype)
adam_op = apply_fn(total_grad, var, *args, **kwargs)
with tf.control_dependencies([adam_op]):
grad_acc_to_zero_op = grad_acc.assign(tf.zeros_like(grad_acc),
use_locking=self._use_locking)
return tf.group(adam_op, grad_acc_to_zero_op)
def accumulate_gradient(grad_acc, grad):
assign_op = tf.assign_add(grad_acc, grad, use_locking=self._use_locking)
return tf.group(assign_op) # Strip return value
return tf.cond(
tf.equal(self._get_iter_variable(), 0),
lambda: apply_adam(grad_acc, apply_fn, grad, var, *args, **kwargs),
lambda: accumulate_gradient(grad_acc, grad))
示例4: _build_select_slate_op
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def _build_select_slate_op(self):
p_no_click = self._prob_no_click_ph
p = self._doc_affinity_scores_ph
q = self._net_outputs.q_values[0]
with tf.name_scope('select_slate'):
self._output_slate = self._select_slate_fn(self._slate_size, p_no_click,
p, q)
self._output_slate = tf.Print(
self._output_slate, [tf.constant('cp 1'), self._output_slate, p, q],
summarize=10000)
self._output_slate = tf.reshape(self._output_slate, (self._slate_size,))
self._action_counts = tf.get_variable(
'action_counts',
shape=[self._num_candidates],
initializer=tf.zeros_initializer())
output_slate = tf.reshape(self._output_slate, [-1])
output_one_hot = tf.one_hot(output_slate, self._num_candidates)
update_ops = []
for i in range(self._slate_size):
update_ops.append(tf.assign_add(self._action_counts, output_one_hot[i]))
self._select_action_update_op = tf.group(*update_ops)
示例5: _make_take_sample
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def _make_take_sample(self):
assignments = []
n = tf.cast(self._num_samples, tf.float32)
mu = 1.0 / (1.0 + n)
for tensor, average in zip(self._tensors, self._averages):
assignments.append(tf.assign_add(average, (tensor-average)*mu))
add_to_averages = tf.group(assignments)
with tf.control_dependencies([add_to_averages]):
incr_num_samples = tf.assign(self._num_samples, self._num_samples + 1)
return incr_num_samples
示例6: _reset_non_empty
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def _reset_non_empty(self, indices):
"""Reset the batch of environments.
Args:
indices: The batch indices of the environments to reset; defaults to all.
Returns:
Batch tensor of the new observations.
"""
reset_video_op = tf.cond(
self._video_condition,
lambda: tf.py_func(self._video_reset_writer, [], []),
tf.no_op)
with tf.control_dependencies([reset_video_op]):
inc_op = tf.assign_add(self._episode_counter, 1)
with tf.control_dependencies([self.history_buffer.reset(indices),
inc_op]):
initial_frame_dump_op = tf.cond(
self._video_condition,
lambda: tf.py_func(self._video_dump_frames, # pylint: disable=g-long-lambda
[self.history_buffer.get_all_elements()], []),
tf.no_op)
observ_assign_op = self._observ.assign(
self.history_buffer.get_all_elements()[:, -1, ...])
with tf.control_dependencies([observ_assign_op, initial_frame_dump_op]):
reset_model_op = tf.assign(self._reset_model, tf.constant(1.0))
with tf.control_dependencies([reset_model_op]):
return tf.gather(self._observ.read_value(), indices)
示例7: apply_gradients
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def apply_gradients(self, grads_and_vars, global_step=None, name=None):
if contrib.is_tf2:
with tf.control_dependencies(
[tf.assign_add(tf.train.get_or_create_global_step(), 1)]):
return self._opt.apply_gradients(grads_and_vars, name=name)
else:
return self._opt.apply_gradients(
grads_and_vars, global_step=global_step, name=name)
示例8: testDiet
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def testDiet(self):
params = diet.diet_adam_optimizer_params()
@diet.fn_with_diet_vars(params)
def model_fn(x):
y = tf.layers.dense(x, 10, use_bias=False)
return y
@diet.fn_with_diet_vars(params)
def model_fn2(x):
y = tf.layers.dense(x, 10, use_bias=False)
return y
x = tf.random_uniform((10, 10))
y = model_fn(x) + 10.
y = model_fn2(y) + 10.
grads = tf.gradients(y, [x])
with tf.control_dependencies(grads):
incr_step = tf.assign_add(tf.train.get_or_create_global_step(), 1)
train_op = tf.group(incr_step, *grads)
with self.test_session() as sess:
sess.run(tf.global_variables_initializer())
orig_vals = sess.run(tf.global_variables())
for _ in range(10):
sess.run(train_op)
new_vals = sess.run(tf.global_variables())
different = []
for old, new in zip(orig_vals, new_vals):
try:
self.assertAllClose(old, new)
except AssertionError:
different.append(True)
self.assertEqual(len(different), len(tf.global_variables()))
示例9: call_fake_controller
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def call_fake_controller(push_values, pop_values, write_values, output_values):
"""Mock a RNN controller from a set of expected outputs.
Args:
push_values: Expected controller push values.
pop_values: Expected controller pop values.
write_values: Expected controller write values.
output_values: Expected controller output values.
Returns:
A callable which behaves like the call method of an NeuralStackCell.
"""
def call(cell, inputs, prev_read_values, controller_state, batch_size):
del inputs
del prev_read_values
del batch_size
next_step = tf.constant(0)
if hasattr(cell, "current_step"):
next_step = tf.assign_add(cell.current_step, tf.constant(1))
return neural_stack.NeuralStackControllerInterface(
push_strengths=tf.slice(tf.constant(push_values),
[next_step, 0, 0, 0],
[1, -1, -1, -1]),
pop_strengths=tf.slice(tf.constant(pop_values),
[next_step, 0, 0, 0],
[1, -1, -1, -1]),
write_values=tf.slice(tf.constant(write_values),
[next_step, 0, 0],
[1, -1, -1]),
outputs=tf.slice(tf.constant(output_values),
[next_step, 0, 0],
[1, -1, -1]),
state=controller_state
)
return call
示例10: __init__
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def __init__(self, train_time, time_limit=None):
super(TrainTimeHook, self).__init__()
self._train_time = train_time
self._time_limit = time_limit
self._increment_amount = tf.placeholder(tf.float32, None)
self._increment_op = tf.assign_add(train_time, self._increment_amount)
self._last_run_duration = None
示例11: metric_sum
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def metric_sum(values, name=None, **kwargs):
del kwargs
with tf.variable_scope(name, "metric_sum", [values]):
accum = tf.get_variable(
"accum", shape=[], dtype=tf.float32, trainable=False,
collections=[tf.GraphKeys.LOCAL_VARIABLES],
initializer=tf.zeros_initializer())
update_op = tf.assign_add(accum, tf.reduce_sum(tf.cast(values, tf.float32)))
return accum, update_op
示例12: __init__
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def __init__(self,
update_batchnorm_params=True):
self.update_batchnorm_params = update_batchnorm_params
num_samples = datasets.get_count(FLAGS.train_split)
if FLAGS.num_supervised_examples:
num_samples = FLAGS.num_supervised_examples
steps_per_epoch = num_samples // FLAGS.batch_size
self.steps_per_epoch = steps_per_epoch
global_step = tf.train.get_or_create_global_step()
self.global_step_inc = tf.assign_add(global_step, 1)
# lr_scale_batch_size defines a canonical batch size that is coupled with
# the initial learning rate. If actual batch size is not the same as
# canonical than learning rate is linearly scaled. This is very convinient
# as this allows to vary batch size without recomputing learning rate.
lr_factor = 1.0
if FLAGS.lr_scale_batch_size:
lr_factor = FLAGS.batch_size / float(FLAGS.lr_scale_batch_size)
# We actually also accept fractional epochs.
schedule_in_steps = utils.get_schedule_from_config(
FLAGS.schedule, steps_per_epoch)
warmup, decays = schedule_in_steps[0], schedule_in_steps[1:-1]
self.lr = get_lr(
global_step,
base_lr=FLAGS.lr * lr_factor,
decay_steps=decays,
lr_decay_factor=FLAGS.lr_decay_factor,
warmup_steps=warmup)
# TODO(marvinritter): Re-enable summaries with support for TPU training.
# tf.summary.scalar('learning_rate', self.lr)
示例13: testPeriodicTargetUpdate
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def testPeriodicTargetUpdate(self, use_locking, update_period):
"""Tests that the simple success case works as expected.
This is an integration test. The periodically and update parts are
unit-tested in the preceding.
Args:
use_locking: value for `periodic_target_update`'s `use_locking` argument.
update_period: how often an update should happen.
"""
target_variables = [tf.Variable(tf.zeros([1, 2]))]
source_variables = [tf.Variable(tf.random_normal([1, 2]))]
increment = tf.ones([1, 2])
update_source_op = tf.assign_add(source_variables[0], increment)
updated = target_update_ops.periodic_target_update(
target_variables,
source_variables,
update_period=update_period,
use_locking=use_locking)
with self.test_session() as sess:
sess.run(tf.global_variables_initializer())
for step in range(3 * update_period):
sess.run(update_source_op)
sess.run(updated)
targets, sources = sess.run([target_variables, source_variables])
if step % update_period == 0:
self.assertAllClose(targets, sources)
else:
self.assertNotAllClose(targets, sources)
示例14: apply_gradients
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def apply_gradients(self, grads_and_vars, global_step=None, name=None):
"""Applying gradients and tune hyperparams with YellowFin.
Args:
grads_and_vars: List of (gradient, variable) pairs as returned by
compute_gradients().
global_step: Optional Variable to increment by one after the
variables have been updated.
name: Optional name for the returned operation. Default to the
name passed to the Optimizer constructor.
Returns:
(A group of operations)
Variable Update with Momentum ops,
YellowFin ops(Curvature, Variance, Distance) ops,
SingleStep and lr_mu tuning ops,
Step increment ops.
"""
self._grad, self._vars = zip(*[(g, t)
for g, t in grads_and_vars if g is not None])
# Var update with Momentum.
with tf.variable_scope("apply_updates"):
# Gradient Clipping?
if self._clip_thresh_var is not None:
self._grad, _ = tf.clip_by_global_norm(
self._grad, self._clip_thresh_var)
apply_grad_op = self._momentum_optimizer.apply_gradients(
zip(self._grad, self._vars),
global_step=global_step,
name=name)
else:
apply_grad_op = self._momentum_optimizer.apply_gradients(
zip(self._grad, self._vars),
global_step=global_step,
name=name)
# Begin lr and mu tuning.
with tf.variable_scope("prepare_yellowFin_variables"):
# the dependencies ideally only need to be after clip is done,
# i.e. depends on self._grads. However, the control_dependencies
# does not support indexed slice for sparse gradients.
# The alternative dependencies here might be slightly slower due
# to less parallelization.
with tf.control_dependencies([apply_grad_op,]):
prepare_variables_op = self._prepare_variables()
with tf.variable_scope("yellowfin"):
with tf.control_dependencies([prepare_variables_op]):
yellowfin_op = self._yellowfin()
# Update YellowFin step variable.
with tf.control_dependencies([yellowfin_op]):
self._increment_step_op = tf.assign_add(self._step, 1).op
return tf.group(apply_grad_op,
prepare_variables_op,
yellowfin_op,
self._increment_step_op)
示例15: testEarlyStoppingHook
# 需要導入模塊: from tensorflow.compat import v1 [as 別名]
# 或者: from tensorflow.compat.v1 import assign_add [as 別名]
def testEarlyStoppingHook(self):
global_step = tf.train.create_global_step()
counter = tf.get_variable("count", initializer=0, dtype=tf.int32)
tf.summary.scalar("count", counter)
incr_global_step = tf.assign_add(global_step, 1)
incr_counter = tf.assign_add(counter, 1)
# Stop if the global step has not gone up by more than 1 in 20 steps.
ckpt_dir = self.ckpt_dir("early")
stop_hook = metrics_hook.EarlyStoppingHook(
ckpt_dir,
"count_1",
num_plateau_steps=20,
plateau_delta=1.,
plateau_decrease=False,
every_n_steps=10)
with self.sess(stop_hook, ckpt_dir) as sess:
for _ in range(20):
sess.run((incr_global_step, incr_counter))
# Summary files should now have 2 values in them
self.flush()
# Run for more steps so that the hook gets triggered and we verify that we
# don't stop.
for _ in range(30):
sess.run((incr_global_step, incr_counter))
self.flush()
# Run without incrementing the counter
for _ in range(40):
sess.run(incr_global_step)
# Metrics should be written such that now the counter has gone >20 steps
# without being incremented.
self.flush()
# Check that we ask for stop
with self.assertRaisesRegexp(RuntimeError, "after should_stop requested"):
for _ in range(30):
sess.run(incr_global_step)