本文整理汇总了Python中theano.tensor.cast函数的典型用法代码示例。如果您正苦于以下问题:Python cast函数的具体用法?Python cast怎么用?Python cast使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cast函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: load_data
def load_data(random_state=1066, n=1000, max_phrase_length=100):
data = utils.load_data(random_state=random_state,
n=n,
max_phrase_length=max_phrase_length)
X_train, y_train = data[0]
X_valid, y_valid = data[1]
X_test, y_test = data[2]
X_train = X_train.reshape((-1, max_phrase_length, 67)).transpose(0, 2, 1)
X_valid = X_valid.reshape((-1, max_phrase_length, 67)).transpose(0, 2, 1)
X_test = X_test.reshape((-1, max_phrase_length, 67)).transpose(0, 2, 1)
# Robert: what about reshaping this data for 1D convs?
# hstack() instead of hstack() in when creatign X in utils?
return dict(
X_train=theano.shared(lasagne.utils.floatX(X_train)),
y_train=T.cast(theano.shared(y_train), 'int32'),
X_valid=theano.shared(lasagne.utils.floatX(X_valid)),
y_valid=T.cast(theano.shared(y_valid), 'int32'),
X_test=theano.shared(lasagne.utils.floatX(X_test)),
y_test=T.cast(theano.shared(y_test), 'int32'),
num_examples_train=X_train.shape[0],
num_examples_valid=X_valid.shape[0],
num_examples_test=X_test.shape[0],
#input_height=X_train.shape[2], # what's the equivalent in our vectors?
#input_width=X_train.shape[3],
output_dim=5, # since five sentiment class
)
开发者ID:lizhangzhan,项目名称:ConvSentAnalysis,代码行数:30,代码来源:main.py
示例2: _transform_affine
def _transform_affine(theta, input, downsample_factor):
num_batch, num_channels, height, width = input.shape
theta = T.reshape(theta, (-1, 2, 3))
# grid of (x_t, y_t, 1), eq (1) in ref [1]
out_height = T.cast(height / downsample_factor[0], 'int64')
out_width = T.cast(width / downsample_factor[1], 'int64')
grid = _meshgrid(out_height, out_width)
# Transform A x (x_t, y_t, 1)^T -> (x_s, y_s)
T_g = T.dot(theta, grid)
x_s = T_g[:, 0]
y_s = T_g[:, 1]
x_s_flat = x_s.flatten()
y_s_flat = y_s.flatten()
# dimshuffle input to (bs, height, width, channels)
input_dim = input.dimshuffle(0, 2, 3, 1)
input_transformed = _interpolate(
input_dim, x_s_flat, y_s_flat,
out_height, out_width)
output = T.reshape(
input_transformed, (num_batch, out_height, out_width, num_channels))
output = output.dimshuffle(0, 3, 1, 2) # dimshuffle to conv format
return output
开发者ID:AdityoSanjaya,项目名称:Lasagne,代码行数:26,代码来源:special.py
示例3: load_data
def load_data(self):
data = self._load_data()
X_train, y_train = data[0]
X_valid, y_valid = data[1]
X_test, y_test = data[2]
# reshape for convolutions
X_train = X_train.reshape((X_train.shape[0], 1, 28, 28))
X_valid = X_valid.reshape((X_valid.shape[0], 1, 28, 28))
X_test = X_test.reshape((X_test.shape[0], 1, 28, 28))
return dict(
X_train=theano.shared(lasagne.utils.floatX(X_train)),
y_train=T.cast(theano.shared(y_train), 'int32'),
X_valid=theano.shared(lasagne.utils.floatX(X_valid)),
y_valid=T.cast(theano.shared(y_valid), 'int32'),
valid_set = X_valid,
y_valid_raw = y_valid,
X_test=theano.shared(lasagne.utils.floatX(X_test)),
y_test=T.cast(theano.shared(y_test), 'int32'),
num_examples_train=X_train.shape[0],
num_examples_valid=X_valid.shape[0],
num_examples_test=X_test.shape[0],
input_height=X_train.shape[2],
input_width=X_train.shape[3],
input_dim=[X_train.shape[2],X_train.shape[3]],
output_dim=10,
)
开发者ID:ssfg,项目名称:nnvis,代码行数:28,代码来源:mnist_conv.py
示例4: binarization
def binarization(W,H,binary=True,deterministic=False,stochastic=False,srng=None):
# (deterministic == True) <-> test-time <-> inference-time
if not binary or (deterministic and stochastic):
# print("not binary")
Wb = W
else:
# [-1,1] -> [0,1]
Wb = hard_sigmoid(W/H)
# Wb = T.clip(W/H,-1,1)
# Stochastic BinaryConnect
if stochastic:
# print("stoch")
Wb = T.cast(srng.binomial(n=1, p=Wb, size=T.shape(Wb)), theano.config.floatX)
# Deterministic BinaryConnect (round to nearest)
else:
# print("det")
Wb = T.round(Wb)
# 0 or 1 -> -1 or 1
Wb = T.cast(T.switch(Wb,H,-H), theano.config.floatX)
return Wb
开发者ID:TianweiXing,项目名称:BNN,代码行数:28,代码来源:binary_net.py
示例5: get_monitoring_channels
def get_monitoring_channels(self, model, X, Y = None):
rval = OrderedDict()
history = model.mf(X, return_history = True)
q = history[-1]
if self.supervised:
assert Y is not None
Y_hat = q[-1]
true = T.argmax(Y,axis=1)
pred = T.argmax(Y_hat, axis=1)
#true = Print('true')(true)
#pred = Print('pred')(pred)
wrong = T.neq(true, pred)
err = T.cast(wrong.mean(), X.dtype)
rval['misclass'] = err
if len(model.hidden_layers) > 1:
q = model.mf(X, Y = Y)
pen = model.hidden_layers[-2].upward_state(q[-2])
Y_recons = model.hidden_layers[-1].mf_update(state_below = pen)
pred = T.argmax(Y_recons, axis=1)
wrong = T.neq(true, pred)
rval['recons_misclass'] = T.cast(wrong.mean(), X.dtype)
return rval
开发者ID:dnouri,项目名称:pylearn2,代码行数:30,代码来源:dbm.py
示例6: get_cost_grads_updates
def get_cost_grads_updates(self, x):
ha, h = self.network.propup(x, noisestd=self.train_hypers['noise_std'])
q = 0.9*self.q + 0.1*h.mean(axis=0)
### get correlation matrix for examples
# C = T.dot(x.T, h) / x.shape[0]
x_std = x.std(axis=0)
h_std = h.std(axis=0)
xz = (x - x.mean(0)) / (x.std(0) + 1e-2)
hz = (h - h.mean(0)) / (h.std(0) + 1e-2)
# C = T.dot(xz.T, hz) / x.shape[0]
C = T.dot(xz.T, hz)
lamb = T.cast(self.train_hypers['lamb'], self.dtype)
rho = T.cast(self.train_hypers['rho'], self.dtype)
# cost = (C**2).sum() + lamb*(T.abs_(q - rho)).sum()
# cost = (C**2).sum() / x.shape[0]**2 + lamb*(T.abs_(q - rho)).sum()
cost = (C**2).sum() / x.shape[0]**2 + lamb*((q - rho)**2).sum()
# lamb = T.cast(self.train_hypers['lamb'], self.dtype)
# rho = T.cast(self.train_hypers['rho'], self.dtype)
# cost = ((x - y)**2).mean(axis=0).sum() + lamb*(T.abs_(q - rho)).sum()
updates = {self.q: q}
return cost, self.grads(cost), updates
开发者ID:hunse,项目名称:deepnet,代码行数:26,代码来源:decorrelate_trainer.py
示例7: compute_hard_windows
def compute_hard_windows(self, image_shape, location, scale):
# find topleft(front) and bottomright(back) corners for each patch
a = location - 0.5 * (T.cast(self.patch_shape, theano.config.floatX) / scale)
b = location + 0.5 * (T.cast(self.patch_shape, theano.config.floatX) / scale)
# grow by three patch pixels
a -= self.kernel.k_sigma_radius(self.cutoff, scale)
b += self.kernel.k_sigma_radius(self.cutoff, scale)
# clip to fit inside image and have nonempty window
a = T.clip(a, 0, image_shape - 1)
b = T.clip(b, a + 1, image_shape)
if self.batched_window:
# take the bounding box of all windows; now the slices
# will have the same length for each sample and scan can
# be avoided. comes at the cost of typically selecting
# more of the input.
a = a.min(axis=0, keepdims=True)
b = b.max(axis=0, keepdims=True)
# make integer
a = T.cast(T.floor(a), 'int16')
b = T.cast(T.ceil(b), 'int16')
return a, b
开发者ID:mohammadpz,项目名称:rna,代码行数:26,代码来源:crop.py
示例8: resample_step
def resample_step(self):
idx=self.theano_rng.multinomial(pvals=T.reshape(self.weights_now,(1,self.npcl))).T
s_samp=T.sum(self.s_now*T.addbroadcast(idx,1),axis=0)
h_samp=T.sum(self.h_now*T.addbroadcast(idx,1),axis=0)
return T.cast(s_samp,'float32'), T.cast(h_samp,'float32')
开发者ID:float650,项目名称:Action-Perception,代码行数:7,代码来源:SCLmodel.py
示例9: get_monitoring_channels
def get_monitoring_channels(self, model, data, **kwargs):
rval = OrderedDict()
space, sources = self.get_data_specs(model)
X_data, X_condition = data
m = X_data.shape[space.get_batch_axis()]
G, D = model.generator, model.discriminator
# Compute false negatives w/ empirical samples
y_hat = D.fprop((X_data, X_condition))
rval["false_negatives"] = T.cast((y_hat < 0.5).mean(), "float32")
# Compute false positives w/ generated sample
G_conditional_data = self.condition_distribution.sample(m)
samples = G.sample(G_conditional_data)
y_hat = D.fprop((samples, G_conditional_data))
rval["false_positives"] = T.cast((y_hat > 0.5).mean(), "float32")
# y = T.alloc(0., m, 1)
cost = D.cost_from_X(((samples, G_conditional_data), y_hat))
sample_grad = T.grad(-cost, samples)
rval["sample_grad_norm"] = T.sqrt(T.sqr(sample_grad).sum())
_S, d_obj, g_obj, i_obj = self.get_samples_and_objectives(model, data)
if model.monitor_inference and i_obj != 0:
rval["objective_i"] = i_obj
if model.monitor_discriminator:
rval["objective_d"] = d_obj
if model.monitor_generator:
rval["objective_g"] = g_obj
rval["now_train_generator"] = self.now_train_generator
return rval
开发者ID:hit-computer,项目名称:adversarial,代码行数:34,代码来源:__init__.py
示例10: _transform
def _transform(theta, input, downsample_factor):
num_batch, num_channels, height, width = input.shape
theta = T.reshape(theta, (-1, 1))
# grid of (x_t, y_t, 1), eq (1) in ref [1]
out_height = T.cast(height / downsample_factor[0], 'int64')
out_width = T.cast(width / downsample_factor[1], 'int64')
grid = _meshgrid(out_height, out_width)
zeros = T.zeros_like(theta)
padded_theta = T.concatenate([theta, zeros], axis=1)
T_g = padded_theta.dimshuffle(0, 1, 'x') + grid.dimshuffle('x', 0, 1)
x_s = T_g[:, 0]
y_s = T_g[:, 1]
x_s_flat = x_s.flatten()
y_s_flat = y_s.flatten()
# dimshuffle input to (bs, height, width, channels)
input_dim = input.dimshuffle(0, 2, 3, 1)
input_transformed = _interpolate(
input_dim, x_s_flat, y_s_flat,
out_height, out_width)
output = T.reshape(
input_transformed, (num_batch, out_height, out_width, num_channels))
output = output.dimshuffle(0, 3, 1, 2) # dimshuffle to conv format
return output
开发者ID:rmanor,项目名称:Lasagne,代码行数:28,代码来源:special.py
示例11: __build_backprop
def __build_backprop(self):
y_init = self.outside_world.y_data_one_hot # initialize y=y_data
h_init = my_op(2 * (T.dot(rho(y_init), self.W2.T) + self.bh)) # initialize h by backward propagation
x_init = my_op(T.dot(rho(h_init), self.W1.T) + self.bx) # initialize x by backward propagation
Delta_y = y_init - self.y
Delta_h = h_init - self.h
Delta_x = x_init - self.x
by_dot = T.mean(Delta_y, axis=0)
W2_dot = T.dot(self.rho_h.T, Delta_y) / T.cast(self.x.shape[0], dtype=theano.config.floatX)
bh_dot = T.mean(Delta_h, axis=0)
W1_dot = T.dot(self.rho_x.T, Delta_h) / T.cast(self.x.shape[0], dtype=theano.config.floatX)
bx_dot = T.mean(Delta_x, axis=0)
alpha = T.fscalar('alpha')
by_new = self.by + alpha * by_dot
W2_new = self.W2 + alpha * W2_dot
bh_new = self.bh + alpha * bh_dot
W1_new = self.W1 + alpha * W1_dot
bx_new = self.bx + alpha * bx_dot
updates_states = [(self.x, x_init), (self.h, h_init), (self.y, y_init)]
updates_params = [(self.by, by_new), (self.W2, W2_new), (self.bh, bh_new), (self.W1, W1_new)]
backprop = theano.function(
inputs=[alpha],
outputs=[],
updates=updates_states+updates_params
)
return backprop
开发者ID:soroushmehr,项目名称:BiologicalNetwork,代码行数:33,代码来源:new_model.py
示例12: _step
def _step(self, x_tm1, u_tm1, inputs, x_prior, u_prior, *args):
# x_prior are previous states
# u_prior are causes from above
outputs = self.activation(T.dot(x_tm1, self.W))
rec_error = T.sqr(inputs - outputs).sum()
causes = (1 + T.exp(-T.dot(u_tm1, self.V))) * .5
if self.pool_flag:
batch_size = inputs.shape[0]
dim = causes.shape[1]
imgs = T.cast(T.sqrt(dim), 'int64')
causes_up = causes.reshape(
(batch_size, 1, imgs, imgs)).repeat(
self.pool_size, axis=2).repeat(self.pool_size,
axis=3).flatten(ndim=2)
else:
causes_up = causes
x = _IstaStep(rec_error, x_tm1, lambdav=self.gamma*causes_up,
x_prior=x_prior)
if self.pool_flag:
dim = T.cast(T.sqrt(x.shape[1]), 'int64')
x_pool = x.reshape((batch_size, 1, dim, dim))
x_pool = max_pool_2d(x_pool, ds=(self.pool_size, )*2).flatten(ndim=2)
else:
x_pool = x
prev_u_cost = .01 * self.gamma * T.sqr(u_tm1-u_prior).sum()
u_cost = causes * abs(x_pool) * self.gamma + prev_u_cost
u = _IstaStep(u_cost.sum(), u_tm1, lambdav=self.gamma)
causes = (1 + T.exp(-T.dot(u, self.V))) * .5
u_cost = causes * abs(x_pool) * self.gamma
return (x, u, u_cost, outputs)
开发者ID:jfsantos,项目名称:seya,代码行数:35,代码来源:coding.py
示例13: compute_f_mu
def compute_f_mu(x, t, params):
[centers, spreads, biases, M, b]=params
diffs=x.dimshuffle(0,1,2,'x')-centers.dimshuffle('x','x',0,1)
scaled_diffs=(diffs**2)*T.exp(spreads).dimshuffle('x','x',0,1)
exp_terms=T.sum(scaled_diffs,axis=2)+biases.dimshuffle('x','x',0)*0.0
h=T.exp(-exp_terms)
sumact=T.sum(h,axis=2)
#Normalization
hnorm=h/sumact.dimshuffle(0,1,'x')
z=T.dot(hnorm,M)
z=T.reshape(z,(t.shape[0],t.shape[1],ntgates,nx))+b.dimshuffle('x','x',0,1) #nt by nb by ntgates by nx
#z=z+T.reshape(x,(t.shape[0],t.shape[1],1,nx))
tpoints=T.cast(T.arange(ntgates),'float32')/T.cast(ntgates-1,'float32')
tpoints=T.reshape(tpoints, (1,1,ntgates))
#tgating=T.exp(T.dot(t,muWT)+mubT) #nt by nb by ntgates
tgating=T.exp(-kT*(tpoints-t)**2)
tgating=tgating/T.reshape(T.sum(tgating, axis=2),(t.shape[0], t.shape[1], 1))
tgating=T.reshape(tgating,(t.shape[0],t.shape[1],ntgates,1))
mult=z*tgating
out=T.sum(mult,axis=2)
#out=out+x
return T.cast(out,'float32')
开发者ID:float650,项目名称:Diffusion-Model,代码行数:27,代码来源:diffusion_model_learn_betafunc.py
示例14: loss
def loss(x_0, n, t, params):
muparams=params[:5]
covparams=params[5:10]
tpoints=T.cast(T.arange(nsteps),'float32')/T.cast(nsteps,'float32')
betas=compute_betas(params[-1],tpoints)
def step(nt, bt, xt):
mean=xt*T.sqrt(1.0-bt)
xnew=T.cast(mean+T.sqrt(bt)*nt,'float32')
losst=T.cast(0.5*T.mean(T.sum((((mean-xnew)**2)/bt+T.log(np.pi*2.0*bt)),axis=1)),'float32')
return xnew, losst
[xhist, fwdlosshist],updates=theano.scan(fn=step,
outputs_info=[x_0, None],
sequences=[n, betas],
n_steps=nsteps)
forward_loss=-T.mean(fwdlosshist)+0.5*T.mean(T.sum((xhist[-1]**2+T.log(np.pi*2.0)),axis=1))
#f_mu=compute_f_mu(xhist,t,muparams)
#f_cov=compute_f_cov(xhist,t,covparams)
#diffs=(f_mu[2:]-xhist[:-1])**2
#gaussian_terms=T.sum(diffs*(1.0/f_cov[1:].dimshuffle(0,1,'x')),axis=2)
#det_terms=T.sum(T.log(f_cov[1:].dimshuffle(0,1,'x')),axis=2)
f_mu=compute_f_mu(xhist,t,muparams)+xhist*(T.sqrt(1.0-betas)).dimshuffle(0,'x','x')
f_cov=compute_f_cov(xhist,t,covparams)*betas.dimshuffle(0,'x')
xhist=T.concatenate([x_0.dimshuffle('x',0,1), xhist],axis=0)
diffs=(f_mu-xhist[:-1])**2
gaussian_terms=T.sum(diffs*(1.0/f_cov.dimshuffle(0,1,'x')),axis=2)
det_terms=T.sum(T.log(f_cov.dimshuffle(0,1,'x')),axis=2)
reverse_loss=T.mean(T.mean(gaussian_terms+det_terms))
return reverse_loss+forward_loss
开发者ID:float650,项目名称:Diffusion-Model,代码行数:35,代码来源:diffusion_model_learn_betafunc.py
示例15: test_elemwise_composite_float64
def test_elemwise_composite_float64():
# test that we don't fuse composite elemwise with float64 somewhere inside
# nvcc by default downcast them to float32. We would need to tell him not
# to do so, but that possible only on some device.
a = tensor.fmatrix()
b = tensor.fmatrix()
av = theano._asarray(numpy.random.rand(4, 4), dtype='float32')
bv = numpy.ones((4, 4), dtype='float32')
def get_all_basic_scalar(composite_op):
l = []
for i in composite_op.env.toposort():
if isinstance(i, theano.scalar.Composite):
l += get_all_basic_scalar(i)
else:
l.append(i)
return l
for mode in [mode_with_gpu, mode_with_gpu.excluding('gpu_after_fusion'),
mode_with_gpu.excluding('elemwise_fusion')]:
f = pfunc([a, b],
tensor.cast(tensor.lt(tensor.cast(a, 'float64') ** 2,
b),
'float32'), mode=mode)
out = f(av, bv)
assert numpy.all(out == ((av ** 2) < bv))
for node in f.maker.env.toposort():
if isinstance(node.op, cuda.GpuElemwise):
if isinstance(node.op.scalar_op, theano.scalar.Composite):
scals = get_all_basic_scalar(node.op.scalar_op)
for s in scals:
assert not any([i.type.dtype == 'float64'
for i in s.inputs + s.outputs])
开发者ID:gexarcha,项目名称:Theano,代码行数:33,代码来源:test_basic_ops.py
示例16: compute_crop_matrices
def compute_crop_matrices(self, locations, scales, Is):
Ws = []
for axis in xrange(self.n_spatial_dims):
m = T.cast(self.image_shape[axis], 'float32')
n = T.cast(self.patch_shape[axis], 'float32')
I = Is[axis].dimshuffle('x', 0, 'x') # (1, hardcrop_dim, 1)
J = T.arange(n).dimshuffle('x', 'x', 0) # (1, 1, patch_dim)
location = locations[:, axis].dimshuffle(0, 'x', 'x') # (batch_size, 1, 1)
scale = scales [:, axis].dimshuffle(0, 'x', 'x') # (batch_size, 1, 1)
# map patch index into image index space
J = (J - 0.5*n) / scale + location # (batch_size, 1, patch_dim)
# compute squared distances between image index and patch
# index in the current dimension:
# dx**2 = (i - j)*(i - j)
# where i is image index
# j is patch index mapped into image space
# = i**2 + j**2 -2ij
# = I**2 + J**2 -2IJ' for all i,j in one swoop
IJ = I * J # (batch_size, hardcrop_dim, patch_dim)
dx2 = I**2 + J**2 - 2*IJ # (batch_size, hardcrop_dim, patch_dim)
Ws.append(self.kernel.density(dx2, scale))
return Ws
开发者ID:ablavatski,项目名称:tsa-rnn,代码行数:27,代码来源:crop.py
示例17: forward
def forward(self,input_org,train=True,update_batch_stat=True,finetune=False):
print "Layer/BatchNormalization"
ldim,cdim,rdim = self._internal_shape(input_org)
input = input_org.reshape((ldim,cdim,rdim))
if (train):
mean = T.mean(input, axis=(0, 2), keepdims=True )
var = T.mean((input-mean)**2, axis=(0, 2), keepdims=True)
if(update_batch_stat):
finetune_N = theano.clone(self.finetune_N, share_inputs=False)
if(finetune):
finetune_N.default_update = finetune_N+1
ratio = T.cast(1-1.0/(finetune_N+1),theano.config.floatX)
else:
finetune_N.default_update = 0
ratio = self.moving_avg_ratio
m = ldim*rdim
scale = T.cast(m/(m-1.0),theano.config.floatX)
est_mean = theano.clone(self.est_mean, share_inputs=False)
est_var = theano.clone(self.est_var, share_inputs=False)
est_mean.default_update = T.cast(ratio*self.est_mean + (1-ratio)*mean,theano.config.floatX)
est_var.default_update = T.cast(ratio*self.est_var + (1-ratio)*scale*var,theano.config.floatX)
mean += 0 * est_mean
var += 0 * est_var
output = self._pbc(self.gamma) * (input - self._pbc(mean)) \
/ T.sqrt(1e-6+self._pbc(var)) + self._pbc(self.beta)
else:
output = self._pbc(self.gamma) * (input - self._pbc(self.est_mean)) \
/ T.sqrt(1e-6+self._pbc(self.est_var)) + self._pbc(self.beta)
return output.reshape(input_org.shape)
开发者ID:ilovecv,项目名称:vat,代码行数:32,代码来源:batch_normalization.py
示例18: cost
def cost(self):
"""
:param y: shape (time*batch,) -> label
:return: error scalar, known_grads dict
"""
y_f = T.cast(T.reshape(self.y_data_flat, (self.y_data_flat.shape[0] * self.y_data_flat.shape[1]), ndim = 1), 'int32')
known_grads = None
if self.loss == 'sprint':
if not isinstance(self.sprint_opts, dict):
import json
self.sprint_opts = json.loads(self.sprint_opts)
assert isinstance(self.sprint_opts, dict), "you need to specify sprint_opts in the output layer"
if self.exp_normalize:
log_probs = T.log(self.p_y_given_x)
else:
log_probs = self.z
sprint_error_op = SprintErrorSigOp(self.attrs.get("target", "classes"), self.sprint_opts)
err, grad = sprint_error_op(log_probs, T.sum(self.index, axis=0))
err = err.sum()
if self.loss_like_ce:
y_ref = T.clip(self.p_y_given_x - grad, numpy.float32(0), numpy.float32(1))
err = -T.sum(T.log(T.pow(self.p_y_given_x, y_ref)) * T.cast(self.index, "float32").dimshuffle(0, 1, 'x'))
if self.ce_smoothing:
err *= numpy.float32(1.0 - self.ce_smoothing)
grad *= numpy.float32(1.0 - self.ce_smoothing)
if not self.prior_scale: # we kept the softmax bias as it was
nll, pcx = T.nnet.crossentropy_softmax_1hot(x=self.y_m[self.i], y_idx=self.y_data_flat[self.i])
else: # assume that we have subtracted the bias by the log priors beforehand
assert self.log_prior is not None
# In this case, for the CE calculation, we need to add the log priors again.
y_m_prior = T.reshape(self.z + numpy.float32(self.prior_scale) * self.log_prior,
(self.z.shape[0] * self.z.shape[1], self.z.shape[2]), ndim=2)
nll, pcx = T.nnet.crossentropy_softmax_1hot(x=y_m_prior[self.i], y_idx=self.y_data_flat[self.i])
ce = numpy.float32(self.ce_smoothing) * T.sum(nll)
err += ce
grad += T.grad(ce, self.z)
known_grads = {self.z: grad}
return err, known_grads
elif self.loss == 'ctc':
from theano.tensor.extra_ops import cpu_contiguous
err, grad, priors = CTCOp()(self.p_y_given_x, cpu_contiguous(self.y.dimshuffle(1, 0)), self.index_for_ctc())
known_grads = {self.z: grad}
return err.sum(), known_grads, priors.sum(axis=0)
elif self.loss == 'ce_ctc':
y_m = T.reshape(self.z, (self.z.shape[0] * self.z.shape[1], self.z.shape[2]), ndim=2)
p_y_given_x = T.nnet.softmax(y_m)
#pcx = p_y_given_x[(self.i > 0).nonzero(), y_f[(self.i > 0).nonzero()]]
pcx = p_y_given_x[self.i, self.y_data_flat[self.i]]
ce = -T.sum(T.log(pcx))
return ce, known_grads
elif self.loss == 'ctc2':
from NetworkCtcLayer import ctc_cost, uniq_with_lengths, log_sum
max_time = self.z.shape[0]
num_batches = self.z.shape[1]
time_mask = self.index.reshape((max_time, num_batches))
y_batches = self.y_data_flat.reshape((max_time, num_batches))
targets, seq_lens = uniq_with_lengths(y_batches, time_mask)
log_pcx = self.z - log_sum(self.z, axis=0, keepdims=True)
err = ctc_cost(log_pcx, time_mask, targets, seq_lens)
return err, known_grads
开发者ID:chagge,项目名称:returnn,代码行数:60,代码来源:NetworkOutputLayer.py
示例19: shared_dataset
def shared_dataset(data_xy, borrow=True):
""" Function that loads the dataset into shared variables
The reason we store our dataset in shared variables is to allow
Theano to copy it into the GPU memory (when code is run on GPU).
Since copying data into the GPU is slow, copying a minibatch
everytime
is needed (the default behaviour if the data is not in a shared
variable) would lead to a large decrease in performance.
"""
data_x, data_y = data_xy
shared_x = theano.shared(np.asarray(data_x,
dtype=theano.config.floatX),
borrow=borrow)
shared_y = theano.shared(np.asarray(data_y,
dtype=theano.config.floatX),
borrow=borrow)
# one-hot encoded labels as {-1, 1}
n_classes = len(np.unique(data_y)) # dangerous?
y1 = -1 * np.ones((data_y.shape[0], n_classes))
y1[np.arange(data_y.shape[0]), data_y] = 1
shared_y1 = theano.shared(np.asarray(y1,
dtype=theano.config.floatX),
borrow=borrow)
# When storing data on the GPU it has to be stored as floats
# therefore we will store the labels as ``floatX`` as well
# (``shared_y`` does exactly that). But during our computations
# we need them as ints (we use labels as index, and if they are
# floats it doesn't make sense) therefore instead of returning
# ``shared_y`` we will have to cast it to int. This little hack
# lets ous get around this issue
return shared_x, T.cast(shared_y, 'int32'), T.cast(shared_y1,'int32')
开发者ID:riteshpradhan,项目名称:deepLearning,代码行数:34,代码来源:SVM_test.py
示例20: __init__
def __init__(self, dataset_path, batch_size=500, instance_weights_path=None):
L.info("Initializing dataset from: " + os.path.abspath(dataset_path))
# Reading parameters from the mmap file
fp = np.memmap(dataset_path, dtype='int32', mode='r')
self.num_samples = fp[0]
self.ngram = fp[1]
fp = fp.reshape((self.num_samples + 3, self.ngram))
self.vocab_size = fp[1,0]
self.num_classes = fp[2,0]
# Setting minibatch size and number of mini batches
self.batch_size = batch_size
self.num_batches = int(M.ceil(self.num_samples / self.batch_size))
# Reading the matrix of samples
x = fp[3:,0:self.ngram - 1] # Reading the context indices
y = fp[3:,self.ngram - 1] # Reading the output word index
self.shared_x = T.cast(theano.shared(x, borrow=True), 'int32')
self.shared_y = T.cast(theano.shared(y, borrow=True), 'int32')
self.is_weighted = False
if instance_weights_path:
instance_weights = np.loadtxt(instance_weights_path)
U.xassert(instance_weights.shape == (self.num_samples,), "The number of lines in weights file must be the same as the number of samples.")
self.shared_w = T.cast(theano.shared(instance_weights, borrow=True), theano.config.floatX)
self.is_weighted = True
L.info(' #samples: %s, ngram size: %s, vocab size: %s, #classes: %s, batch size: %s, #batches: %s' % (
U.red(self.num_samples), U.red(self.ngram), U.red(self.vocab_size), U.red(self.num_classes), U.red(self.batch_size), U.red(self.num_batches)
)
)
开发者ID:nusnlp,项目名称:corelm,代码行数:33,代码来源:mmapReader.py
注:本文中的theano.tensor.cast函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论