本文整理汇总了Python中theano.shared方法的典型用法代码示例。如果您正苦于以下问题:Python theano.shared方法的具体用法?Python theano.shared怎么用?Python theano.shared使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类theano
的用法示例。
在下文中一共展示了theano.shared方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: sgd
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def sgd(self, cost, params,constraints={}, lr=0.01):
#{{{
"""
Stochatic gradient descent.
"""
updates = []
lr = theano.shared(np.float32(lr).astype(floatX))
gradients = self.get_gradients(cost, params)
for p, g in zip(params, gradients):
v=-lr*g;
new_p=p+v;
# apply constraints
if p in constraints:
c=constraints[p];
new_p=c(new_p);
updates.append((p, new_p))
return updates
#}}}
示例2: sgdmomentum
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def sgdmomentum(self, cost, params,constraints={}, lr=0.01,consider_constant=None, momentum=0.):
"""
Stochatic gradient descent with momentum. Momentum has to be in [0, 1)
"""
# Check that the momentum is a correct value
assert 0 <= momentum < 1
lr = theano.shared(np.float32(lr).astype(floatX))
momentum = theano.shared(np.float32(momentum).astype(floatX))
gradients = self.get_gradients(cost, params)
velocities = [theano.shared(np.zeros_like(param.get_value(borrow=True)).astype(floatX)) for param in params]
updates = []
for param, gradient, velocity in zip(params, gradients, velocities):
new_velocity = momentum * velocity - lr * gradient
updates.append((velocity, new_velocity))
new_p=param+new_velocity;
# apply constraints
if param in constraints:
c=constraints[param];
new_p=c(new_p);
updates.append((param, new_p))
return updates
示例3: adagrad
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def adagrad(self, cost, params, lr=1.0, epsilon=1e-6,consider_constant=None):
"""
Adagrad. Based on http://www.ark.cs.cmu.edu/cdyer/adagrad.pdf
"""
lr = theano.shared(np.float32(lr).astype(floatX))
epsilon = theano.shared(np.float32(epsilon).astype(floatX))
gradients = self.get_gradients(cost, params,consider_constant)
gsums = [theano.shared(np.zeros_like(param.get_value(borrow=True)).astype(floatX)) for param in params]
updates = []
for param, gradient, gsum in zip(params, gradients, gsums):
new_gsum = gsum + gradient ** 2.
updates.append((gsum, new_gsum))
updates.append((param, param - lr * gradient / (T.sqrt(gsum + epsilon))))
return updates
示例4: adadelta
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def adadelta(self, cost, params, rho=0.95, epsilon=1e-6,consider_constant=None):
"""
Adadelta. Based on:
http://www.matthewzeiler.com/pubs/googleTR2012/googleTR2012.pdf
"""
rho = theano.shared(np.float32(rho).astype(floatX))
epsilon = theano.shared(np.float32(epsilon).astype(floatX))
gradients = self.get_gradients(cost, params,consider_constant)
accu_gradients = [theano.shared(np.zeros_like(param.get_value(borrow=True)).astype(floatX)) for param in params]
accu_deltas = [theano.shared(np.zeros_like(param.get_value(borrow=True)).astype(floatX)) for param in params]
updates = []
for param, gradient, accu_gradient, accu_delta in zip(params, gradients, accu_gradients, accu_deltas):
new_accu_gradient = rho * accu_gradient + (1. - rho) * gradient ** 2.
delta_x = - T.sqrt((accu_delta + epsilon) / (new_accu_gradient + epsilon)) * gradient
new_accu_delta = rho * accu_delta + (1. - rho) * delta_x ** 2.
updates.append((accu_gradient, new_accu_gradient))
updates.append((accu_delta, new_accu_delta))
updates.append((param, param + delta_x))
return updates
示例5: rmsprop
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def rmsprop(self, cost, params, lr=0.001, rho=0.9, eps=1e-6,consider_constant=None):
"""
RMSProp.
"""
lr = theano.shared(np.float32(lr).astype(floatX))
gradients = self.get_gradients(cost, params,consider_constant)
accumulators = [theano.shared(np.zeros_like(p.get_value()).astype(np.float32)) for p in params]
updates = []
for param, gradient, accumulator in zip(params, gradients, accumulators):
new_accumulator = rho * accumulator + (1 - rho) * gradient ** 2
updates.append((accumulator, new_accumulator))
new_param = param - lr * gradient / T.sqrt(new_accumulator + eps)
updates.append((param, new_param))
return updates
示例6: variable
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def variable(value, dtype=None, name=None):
'''Instantiates a variable and returns it.
# Arguments
value: Numpy array, initial value of the tensor.
dtype: Tensor type.
name: Optional name string for the tensor.
# Returns
A variable instance (with Keras metadata included).
'''
if dtype is None:
dtype = floatx()
if hasattr(value, 'tocoo'):
_assert_sparse_module()
variable = th_sparse_module.as_sparse_variable(value)
else:
value = np.asarray(value, dtype=dtype)
variable = theano.shared(value=value, name=name, strict=False)
variable._keras_shape = value.shape
variable._uses_learning_phase = False
return variable
示例7: Adam
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def Adam(cost, params, lr=0.0002, b1=0.1, b2=0.001, e=1e-8):
updates = []
grads = T.grad(cost, params)
i = theano.shared(np.array(0., theano.config.floatX))
i_t = i + 1.
fix1 = 1. - (1. - b1)**i_t
fix2 = 1. - (1. - b2)**i_t
lr_t = lr * (T.sqrt(fix2) / fix1)
for p, g in zip(params, grads):
m = theano.shared(p.get_value() * 0.)
v = theano.shared(p.get_value() * 0.)
m_t = (b1 * g) + ((1. - b1) * m)
v_t = (b2 * T.sqr(g)) + ((1. - b2) * v)
g_t = m_t / (T.sqrt(v_t) + e)
p_t = p - (lr_t * g_t)
updates.append((m, m_t))
updates.append((v, v_t))
updates.append((p, p_t))
updates.append((i, i_t))
return updates
示例8: __init__
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def __init__(self, input_width, output_width, activation_shift=0.0, name=None):
"""
Params:
input_width: Width of input.
output_width: Width of the GRU output
activation_shift: How to shift the biases of the activation
"""
self._input_width = input_width
self._output_width = output_width
prefix = "" if name is None else name + "_"
self._reset_W = theano.shared(init_params([input_width + output_width, output_width]), prefix+"reset_W")
self._reset_b = theano.shared(init_params([output_width], shift=1.0), prefix+"reset_b")
self._update_W = theano.shared(init_params([input_width + output_width, output_width+1]), prefix+"update_W")
self._update_b = theano.shared(init_params([output_width+1], shift=1.0), prefix+"update_b")
self._activation_W = theano.shared(init_params([input_width + output_width, output_width]), prefix+"activation_W")
self._activation_b = theano.shared(init_params([output_width], shift=activation_shift), prefix+"activation_b")
self._strength_W = theano.shared(init_params([input_width + output_width, 1]), prefix+"strength_W")
self._strength_b = theano.shared(init_params([1], shift=1.0), prefix+"strength_b")
示例9: __init__
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def __init__(self, input_width, output_width, activation_shift=0.0, name=None, dropout_keep=1, dropout_input=False, dropout_output=True):
"""
Params:
input_width: Width of input
output_width: Width of the GRU output
activation_shift: How to shift the biases of the activation
"""
self._input_width = input_width
self._output_width = output_width
prefix = "" if name is None else name + "_"
self._reset_W = theano.shared(init_params([input_width + output_width, output_width]), prefix+"reset_W")
self._reset_b = theano.shared(init_params([output_width], shift=1.0), prefix+"reset_b")
self._update_W = theano.shared(init_params([input_width + output_width, output_width]), prefix+"update_W")
self._update_b = theano.shared(init_params([output_width], shift=1.0), prefix+"update_b")
self._activation_W = theano.shared(init_params([input_width + output_width, output_width]), prefix+"activation_W")
self._activation_b = theano.shared(init_params([output_width], shift=activation_shift), prefix+"activation_b")
self._dropout_keep = dropout_keep
self._dropout_input = dropout_input
self._dropout_output = dropout_output
示例10: _init_params
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def _init_params(self, init_W, tie_params):
(nfilt, fc, fi, fj) = self.filter_shape
if 'W' not in tie_params:
if init_W is None:
w_shape = self.filter_shape
init_W = self.conf.geteval('init_W')(w_shape).astype(floatX)
self.W = theano.shared(value=init_W, name='W')
self.params.append(self.W)
if self.have_bias and 'b' not in tie_params:
init_b = self.conf.geteval('init_b', 0)
nb = nfilt if not self.transpose else fc
self.b = theano.shared(init_b + np.zeros(nb, dtype=floatX),
name='b')
self.params.append(self.b)
#计算网络的输出
示例11: RMSprop
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def RMSprop(cost, params, lr=0.001, rho=0.9, epsilon=1e-6, grads=None):
# From:
# https://github.com/Newmu/Theano-Tutorials/blob/master/4_modern_net.py
if grads is None:
grads = T.grad(cost=cost, wrt=params)
assert len(grads) == len(params)
updates = []
for p, g in zip(params, grads):
acc = theano.shared(np.zeros_like(p.get_value(), dtype=np.float32),
name="%s/rms/acc" % p.name)
acc_new = rho * acc + (1 - rho) * g ** 2
gradient_scaling = T.sqrt(acc_new + epsilon)
g = g / gradient_scaling
updates.append((acc, acc_new))
updates.append((p, p - lr * g))
return updates
示例12: add_param
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def add_param(self, name, shape, initializer=None, savable=True, trainable=True):
if not initializer:
initializer = self.default_initializer
if name not in self.vars:
full_name = "%s/%s" % (self.prefix, name)
if self.logger:
self.logger.Log(
"Created variable " + full_name + " shape: " + str(shape), level=self.logger.DEBUG)
init_value = initializer(shape).astype(theano.config.floatX)
self.vars[name] = theano.shared(init_value,
name=full_name)
if savable:
self.savable_vars[name] = self.vars[name]
if trainable:
self.trainable_vars[name] = self.vars[name]
return self.vars[name]
示例13: adam
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def adam(self, param, grad, updates, sample_idx=None, epsilon=1e-6):
v1 = np.float32(self.decay)
v2 = np.float32(1.0 - self.decay)
acc = theano.shared(param.get_value(borrow=False) * 0., borrow=True)
meang = theano.shared(param.get_value(borrow=False) * 0., borrow=True)
countt = theano.shared(param.get_value(borrow=False) * 0., borrow=True)
if sample_idx is None:
acc_new = v1 * acc + v2 * grad ** 2
meang_new = v1 * meang + v2 * grad
countt_new = countt + 1
updates[acc] = acc_new
updates[meang] = meang_new
updates[countt] = countt_new
else:
acc_s = acc[sample_idx]
meang_s = meang[sample_idx]
countt_s = countt[sample_idx]
acc_new = v1 * acc_s + v2 * grad ** 2
meang_new = v1 * meang_s + v2 * grad
countt_new = countt_s + 1.0
updates[acc] = T.set_subtensor(acc_s, acc_new)
updates[meang] = T.set_subtensor(meang_s, meang_new)
updates[countt] = T.set_subtensor(countt_s, countt_new)
return (meang_new / (1 - v1 ** countt_new)) / (T.sqrt(acc_new / (1 - v1 ** countt_new)) + epsilon)
示例14: adadelta
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def adadelta(self, param, grad, updates, sample_idx=None, epsilon=1e-6):
v1 = np.float32(self.decay)
v2 = np.float32(1.0 - self.decay)
acc = theano.shared(param.get_value(borrow=False) * 0., borrow=True)
upd = theano.shared(param.get_value(borrow=False) * 0., borrow=True)
if sample_idx is None:
acc_new = acc + grad ** 2
updates[acc] = acc_new
grad = T.sqrt(upd + epsilon) * grad
upd_new = v1 * upd + v2 * grad ** 2
updates[upd] = upd_new
else:
acc_s = acc[sample_idx]
acc_new = acc_s + grad ** 2
updates[acc] = T.set_subtensor(acc_s, acc_new)
upd_s = upd[sample_idx]
upd_new = v1 * upd_s + v2 * grad ** 2
updates[upd] = T.set_subtensor(upd_s, upd_new)
grad = T.sqrt(upd_s + epsilon) * grad
gradient_scaling = T.cast(T.sqrt(acc_new + epsilon), theano.config.floatX)
return grad / gradient_scaling
示例15: SGD
# 需要导入模块: import theano [as 别名]
# 或者: from theano import shared [as 别名]
def SGD(lr, params, grads, loss):
"""
Stochastic Gradient Descent w/ momentum
"""
momentum = cfg.TRAIN.MOMENTUM
w_decay = cfg.TRAIN.WEIGHT_DECAY
updates = []
for param, grad in zip(params, grads):
vel = theano.shared(param.val.get_value() * 0.)
if param.is_bias or w_decay == 0:
regularized_grad = grad
else:
regularized_grad = grad + w_decay * param.val
param_additive = momentum * vel - lr * regularized_grad
updates.append((vel, param_additive))
updates.append((param.val, param.val + param_additive))
return updates