本文整理汇总了Python中theano.tensor.clip函数的典型用法代码示例。如果您正苦于以下问题:Python clip函数的具体用法?Python clip怎么用?Python clip使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clip函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_output_for
def get_output_for(self, inputs, **kwargs):
mu_area, sigma_area, is_not_padded, slicedists = inputs
# Rescale input
mu_area = mu_area / self.rescale_input
sigma_area = sigma_area / self.rescale_input
# For each slice pair, compute if both of them are valid
is_pair_not_padded = is_not_padded[:, :-1] + is_not_padded[:, 1:] > 1.5
# Compute the distance between slices
h = slicedists[:, :-1]
# Compute mu for each slice pair
m1 = mu_area[:, :-1]
m2 = mu_area[:, 1:]
eps = 1e-2
mu_volumes = (m1 + m2 + T.sqrt(T.clip(m1*m2, eps, utils.maxfloat))) * h / 3.0
mu_volumes = mu_volumes * is_pair_not_padded
# Compute sigma for each slice pair
s1 = sigma_area[:, :-1]
s2 = sigma_area[:, 1:]
sigma_volumes = h*(s1 + s2) / 3.0
sigma_volumes = sigma_volumes * is_pair_not_padded
# Compute mu and sigma per patient
mu_volume_patient = T.sum(mu_volumes, axis=1)
sigma_volume_patient = T.sqrt(T.clip(T.sum(sigma_volumes**2, axis=1), eps, utils.maxfloat))
# Concat and return
return T.concatenate([
mu_volume_patient.dimshuffle(0, 'x'),
sigma_volume_patient.dimshuffle(0, 'x')], axis=1)
示例2: _modify_updates
def _modify_updates(self, updates):
if self.zero_hidbias:
hidbias_updated = updates[self.hidbias]
updates[self.hidbias] = tensor.clip(hidbias_updated, 0, 0)
if self.zero_visbias:
visbias_updated = updates[self.visbias]
updates[self.visbias] = tensor.clip(visbias_updated, 0, 0)
示例3: build_and_train_model
def build_and_train_model(self,n_hu,n_hl):
print('Building Model')
input_phrase = T.imatrix('train_inputmatrix')
labels = T.imatrix('trainphrase_matrix')
network = self.define_layers(input_phrase,labels,n_hu,n_hl)
print("Defining loss")
#Prediction or loss
prediction = []
prediction.append(T.clip(lasagne.layers.get_output(network[0]),1.0e-7,1.0-1.0e-7))
prediction.append(T.clip(lasagne.layers.get_output(network[1]),1.0e-7,1.0-1.0e-7))
loss = l.define_loss(prediction[0],prediction[1])
self.model = network
#define params
params = lasagne.layers.get_all_params(network)
updates = lasagne.updates.adadelta(loss,params)
#run test
train_fn = theano.function([input_phrase,labels],[loss, prediction[0], prediction[1]],updates=updates,allow_input_downcast=True)
print("Model and params defined now training")
epoch = 0
for epoch in range(self.end_epoch):
train_loss = 0
train_pred = []
start_time = time.time()
loss, predicted, phrase = train_fn(self.train_inputmatrix,self.trainphrase_matrix)
print('Training Loss: ' + str(loss) + ' Train Epoch ' + str(epoch))
self.save_best(loss,predicted,network)
示例4: gaussian_likelihood_diagonal_variance
def gaussian_likelihood_diagonal_variance(t, mu, sig, dim):
"""
Gaussian Likelihood along first dimension
Parameters
----------
t : TensorVariable
mu : FullyConnected (Linear)
sig : FullyConnected (Softplus)
dim : First dimension of the target vector t
"""
# First clip sig
sig_clip = T.clip(sig, 1e-40, 1e40)
# Since the variance matrix is diagonal, normalization term is easier to compute,
# and calculus overflow can easily be prevented by first summing by 2*pi and taking square
sig_time_2pi = T.sqrt(sig_clip * 2 * math.pi)
#######################
#######################
# This is the problem... product goes to 0
normalization_coeff = T.clip(T.prod(sig_time_2pi, axis=0), 1e-40, 1e40)
#######################
#######################
# Once again, fact that sig is diagonal allows for simplifications :
# term by term division instead of inverse matrix multiplication
exp_term = (T.exp(- 0.5 * (t-mu) * (t-mu) / sig_clip).sum(axis=0))
pdf = exp_term / normalization_coeff
return pdf
示例5: rmsprop
def rmsprop(self, lr, tparams, grads, inp_list, cost, params):
clip = params["grad_clip"]
decay_rate = tensor.constant(params["decay_rate"], dtype=theano.config.floatX)
smooth_eps = tensor.constant(params["smooth_eps"], dtype=theano.config.floatX)
zipped_grads = [theano.shared(np.zeros_like(p.get_value()), name="%s_grad" % k) for k, p in tparams.iteritems()]
running_grads2 = [
theano.shared(np.zeros_like(p.get_value()), name="%s_rgrad2" % k) for k, p in tparams.iteritems()
]
zgup = [(zg, g) for zg, g in zip(zipped_grads, grads)]
if clip > 0.0:
rg2up = [
(
rg2,
tensor.clip(decay_rate * rg2 + (1 - decay_rate) * (tensor.clip(g, -clip, clip) ** 2), 0.0, np.inf),
)
for rg2, g in zip(running_grads2, grads)
]
else:
rg2up = [
(rg2, tensor.clip(decay_rate * rg2 + (1 - decay_rate) * (g ** 2), 0.0, np.inf))
for rg2, g in zip(running_grads2, grads)
]
f_grad_shared = theano.function(inp_list, cost, updates=zgup + rg2up, name="rmsprop_f_grad_shared")
updir = [theano.shared(p.get_value() * numpy_floatX(0.0), name="%s_updir" % k) for k, p in tparams.iteritems()]
updir_new = [
(ud, -lr * zg / (tensor.sqrt(rg2) + smooth_eps)) for ud, zg, rg2 in zip(updir, zipped_grads, running_grads2)
]
param_up = [(p, p + udn[1]) for p, udn in zip(tparams.values(), updir_new)]
f_update = theano.function(
[lr], [], updates=updir_new + param_up, on_unused_input="ignore", name="rmsprop_f_update"
)
return f_grad_shared, f_update, zipped_grads, running_grads2, updir
示例6: custom_loss
def custom_loss(y_true, y_pred):
epsilon = 0.001
first_log = T.log(T.clip(y_pred, 0.001, np.inf) + 1.)
second_log = T.log(T.clip(y_true, 0.001, np.inf) + 1.)
first_sum = T.log(T.sum(T.clip(y_pred, 0.001, np.inf))+1)
second_sum = T.log(T.sum(T.clip(y_true, 0.001, np.inf))+1)
return T.mean(T.square(first_log-second_log), axis=-1) + CMC_PENALTY*T.square(first_sum-second_sum)
示例7: redo_theano
def redo_theano(self):
self.h = shared(N.zeros(self.nhid, dtype=floatX), name="h")
self.v = shared(N.zeros(self.nvis, dtype=floatX), name="v")
input_v = T.vector()
assert input_v.type.dtype == floatX
self.init_h_v = function([input_v], updates={self.h: self.predict(input_v), self.v: input_v})
coding_obj = self.coding_obj(self.v, self.h)
assert len(coding_obj.type.broadcastable) == 0
coding_grad = T.grad(coding_obj, self.h)
assert len(coding_grad.type.broadcastable) == 1
self.coding_obj_grad = function([], [coding_obj, coding_grad])
self.new_h = shared(N.zeros(self.nhid, dtype=floatX), name="new_h")
alpha = T.scalar(name="alpha")
outside_grad = T.vector(name="outside_grad")
new_h = T.clip(self.h * T.exp(-alpha * outside_grad), 1e-10, 1e4)
new_obj = self.coding_obj(self.v, new_h)
self.try_step = function([alpha, outside_grad], updates={self.new_h: new_h}, outputs=new_obj)
self.accept_h = function([], updates={self.h: self.new_h})
self.get_h = function([], self.h)
V = T.matrix(name="V")
H = T.matrix(name="H")
coding_obj_batch = self.coding_obj_batch(V, H)
self.code_learning_obj = function([V, H], coding_obj_batch)
learning_grad = T.grad(coding_obj_batch, self.W)
self.code_learning_step = function([V, H, alpha], updates={self.W: self.W - alpha * learning_grad})
pred_obj = T.mean(T.sqr(self.predict(V) - H))
predictor_params = [self.pred_W, self.pred_b, self.pred_g]
pred_grads = T.grad(pred_obj, wrt=predictor_params)
predictor_updates = {}
for param, grad in zip(predictor_params, pred_grads):
predictor_updates[param] = param - alpha * grad
predictor_updates[self.pred_g] = T.clip(
predictor_updates[self.pred_g], N.cast[floatX](0.5), N.cast[floatX](1000.0)
)
self.train_predictor = function([V, H, alpha], updates=predictor_updates)
示例8: get_constraint_updates
def get_constraint_updates(self):
constraint_updates = OrderedDict()
if self.flags['scalar_lambd']:
constraint_updates[self.lambd] = T.mean(self.lambd) * T.ones_like(self.lambd)
# constraint filters to have unit norm
if self.flags['wv_norm'] in ('unit', 'max_unit'):
wv = constraint_updates.get(self.Wv, self.Wv)
wv_norm = T.sqrt(T.sum(wv**2, axis=0))
if self.flags['wv_norm'] == 'unit':
constraint_updates[self.Wv] = wv / wv_norm
elif self.flags['wv_norm'] == 'max_unit':
constraint_updates[self.Wv] = wv / wv_norm * T.minimum(wv_norm, 1.0)
constraint_updates[self.scalar_norms] = T.maximum(1.0, self.scalar_norms)
## clip parameters to maximum values (if applicable)
for (k,v) in self.clip_max.iteritems():
assert k in [param.name for param in self.params()]
param = constraint_updates.get(k, getattr(self, k))
constraint_updates[param] = T.clip(param, param, v)
## clip parameters to minimum values (if applicable)
for (k,v) in self.clip_min.iteritems():
assert k in [param.name for param in self.params()]
param = constraint_updates.get(k, getattr(self, k))
constraint_updates[param] = T.clip(constraint_updates.get(param, param), v, param)
return constraint_updates
示例9: train
def train(self, X, evalinter=10):
'''
function to call to train this NMF GD on given matrix X
Calls trainingloop()
'''
self.initvars(X)
# define errors and cost
tErr = (1./2.) * ((self.X - T.dot(self.W, self.H))**2).sum()
tReg = (1./2.) * ((self.W**2).sum() * self.Wreg + (self.H**2).sum() * self.Hreg)
tCost = tErr + tReg
# get gradients
gW, gH = T.grad(tCost, [self.W, self.H])
# define updates and function
updW = (self.W, T.clip(self.W - self.lr * gW, 0, np.infty))
updH = (self.H, T.clip(self.H - self.lr * gH, 0, np.infty))
trainf = theano.function(
inputs=[],
outputs=[tErr],
updates=[updW, updH]
)
normf = theano.function(
inputs=[],
outputs=[],
updates=[
(self.W, (self.W.T/T.sum(self.W, axis=1)).T),
#
]
)
# train loop
err = self.trainloop(X, trainf=trainf, evalinter=evalinter)
return self.W.get_value(), self.H.get_value(), err
示例10: init_process
def init_process(model, gaussian, delta, fn_type):
print("Building model and compiling functions...")
# Prepare Theano variables for inputs and targets
import theano.tensor as T
input_var_list = [T.tensor4('inputs{}'.format(i))
for i in range(scales)]
target_var = T.imatrix('targets')
# Create network model
if model == 'jy':
print('Building JY CNN...')
network = JY_cnn(input_var_list, gaussian, delta)
learning_rate = 0.006
# elif model == 'fcrnn':
# print('Building FCRNN...')
# network = FCRNN(input_var_list, delta)
# learning_rate = 0.0005
print('defining loss function')
prediction = lasagne.layers.get_output(network)
prediction = T.clip(prediction, 1e-7, 1.0 - 1e-7)
loss = lasagne.objectives.binary_crossentropy(prediction, target_var)
loss = loss.mean()
print('defining update')
params = lasagne.layers.get_all_params(network, trainable=True)
updates = lasagne.updates.nesterov_momentum(
loss, params, learning_rate=learning_rate, momentum=0.9)
# updates = lasagne.updates.adagrad(loss, params, learning_rate=learning_rate)
print('defining testing method')
test_prediction = lasagne.layers.get_output(network, deterministic=True)
test_prediction = T.clip(test_prediction, 1e-7, 1.0 - 1e-7)
#frame prediction
layer_list = lasagne.layers.get_all_layers(network)
gauss_layer = layer_list[-3]
pre_gauss_layer = layer_list[-4] if gaussian else layer_list[-3]
gauss_pred = lasagne.layers.get_output(gauss_layer, deterministic=True)
pre_gauss_pred = lasagne.layers.get_output(pre_gauss_layer, deterministic=True)
test_loss = lasagne.objectives.binary_crossentropy(test_prediction, target_var)
test_loss = test_loss.mean()
test_pred_result = T.argmax(test_prediction, axis=1)
target_result = T.argmax(target_var, axis=1)
test_acc = T.mean(T.eq(test_pred_result, target_result),
dtype=theano.config.floatX)
if fn_type == 'train':
print('compiling training function')
func = theano.function(input_var_list + [target_var],
[loss, prediction, gauss_pred, pre_gauss_pred], updates=updates)
elif fn_type == 'val' or fn_type == 'test':
print('compiling validation and testing function')
func = theano.function(input_var_list + [target_var],
[test_loss, test_acc, test_pred_result, test_prediction, gauss_pred, pre_gauss_pred])
return func, network
示例11: lcn_std_diff
def lcn_std_diff(x,size=9):
# Function borrowed from bengioe_util
p = x.reshape((1,1,48,48))
#p = (p-TT.mean(p))/T.std(p)
g = gaussian(size,1.591/size)
g/=g.sum()
g = numpy.float32(g.reshape((1,1,size,size)))
mean = TT.nnet.conv.conv2d(p,TT.constant(g),
(1,1,48,48),
(1,1,size,size),
'full').reshape((48+size-1,)*2)
mean = mean[size/2:48+size/2,
size/2:48+size/2]
meansq = TT.nnet.conv.conv2d(TT.sqr(p),TT.constant(g),
(1,1,48,48),
(1,1,size,size),
'full').reshape((48+size-1,)*2)
meansq = meansq[size/2:48+size/2,
size/2:48+size/2]
var = meansq - TT.sqr(mean)
var = TT.clip(var, 0, 1e30)
std = TT.sqrt(var)
std = TT.clip(std, TT.mean(std), 1e30)
out = (p - mean) / std
return out - out.min()
示例12: sigmoid_readout_old
def sigmoid_readout_old(operators, v_in, h_L, g):
"""Sigmoid readout layer. Cost is the binary crossentropy and
monitor is RMSE.
:param params: list of [weight, bias] with shapes (n_hidden, n_visible)
and (n_visible, )
:param h_L: shape (timesteps, n_visible)
:return: shape (timesteps, n_hidden)
"""
weight = operators[0]
bias = operators[1]
v_pred = g(T.dot(h_L, weight) + bias) # broadcastable bias??
v_pred_c = T.clip(v_pred, 1.0e-7, 1.0 - 1.0e-7)
v_in_c = T.clip(v_in, 1.0e-7, 1.0 - 1.0e-7)
# Cost:
cost = -T.xlogx.xlogy0(v_in_c[1:], v_pred_c[:-1]) - T.xlogx.xlogy0(1 - v_in_c[1:], 1 - v_pred_c[:-1])
cost = cost.sum() / v_in.shape[0]
# Sample is just rounded to nearest integer:
v_sample = T.round(v_pred)
v_sample_c = T.clip(v_sample, 1.0e-7, 1.0 - 1.0e-7)
# Monitor (needs to return something... for now):
monitor = -T.xlogx.xlogy0(v_in_c[1:], v_sample_c[:-1]) - T.xlogx.xlogy0(1 - v_in_c[1:], 1 - v_sample_c[:-1])
monitor = monitor.sum() / v_in.shape[0]
return v_sample, cost, monitor, None
示例13: softmax_readout
def softmax_readout(operators, v_in, h_L, external):
"""Softmax readout layer. Cost is the binary crossentropy and
monitor is RMSE.
:param operators: list of [weight, bias] with shapes (n_hidden, n_visible)
and (n_visible, )
:param h_L: shape (timesteps, n_hidden)
:return: shape (timesteps, n_visible)
"""
weight = operators[0]
bias = operators[1]
v_pred = softmax(T.dot(h_L, weight) + bias) # broadcastable bias??
v_pred_c = T.clip(v_pred, 1.0e-7, 1.0 - 1.0e-7)
v_in_c = T.clip(v_in, 1.0e-7, 1.0 - 1.0e-7)
# Sampled value is just the argmax of softmax:
v_sample = rng.multinomial(pvals=v_pred, dtype=theano.config.floatX)
v_sample_c = T.clip(v_sample, eps, 1.0 - eps)
# Cost:
# cost = 1000 * ((v_pred[:-1] - v_in[1:]) ** 2).mean()
# cost = -T.xlogx.xlogy0(v_in_c[1:], v_pred_c[:-1]) - \
# T.xlogx.xlogy0(1 - v_in_c[1:], 1 - v_pred_c[:-1])
cost = crossent(v_pred_c[:-1], v_in_c[1:])
cost = cost.mean()
# Monitor:
# monitor = -T.xlogx.xlogy0(v_in_c[1:], v_sample_c[:-1]) - \
# T.xlogx.xlogy0(1 - v_in_c[1:], 1 - v_sample_c[:-1])
# TODO: changed monitor to v_pred_c!!!
monitor = crossent(v_pred_c[:-1], v_in_c[1:])
monitor = monitor.mean()
return v_sample, cost, monitor, None
示例14: sigmoid_readout
def sigmoid_readout(operators, v_in, h_L, external):
"""Sigmoid readout layer. Cost is the binary crossentropy and
monitor is RMSE.
:param operators: list of [weight, bias] with shapes (n_hidden, n_visible)
and (n_visible, )
:param h_L: shape (timesteps, n_hidden)
:return: shape (timesteps, n_visible)
"""
weight = operators[0]
bias = operators[1]
v_pred = sigmoid(T.dot(h_L, weight) + bias) # broadcastable bias??
v_pred_c = T.clip(v_pred, 1.0e-7, 1.0 - 1.0e-7)
v_in_c = T.clip(v_in, 1.0e-7, 1.0 - 1.0e-7)
# Sample is just rounded to nearest integer:
v_sample = T.round(v_pred)
v_sample_c = T.clip(v_sample, eps, 1.0 - eps)
# Cost:
# cost = 1000 * ((v_pred[:-1] - v_in[1:]) ** 2).mean()
# cost = -T.xlogx.xlogy0(v_in_c[1:], v_pred_c[:-1]) - \
# T.xlogx.xlogy0(1 - v_in_c[1:], 1 - v_pred_c[:-1])
cost = crossent(v_pred_c[:-1], v_in_c[1:]) # TODO: v_sample_c !!!
cost = cost.mean()
# Monitor:
# monitor = -T.xlogx.xlogy0(v_in_c[1:], v_sample_c[:-1]) - \
# T.xlogx.xlogy0(1 - v_in_c[1:], 1 - v_sample_c[:-1])
monitor = crossent(v_sample_c[:-1], v_in_c[1:])
monitor = monitor.mean()
return v_sample, cost, monitor, None
示例15: get_constraint_updates
def get_constraint_updates(self):
updates = OrderedDict()
## unit-variance constraint on hidden-unit activations ##
if self.flags['unit_std']:
updates[self.Wv] = self.Wv / self.avg_hact_std
## clip parameters to maximum values (if applicable)
for (k,v) in self.clip_max.iteritems():
assert k in [param.name for param in self.params()]
param = getattr(self, k)
updates[param] = T.clip(param, param, v)
## clip parameters to minimum values (if applicable)
for (k,v) in self.clip_min.iteritems():
assert k in [param.name for param in self.params()]
param = getattr(self, k)
updates[param] = T.clip(updates.get(param, param), v, param)
## constrain lambd to be a scalar
if self.flags['scalar_lambd']:
lambd = updates.get(self.lambd, self.lambd)
updates[self.lambd] = T.mean(lambd) * T.ones_like(lambd)
return updates