本文整理汇总了Python中tensorflow.gradients方法的典型用法代码示例。如果您正苦于以下问题:Python tensorflow.gradients方法的具体用法?Python tensorflow.gradients怎么用?Python tensorflow.gradients使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tensorflow
的用法示例。
在下文中一共展示了tensorflow.gradients方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_adam
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def test_adam(self):
with self.test_session() as sess:
w = tf.get_variable(
"w",
shape=[3],
initializer=tf.constant_initializer([0.1, -0.2, -0.1]))
x = tf.constant([0.4, 0.2, -0.5])
loss = tf.reduce_mean(tf.square(x - w))
tvars = tf.trainable_variables()
grads = tf.gradients(loss, tvars)
global_step = tf.train.get_or_create_global_step()
optimizer = optimization.AdamWeightDecayOptimizer(learning_rate=0.2)
train_op = optimizer.apply_gradients(zip(grads, tvars), global_step)
init_op = tf.group(tf.global_variables_initializer(),
tf.local_variables_initializer())
sess.run(init_op)
for _ in range(100):
sess.run(train_op)
w_np = sess.run(w)
self.assertAllClose(w_np.flat, [0.4, 0.2, -0.5], rtol=1e-2, atol=1e-2)
示例2: test_generate_np_caches_graph_computation_for_eps_clip_or_xi
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def test_generate_np_caches_graph_computation_for_eps_clip_or_xi(self):
x_val = np.random.rand(1, 2)
x_val = np.array(x_val, dtype=np.float32)
self.attack.generate_np(x_val, eps=.3, num_iterations=10,
clip_max=-5.0, clip_min=-5.0,
xi=1e-6)
old_grads = tf.gradients
def fn(*x, **y):
raise RuntimeError()
tf.gradients = fn
self.attack.generate_np(x_val, eps=.2, num_iterations=10,
clip_max=-4.0, clip_min=-4.0,
xi=1e-5)
tf.gradients = old_grads
示例3: test_fgm_gradient_max
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def test_fgm_gradient_max(self):
input_dim = 2
num_classes = 3
batch_size = 4
rng = np.random.RandomState([2017, 8, 23])
x = tf.placeholder(tf.float32, [batch_size, input_dim])
weights = tf.placeholder(tf.float32, [input_dim, num_classes])
logits = tf.matmul(x, weights)
probs = tf.nn.softmax(logits)
adv_x = fgm(x, probs)
random_example = rng.randint(batch_size)
random_feature = rng.randint(input_dim)
output = tf.slice(adv_x, [random_example, random_feature], [1, 1])
dx, = tf.gradients(output, x)
# The following line catches GitHub issue #243
self.assertIsNotNone(dx)
dx = self.sess.run(dx, feed_dict=random_feed_dict(rng, [x, weights]))
ground_truth = np.zeros((batch_size, input_dim))
ground_truth[random_example, random_feature] = 1.
self.assertClose(dx, ground_truth)
示例4: jacobian_graph
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def jacobian_graph(predictions, x, nb_classes):
"""
Create the Jacobian graph to be ran later in a TF session
:param predictions: the model's symbolic output (linear output,
pre-softmax)
:param x: the input placeholder
:param nb_classes: the number of classes the model has
:return:
"""
# This function will return a list of TF gradients
list_derivatives = []
# Define the TF graph elements to compute our derivatives for each class
for class_ind in xrange(nb_classes):
derivatives, = tf.gradients(predictions[:, class_ind], x)
list_derivatives.append(derivatives)
return list_derivatives
示例5: _compute_gradients
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def _compute_gradients(self, loss_fn, x, unused_optim_state):
"""Compute a new value of `x` to minimize `loss_fn`.
Args:
loss_fn: a callable that takes `x`, a batch of images, and returns
a batch of loss values. `x` will be optimized to minimize
`loss_fn(x)`.
x: A list of Tensors, the values to be updated. This is analogous
to the `var_list` argument in standard TF Optimizer.
unused_optim_state: A (possibly nested) dict, containing any state
info needed for the optimizer.
Returns:
new_x: A list of Tensors, the same length as `x`, which are updated
new_optim_state: A dict, with the same structure as `optim_state`,
which have been updated.
"""
# Assumes `x` is a list,
# and contains a tensor representing a batch of images
assert len(x) == 1 and isinstance(x, list), \
'x should be a list and contain only one image tensor'
x = x[0]
loss = reduce_mean(loss_fn(x), axis=0)
return tf.gradients(loss, x)
示例6: test_clip_eta_goldilocks
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def test_clip_eta_goldilocks(self):
# Test that the clipping handles perturbations that are
# too small, just right, and too big correctly
eta = tf.constant([[2.], [3.], [4.]])
assert eta.dtype == tf.float32, eta.dtype
eps = 3.
for ord_arg in [np.inf, 1, 2]:
for sign in [-1., 1.]:
clipped = clip_eta(eta * sign, ord_arg, eps)
clipped_value = self.sess.run(clipped)
gold = sign * np.array([[2.], [3.], [3.]])
self.assertClose(clipped_value, gold)
grad, = tf.gradients(clipped, eta)
grad_value = self.sess.run(grad)
# Note: the second 1. is debatable (the left-sided derivative
# and the right-sided derivative do not match, so formally
# the derivative is not defined). This test makes sure that
# we at least handle this oddity consistently across all the
# argument values we test
gold = sign * np.array([[1.], [1.], [0.]])
assert np.allclose(grad_value, gold)
示例7: _add_train_op
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def _add_train_op(self):
"""Sets self._train_op, op to run for training."""
hps = self._hps
self._lr_rate = tf.maximum(
hps.min_lr, # min_lr_rate.
tf.train.exponential_decay(hps.lr, self.global_step, 30000, 0.98))
tvars = tf.trainable_variables()
with tf.device(self._get_gpu(self._num_gpus-1)):
grads, global_norm = tf.clip_by_global_norm(
tf.gradients(self._loss, tvars), hps.max_grad_norm)
tf.summary.scalar('global_norm', global_norm)
optimizer = tf.train.GradientDescentOptimizer(self._lr_rate)
tf.summary.scalar('learning rate', self._lr_rate)
self._train_op = optimizer.apply_gradients(
zip(grads, tvars), global_step=self.global_step, name='train_step')
示例8: _build_train_op
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def _build_train_op(self):
"""Build training specific ops for the graph."""
self.lrn_rate = tf.constant(self.hps.lrn_rate, tf.float32)
tf.summary.scalar('learning_rate', self.lrn_rate)
trainable_variables = tf.trainable_variables()
grads = tf.gradients(self.cost, trainable_variables)
if self.hps.optimizer == 'sgd':
optimizer = tf.train.GradientDescentOptimizer(self.lrn_rate)
elif self.hps.optimizer == 'mom':
optimizer = tf.train.MomentumOptimizer(self.lrn_rate, 0.9)
apply_op = optimizer.apply_gradients(
zip(grads, trainable_variables),
global_step=self.global_step, name='train_step')
train_ops = [apply_op] + self._extra_train_ops
self.train_op = tf.group(*train_ops)
# TODO(xpan): Consider batch_norm in contrib/layers/python/layers/layers.py
示例9: connectivity
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def connectivity(logits, target, embedding, embedding_matrix, offset):
logits_correct = select_dim_value(logits, target)
# Compute partial gradient with respect to the embedding
partial_gradient = tf.gradients(
logits_correct[0, offset[0]],
embedding
)[0][0, ...]
# Finailize the chain rule and compute the gradient with respect
# to the one-hot-encoding of the source. Note that the
# one-hot-encoding is not part of the graph, which is why the
# gradient can't be computed directly this way.
full_gradient = tf.matmul(partial_gradient,
tf.transpose(embedding_matrix))
connectivity = tf.reduce_sum(full_gradient ** 2, axis=1)
return tf.reshape(connectivity, [1, -1])
示例10: _add_train_op
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def _add_train_op(self):
# In regression, the objective loss is Mean Squared Error (MSE).
self.loss = tf.losses.mean_squared_error(labels = self._y, predictions = self.output)
tvars = tf.trainable_variables()
gradients = tf.gradients(self.loss, tvars, aggregation_method=tf.AggregationMethod.EXPERIMENTAL_TREE)
# Clip the gradients
with tf.device("/gpu:{}".format(self._hps.dqn_gpu_num)):
grads, global_norm = tf.clip_by_global_norm(gradients, self._hps.max_grad_norm)
# Add a summary
tf.summary.scalar('global_norm', global_norm)
# Apply adagrad optimizer
optimizer = tf.train.AdamOptimizer(self._hps.lr)
with tf.device("/gpu:{}".format(self._hps.dqn_gpu_num)):
self.train_op = optimizer.apply_gradients(zip(grads, tvars), global_step=self.global_step, name='train_step')
self.variable_summaries('dqn_loss',self.loss)
示例11: __init__
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def __init__(self, state_size, action_size, lr,
name, n_h1=400, n_h2=300, global_name='global'):
self.state_size = state_size
self.action_size = action_size
self.name = name
self.n_h1 = n_h1
self.n_h2 = n_h2
self.optimizer = tf.train.AdamOptimizer(lr)
self.input_s, self.input_a, self.advantage, self.target_v, self.policy, self.value, self.action_est, self.model_variables = self._build_network(
name)
# 0.5, 0.2, 1.0
self.value_loss = 0.5 * tf.reduce_sum(tf.square(self.target_v - tf.reshape(self.value, [-1])))
self.entropy_loss = 1.0 * tf.reduce_sum(self.policy * tf.log(self.policy))
self.policy_loss = 1.0 * tf.reduce_sum(-tf.log(self.action_est) * self.advantage)
self.l2_loss = tf.add_n([tf.nn.l2_loss(v) for v in self.model_variables])
# self.loss = 0.5 * self.value_loss + self.policy_loss + 0.2 * self.entropy_loss
self.loss = self.value_loss + self.policy_loss + self.entropy_loss
self.gradients = tf.gradients(self.loss, self.model_variables)
if name != global_name:
self.var_norms = tf.global_norm(self.model_variables)
global_variables = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, global_name)
self.apply_gradients = self.optimizer.apply_gradients(zip(self.gradients, global_variables))
示例12: __init__
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def __init__(self, state_size, action_size, lr, n_h1=400, n_h2=300, tau=0.001):
self.state_size = state_size
self.action_size = action_size
self.optimizer = tf.train.AdamOptimizer(lr)
self.tau = tau
self.n_h1 = n_h1
self.n_h2 = n_h2
self.input_s, self.action, self.critic_variables, self.q_value = self._build_network("critic")
self.input_s_target, self.action_target, self.critic_variables_target, self.q_value_target = self._build_network("critic_target")
self.target = tf.placeholder(tf.float32, [None])
self.l2_loss = tf.add_n([tf.nn.l2_loss(v) for v in self.critic_variables])
self.loss = tf.reduce_mean(tf.square(self.target - self.q_value)) + 0.01*self.l2_loss
self.optimize = self.optimizer.minimize(self.loss)
self.update_target_op = [self.critic_variables_target[i].assign(tf.multiply(self.critic_variables[i], self.tau) + tf.multiply(self.critic_variables_target[i], 1 - self.tau)) for i in range(len(self.critic_variables))]
self.action_gradients = tf.gradients(self.q_value, self.action)
示例13: __init__
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def __init__(self, state_size, action_size, lr, n_h1=400, n_h2=300, tau=0.001):
self.state_size = state_size
self.action_size = action_size
self.optimizer = tf.train.AdamOptimizer(lr)
self.tau = tau
self.n_h1 = n_h1
self.n_h2 = n_h2
self.input_s, self.actor_variables, self.action_values = self._build_network("actor")
self.input_s_target, self.actor_variables_target, self.action_values_target = self._build_network("actor_target")
self.action_gradients = tf.placeholder(tf.float32, [None, self.action_size])
self.actor_gradients = tf.gradients(self.action_values, self.actor_variables, -self.action_gradients)
self.update_target_op = [self.actor_variables_target[i].assign(tf.multiply(self.actor_variables[i], self.tau) + tf.multiply(self.actor_variables_target[i], 1 - self.tau))
for i in range(len(self.actor_variables))]
self.optimize = self.optimizer.apply_gradients(zip(self.actor_gradients, self.actor_variables))
示例14: build_train_op
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def build_train_op(self, loss):
if self.optim == 'adam':
print 'Adam optimizer'
v_dict = self.get_variables_by_name([""], True)
var_list1 = [i for i in v_dict[""] if 'vis_enc' not in i.name]
var_list2 = self.get_variables_by_name(["vis_enc"], True)
var_list2 = var_list2["vis_enc"]
opt1 = tf.train.AdamOptimizer(self.lr, name="Adam")
opt2 = tf.train.AdamOptimizer(self.lr*0.1, name="Adam_vis_enc")
grads = tf.gradients(loss, var_list1 + var_list2)
grads1 = grads[:len(var_list1)]
grads2 = grads[len(var_list1):]
train_op1 = opt1.apply_gradients(zip(grads1, var_list1))
train_op2 = opt2.apply_gradients(zip(grads2, var_list2))
train_op = tf.group(train_op1, train_op2)
else:
print 'SGD optimizer'
tvars = tf.trainable_variables()
optimizer = tf.train.GradientDescentOptimizer(self._lr)
grads = tf.gradients(cost, tvars)
train_op = optimizer.apply_gradients(zip(grads, tvars))
return train_op
示例15: adem
# 需要导入模块: import tensorflow [as 别名]
# 或者: from tensorflow import gradients [as 别名]
def adem(context_vector, model_response_vector, reference_response_vector,
context_dim, model_response_dim, reference_response_dim,
human_score_place, lr, max_grad_norm):
model_score, M, N = tf_dynamic_adem_score(
context=context_vector,
model_response=model_response_vector,
reference_response=reference_response_vector,
shape_info={'batch_size': None,
'ct_dim': context_dim,
'mr_dim': model_response_dim,
'rr_dim': reference_response_dim})
loss = compute_adem_l1_loss(human_score_place, model_score, M, N)
tvars = tf.trainable_variables()
grads, _ = tf.clip_by_global_norm(
tf.gradients(loss, tvars), max_grad_norm)
optimizer = tf.train.AdamOptimizer(lr)
train_op = optimizer.apply_gradients(
zip(grads, tvars),
global_step=tf.contrib.framework.get_or_create_global_step()
)
return train_op, loss, model_score