Python theano.tensor.addbroadcast() Examples
The following are 30
code examples of theano.tensor.addbroadcast().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
theano.tensor
, or try the search function
.
Example #1
Source File: recurrent_layer.py From recnet with MIT License | 6 votes |
def t_forward_step(self,mask, rzup_in_sig, h_pre, u_rz, u_up, t_n_out): #u_r, u_z, signal_act = self.activation gate_act = self.sigmoid() preact = T.dot( h_pre, u_rz) r = gate_act( T.add( rzup_in_sig[:, 0:t_n_out] , preact[:, 0:t_n_out] )) #T.dot( h_pre, u_r) ) ) z = gate_act( T.add( rzup_in_sig[:, t_n_out:2 * t_n_out] , preact[:, t_n_out:2 * t_n_out] )) #T.dot(h_pre, u_z) )) h_update = signal_act( T.add( rzup_in_sig[:, 2*t_n_out:3*t_n_out] , T.dot( T.mul( h_pre, r), u_up) )) h_new = T.add( (1.-z) * h_update , z * h_pre ) mask = T.addbroadcast(mask, 1) out_sig = T.add( mask * h_new , (1. - mask) * h_pre ) return out_sig
Example #2
Source File: test_heads.py From ntm-lasagne with MIT License | 6 votes |
def test_sharpening(): weight_var, gamma_var = T.tensor3s('weight', 'gamma') gamma_var = T.addbroadcast(gamma_var, 2) w = T.pow(weight_var + 1e-6, gamma_var) w /= T.sum(w, axis=2).dimshuffle(0, 1, 'x') sharpening_fn = theano.function([weight_var, gamma_var], w) weights = np.random.rand(16, 4, 128) gamma = np.random.rand(16, 4, 1) weight_t = sharpening_fn(weights, gamma) weight_t_manual = np.zeros_like(weight_t) for i in range(16): for j in range(4): for k in range(128): weight_t_manual[i, j, k] = np.power(weights[i, j, k] + 1e-6, gamma[i, j]) weight_t_manual[i, j] /= np.sum(weight_t_manual[i, j]) assert weight_t.shape == (16, 4, 128) assert np.allclose(weight_t, weight_t_manual)
Example #3
Source File: pylayers.py From DSRG with MIT License | 6 votes |
def setup(self, bottom, top): if len(bottom) != 1: raise Exception("Need two inputs to compute distance.") preds = T.ftensor4() top_diff = T.ftensor4() preds_max = T.addbroadcast(T.max(preds, axis=1, keepdims=True), 1) preds_exp = np.exp(preds - preds_max) probs = preds_exp / T.addbroadcast(T.sum(preds_exp, axis=1, keepdims=True), 1) + min_prob probs = probs / T.sum(probs, axis=1, keepdims=True) probs_sum = T.sum(probs * top_diff) self.forward_theano = theano.function([preds], probs) self.backward_theano = theano.function([preds, top_diff], T.grad(probs_sum, preds))
Example #4
Source File: applyseg_unique.py From hippodeep with MIT License | 6 votes |
def get_output_for(self, inputs, **kwargs): inputs = autocrop(inputs, self.cropping) # modify broadcasting pattern. if self.broadcastable is not None: for n, broadcasting_dim in enumerate(self.broadcastable): for dim, broadcasting in enumerate(broadcasting_dim): if broadcasting: inputs[n] = T.addbroadcast(inputs[n], dim) output = None for input in inputs: if output is not None: output = self.merge_function(output, input) else: output = input return output # Definition of the network
Example #5
Source File: layers.py From dcnn with MIT License | 6 votes |
def __init__(self, incomings, parameters, layer_num, W=lasagne.init.Normal(0.01), num_features=None, **kwargs): super(DCNNLayer, self).__init__(incomings, **kwargs) self.parameters = parameters if num_features is None: self.num_features = self.parameters.num_features else: self.num_features = num_features self.W = T.addbroadcast( self.add_param(W, (1, parameters.num_hops + 1, self.num_features), name='DCNN_W_%d' % layer_num), 0) self.nonlinearity = params.nonlinearity_map[self.parameters.dcnn_nonlinearity]
Example #6
Source File: layers.py From dcnn with MIT License | 6 votes |
def __init__(self, incomings, parameters, layer_num, W=lasagne.init.Normal(0.01), num_features=None, **kwargs): super(DCNNLayer, self).__init__(incomings, **kwargs) self.parameters = parameters if num_features is None: self.num_features = self.parameters.num_features else: self.num_features = num_features self.W = T.addbroadcast( self.add_param(W, (1, parameters.num_hops + 1, self.num_features), name='DCNN_W_%d' % layer_num), 0) self.nonlinearity = params.nonlinearity_map[self.parameters.dcnn_nonlinearity]
Example #7
Source File: layers.py From dcnn with MIT License | 6 votes |
def __init__(self, incomings, parameters, layer_num, W=lasagne.init.Normal(0.01), num_features=None, **kwargs): super(AggregatedDCNNLayer, self).__init__(incomings, **kwargs) self.parameters = parameters if num_features is None: self.num_features = self.parameters.num_features else: self.num_features = num_features self.W = T.addbroadcast( self.add_param(W, (self.parameters.num_hops + 1, 1, self.num_features), name='AGGREGATE_DCNN_W_%d' % layer_num), 1) self.nonlinearity = params.nonlinearity_map[self.parameters.dcnn_nonlinearity]
Example #8
Source File: dadgm.py From deep-learning-models with MIT License | 6 votes |
def create_updates(self, grads, params, alpha, opt_alg, opt_params): # call super-class to generate SGD/ADAM updates grad_updates = Model.create_updates(self, grads, params, alpha, opt_alg, opt_params) # create updates for centering signal # load neural net outputs (probabilities have been precomputed) l_px_mu, l_px_logsigma, l_pa_mu, l_pa_logsigma, \ l_qa_mu, l_qa_logsigma, l_qz_mu, l_qz_logsigma, l_qa, l_qz, l_cv, c, v = self.network # load neural net outputs (probabilities have been precomputed) log_pxz, log_px_given_z, log_pz = self.log_pxz, self.log_px_given_z, self.log_pz log_qz_given_x = self.log_qz_given_x cv = T.addbroadcast(lasagne.layers.get_output(l_cv),1) # compute learning signals l = log_px_given_z + log_pz - log_qz_given_x - cv l_avg, l_var = l.mean(), l.var() c_new = 0.8*c + 0.2*l_avg v_new = 0.8*v + 0.2*l_var # compute update for centering signal cv_updates = {c : c_new, v : v_new} return OrderedDict( grad_updates.items() + cv_updates.items() )
Example #9
Source File: output_layer.py From recnet with MIT License | 6 votes |
def sequence_iteration(self, output, mask,use_dropout=0,dropout_value=0.5): dot_product = T.dot(output , self.t_w_out) net_o = T.add( dot_product , self.t_b_out ) ex_net = T.exp(net_o) sum_net = T.sum(ex_net, axis=2, keepdims=True) softmax_o = ex_net / sum_net mask = T.addbroadcast(mask, 2) # to do nesseccary? output = T.mul(mask, softmax_o) + T.mul( (1. - mask) , 1e-6 ) return output #result ###### Linear Layer ########################################
Example #10
Source File: sbn.py From deep-learning-models with MIT License | 6 votes |
def create_updates(self, grads, params, alpha, opt_alg, opt_params): # call super-class to generate SGD/ADAM updates grad_updates = Model.create_updates(self, grads, params, alpha, opt_alg, opt_params) # create updates for centering signal # load neural net outputs (probabilities have been precomputed) _, _, _, l_cv, c, v = self.network log_pxz, log_qz_given_x = self.log_pxz, self.log_qz_given_x cv = T.addbroadcast(lasagne.layers.get_output(l_cv),1) # compute learning signals l = log_pxz - log_qz_given_x - cv l_avg, l_var = l.mean(), l.var() c_new = 0.8*c + 0.2*l_avg v_new = 0.8*v + 0.2*l_var # compute update for centering signal cv_updates = {c : c_new, v : v_new} return OrderedDict( grad_updates.items() + cv_updates.items() )
Example #11
Source File: ln_reccurent_layer.py From recnet with MIT License | 5 votes |
def t_forward_step(self, mask, cur_w_in_sig, pre_out_sig, w_hidden_hidden, b_act, ln_s1, ln_b1, ln_s2, ln_b2): pre_w_sig = T.dot(pre_out_sig, w_hidden_hidden) inner_act = self.activation pre_w_sig_ln = self.ln(pre_w_sig, ln_b1, ln_s1) cur_w_in_sig_ln = self.ln(cur_w_in_sig, ln_b2, ln_s2) out_sig = inner_act(T.add(cur_w_in_sig_ln, pre_w_sig_ln, b_act)) mask = T.addbroadcast(mask, 1) out_sig_m = mask * out_sig + (1. - mask) * pre_out_sig return [out_sig_m]
Example #12
Source File: test_heads.py From ntm-lasagne with MIT License | 5 votes |
def test_content_addressing(): from ntm.similarities import cosine_similarity beta_var, key_var, memory_var = T.tensor3s('beta', 'key', 'memory') beta_var = T.addbroadcast(beta_var, 2) betaK = beta_var * cosine_similarity(key_var, memory_var) w_c = lasagne.nonlinearities.softmax(betaK.reshape((16 * 4, 128))) w_c = w_c.reshape(betaK.shape) content_addressing_fn = theano.function([beta_var, key_var, memory_var], w_c) beta = np.random.rand(16, 4, 1) key = np.random.rand(16, 4, 20) memory = np.random.rand(16, 128, 20) weights = content_addressing_fn(beta, key, memory) weights_manual = np.zeros_like(weights) def softmax(x): y = np.exp(x.T - np.max(x, axis=1)) z = y / np.sum(y, axis=0) return z.T betaK_manual = np.zeros((16, 4, 128)) for i in range(16): for j in range(4): for k in range(128): betaK_manual[i, j, k] = beta[i, j, 0] * np.dot(key[i, j], \ memory[i, k]) / np.sqrt(np.sum(key[i, j] * key[i, j]) * \ np.sum(memory[i, k] * memory[i, k]) + 1e-6) for i in range(16): weights_manual[i] = softmax(betaK_manual[i]) assert weights.shape == (16, 4, 128) assert np.allclose(np.sum(weights, axis=2), np.ones((16, 4))) assert np.allclose(weights, weights_manual)
Example #13
Source File: samplers.py From eval_gen with MIT License | 5 votes |
def likelihood(self, state,generated): k = 28*28 if self.data == "binary": return - T.sum(T.nnet.binary_crossentropy(generated, T.addbroadcast(self.obs,0)),[-1,-2]) if self.data == "continuous": return (-T.sum(T.square(generated-T.addbroadcast(self.obs,0)),[-1,-2]) / (2*self.sigma) - k/2.*np.log(2 * np.pi)-k/2.*np.log(self.sigma))
Example #14
Source File: svhn_samplers.py From eval_gen with MIT License | 5 votes |
def likelihood(self, state,generated): k = 3*32*32 return self.t*(-T.sum(T.square(generated-T.addbroadcast(self.obs,0)),[-1,-2,-3]) / (2*self.sigma) - k/2.*np.log(2 * np.pi)-k/2.*np.log(self.sigma))
Example #15
Source File: pylayers.py From DSRG with MIT License | 5 votes |
def setup(self, bottom, top): if len(bottom) != 2: raise Exception("The layer needs two inputs!") probs_tmp = T.ftensor4() stat_inp = T.ftensor4() stat = stat_inp[:, :, :, 1:] probs_bg = probs_tmp[:, 0, :, :] probs = probs_tmp[:, 1:, :, :] probs_max = T.max(probs, axis=3).max(axis=2) q_fg = 0.996 probs_sort = T.sort(probs.reshape((-1, 20, 41 * 41)), axis=2) weights = np.array([q_fg ** i for i in range(41 * 41 - 1, -1, -1)])[None, None, :] Z_fg = np.sum(weights) weights = T.addbroadcast(theano.shared(weights), 0, 1) probs_mean = T.sum((probs_sort * weights) / Z_fg, axis=2) q_bg = 0.999 probs_bg_sort = T.sort(probs_bg.reshape((-1, 41 * 41)), axis=1) weights_bg = np.array([q_bg ** i for i in range(41 * 41 - 1, -1, -1)])[None, :] Z_bg = np.sum(weights_bg) weights_bg = T.addbroadcast(theano.shared(weights_bg), 0) probs_bg_mean = T.sum((probs_bg_sort * weights_bg) / Z_bg, axis=1) stat_2d = stat[:, 0, 0, :] > 0.5 loss_1 = -T.mean(T.sum((stat_2d * T.log(probs_mean) / T.sum(stat_2d, axis=1, keepdims=True)), axis=1)) loss_2 = -T.mean(T.sum(((1 - stat_2d) * T.log(1 - probs_max) / T.sum(1 - stat_2d, axis=1, keepdims=True)), axis=1)) loss_3 = -T.mean(T.log(probs_bg_mean)) loss = loss_1 + loss_2 + loss_3 self.forward_theano = theano.function([probs_tmp, stat_inp], loss) self.backward_theano = theano.function([probs_tmp, stat_inp], T.grad(loss, probs_tmp))
Example #16
Source File: test_neural_core.py From neural_wfst with MIT License | 5 votes |
def get_layer(self, x_in, op=lambda x: x): b_ = T.addbroadcast(self._params['b'], 0) ret = op(T.dot(x_in, self._params['U']) + b_) return ret
Example #17
Source File: output_layer.py From recnet with MIT License | 5 votes |
def sequence_iteration(self, output, mask, use_dropout=0, dropout_value=0.5): dot_product = T.dot(output, self.t_w_out) linear_o = T.add(dot_product, self.t_b_out) mask = T.addbroadcast(mask, 2) # to do nesseccary? output = T.mul(mask, linear_o) + T.mul((1. - mask), 1e-6) return output # result ### TEST FUNCTIONS # to do make new file with test functions
Example #18
Source File: recurrent.py From CAPTCHA-breaking with MIT License | 5 votes |
def get_padded_shuffled_mask(self, train, X, pad=0): mask = self.get_input_mask(train) if mask is None: mask = T.ones_like(X.sum(axis=-1)) # is there a better way to do this without a sum? # mask is (nb_samples, time) mask = T.shape_padright(mask) # (nb_samples, time, 1) mask = T.addbroadcast(mask, -1) # (time, nb_samples, 1) matrix. mask = mask.dimshuffle(1, 0, 2) # (time, nb_samples, 1) if pad > 0: # left-pad in time with 0 padding = alloc_zeros_matrix(pad, mask.shape[1], 1) mask = T.concatenate([padding, mask], axis=0) return mask.astype('int8')
Example #19
Source File: ln_reccurent_layer.py From recnet with MIT License | 5 votes |
def t_forward_step(self, mask, cur_w_in_sig, pre_out_sig, pre_cell_sig, w_ig_c, w_fg_c, w_og_c, w_ifco, b_ifco, ln_b1,ln_s1, ln_b2,ln_s2,ln_b3,ln_s3, t_n_out): cur_w_in_sig_ln = self.ln(cur_w_in_sig, ln_b1, ln_s1) pre_w_out_sig = T.dot(pre_out_sig, w_ifco) pre_w_out_sig_ln = self.ln(pre_w_out_sig, ln_b2, ln_s2) preact = T.add(cur_w_in_sig_ln, pre_w_out_sig_ln, b_ifco) inner_act = self.activation # T.nnet.hard_sigmoid T.tanh gate_act = self.sigmoid() # T.nnet.hard_sigmoid # Input Gate ig_t1 = gate_act(T.add(preact[:, 0:t_n_out], T.mul(pre_cell_sig, w_ig_c))) # Forget Gate fg_t1 = gate_act(T.add(preact[:, 1 * t_n_out:2 * t_n_out], T.mul(pre_cell_sig, w_fg_c),)) # Cell State cs_t1 = T.add(T.mul(fg_t1, pre_cell_sig), T.mul(ig_t1, inner_act( T.add(preact[:, 2 * t_n_out:3 * t_n_out])))) mask = T.addbroadcast(mask, 1) cs_t1 = mask * cs_t1 + (1. - mask) * pre_cell_sig # functionality: cs_t1 = T.switch(mask , cs_t1, pre_cell_sig) cs_t1_ln = self.ln(cs_t1, ln_b3, ln_s3) # Output Gate og_t1 = gate_act( T.add(preact[:, 3 * t_n_out:4 * t_n_out], T.mul(cs_t1_ln, w_og_c))) # Output LSTM out_sig = T.mul(og_t1, inner_act(cs_t1_ln)) out_sig = mask * out_sig + (1. - mask) * pre_out_sig return [out_sig, cs_t1]
Example #20
Source File: ln_reccurent_layer.py From recnet with MIT License | 5 votes |
def t_forward_step(self, mask, cur_w_in_sig, pre_out_sig, pre_cell_sig, w_ifco, b_ifco,ln_b1,ln_s1, ln_b2,ln_s2,ln_b3,ln_s3, t_n_out): cur_w_in_sig_ln = self.ln(cur_w_in_sig, ln_b1, ln_s1) pre_w_out_sig = T.dot(pre_out_sig, w_ifco) pre_w_out_sig_ln = self.ln(pre_w_out_sig, ln_b2, ln_s2) preact = T.add(cur_w_in_sig_ln, pre_w_out_sig_ln, b_ifco) inner_act = self.activation # T.nnet.hard_sigmoid #T.tanh # T.nnet.hard_sigmoid T.tanh gate_act = self.sigmoid() # T.nnet.hard_sigmoid #T.nnet.sigmoid # Input Gate ig_t1 = gate_act(preact[:, 0:t_n_out]) # Forget Gate fg_t1 = gate_act(preact[:, 1 * t_n_out:2 * t_n_out]) # Cell State cs_t1 = T.add(T.mul(fg_t1, pre_cell_sig), T.mul(ig_t1, inner_act(preact[:, 2 * t_n_out:3 * t_n_out]))) mask = T.addbroadcast(mask, 1) cs_t1 = mask * cs_t1 + (1. - mask) * pre_cell_sig cs_t1_ln = self.ln(cs_t1, ln_b3, ln_s3) # Output Gate og_t1 = gate_act(preact[:, 3 * t_n_out:4 * t_n_out]) # Output LSTM out_sig = T.mul(og_t1, inner_act(cs_t1_ln)) out_sig = mask * out_sig + (1. - mask) * pre_out_sig return [out_sig, cs_t1]
Example #21
Source File: recurrent_layer.py From recnet with MIT License | 5 votes |
def t_forward_step(self, mask, cur_w_in_sig, pre_out_sig, w_hidden_hidden, b_act): pre_w_sig = T.dot(pre_out_sig, w_hidden_hidden) inner_act = self.activation out_sig = inner_act(T.add(cur_w_in_sig, pre_w_sig, b_act)) mask = T.addbroadcast(mask, 1) out_sig_m = mask * out_sig + (1. - mask) * pre_out_sig return [out_sig_m]
Example #22
Source File: recurrent_layer.py From recnet with MIT License | 5 votes |
def t_forward_step(self, mask, cur_w_in_sig, pre_out_sig, pre_cell_sig, w_ig_c, w_fg_c, w_og_c, w_ifco, b_ifco, t_n_out): ifco = T.add(T.dot(pre_out_sig, w_ifco), b_ifco) inner_act = self.activation gate_act = self.sigmoid() # Input Gate ig_t1 = gate_act(T.add(ifco[:, 0:t_n_out], T.mul(pre_cell_sig, w_ig_c), cur_w_in_sig[:, 0:t_n_out])) # Forget Gate fg_t1 = gate_act(T.add(ifco[:, 1 * t_n_out:2 * t_n_out], T.mul(pre_cell_sig, w_fg_c), cur_w_in_sig[:, 1 * t_n_out:2 * t_n_out])) # Cell State cs_t1 = T.add(T.mul(fg_t1, pre_cell_sig), T.mul(ig_t1, inner_act( T.add(ifco[:, 2 * t_n_out:3 * t_n_out], cur_w_in_sig[:, 2 * t_n_out:3 * t_n_out])))) mask = T.addbroadcast(mask, 1) cs_t1 = mask * cs_t1 + (1. - mask) * pre_cell_sig # functionality: cs_t1 = T.switch(mask , cs_t1, pre_cell_sig) # Output Gate og_t1 = gate_act( T.add(ifco[:, 3 * t_n_out:4 * t_n_out], T.mul(cs_t1, w_og_c), cur_w_in_sig[:, 3 * t_n_out:4 * t_n_out])) # Output LSTM out_sig = T.mul(og_t1, inner_act(cs_t1)) out_sig = mask * out_sig + (1. - mask) * pre_out_sig return [out_sig, cs_t1]
Example #23
Source File: recurrent_layer.py From recnet with MIT License | 5 votes |
def t_forward_step(self, mask, cur_w_in_sig, pre_out_sig, pre_cell_sig, w_ifco, b_ifco, t_n_out): ifco = T.add(T.dot(pre_out_sig, w_ifco), b_ifco) inner_act = self.activation gate_act = self.sigmoid() # Input Gate ig_t1 = gate_act(T.add(ifco[:, 0:t_n_out], cur_w_in_sig[:, 0:t_n_out])) # Forget Gate fg_t1 = gate_act(T.add(ifco[:, 1 * t_n_out:2 * t_n_out], cur_w_in_sig[:, 1 * t_n_out:2 * t_n_out])) # Cell State cs_t1 = T.add(T.mul(fg_t1, pre_cell_sig), T.mul(ig_t1, inner_act( T.add(ifco[:, 2 * t_n_out:3 * t_n_out], cur_w_in_sig[:, 2 * t_n_out:3 * t_n_out])))) mask = T.addbroadcast(mask, 1) cs_t1 = mask * cs_t1 + (1. - mask) * pre_cell_sig # functionality: cs_t1 = T.switch(mask , cs_t1, pre_cell_sig) # Output Gate og_t1 = gate_act( T.add(ifco[:, 3 * t_n_out:4 * t_n_out], cur_w_in_sig[:, 3 * t_n_out:4 * t_n_out])) # Output LSTM out_sig = T.mul(og_t1, inner_act(cs_t1)) out_sig = mask * out_sig + (1. - mask) * pre_out_sig return [out_sig, cs_t1]
Example #24
Source File: distributions.py From cortex_old with GNU General Public License v3.0 | 5 votes |
def visualize(self, p0, p=None): if p is None: p = self.get_prob(*self.get_params()) p0 = T.addbroadcast(p0, 0) return p - p0
Example #25
Source File: theanode.py From treeano with Apache License 2.0 | 5 votes |
def compute_output(self, network, in_vw): axes = network.find_hyperparameter(["axes"]) out_var = T.addbroadcast(in_vw.variable, *axes) network.create_vw( "default", variable=out_var, shape=in_vw.shape, tags={"output"} )
Example #26
Source File: theano_backend.py From reading-text-in-the-wild with GNU General Public License v3.0 | 5 votes |
def squeeze(x, axis): '''Remove a 1-dimension from the tensor at index "axis". ''' x = T.addbroadcast(x, axis) return T.squeeze(x)
Example #27
Source File: basic.py From D-VAE with MIT License | 5 votes |
def grad(self, inputs, gout): (x,) = inputs (gz,) = gout if x.dtype not in continuous_dtypes: return [x.zeros_like(dtype=theano.config.floatX)] if self.structured: if self.axis is None: r = gz * theano.sparse.sp_ones_like(x) elif self.axis == 0: r = col_scale(theano.sparse.sp_ones_like(x), gz) elif self.axis == 1: r = row_scale(theano.sparse.sp_ones_like(x), gz) else: raise ValueError('Illegal value for self.axis.') else: o_format = x.format x = dense_from_sparse(x) if _is_sparse_variable(gz): gz = dense_from_sparse(gz) if self.axis is None: r = tensor.second(x, gz) else: ones = tensor.ones_like(x) if self.axis == 0: r = tensor.addbroadcast(gz.dimshuffle('x', 0), 0) * ones elif self.axis == 1: r = tensor.addbroadcast(gz.dimshuffle(0, 'x'), 1) * ones else: raise ValueError('Illegal value for self.axis.') r = SparseFromDense(o_format)(r) return [r]
Example #28
Source File: layers.py From gogh-figure with GNU Affero General Public License v3.0 | 5 votes |
def get_output_for(self, input, style=None, **kwargs): mean = input.mean(self.axes) inv_std = T.inv(T.sqrt(input.var(self.axes) + self.epsilon)) pattern = [0, 1, 'x', 'x'] if style == None: pattern_params = ['x', 0, 'x', 'x'] beta = 0 if self.beta is None else self.beta.dimshuffle(pattern_params) gamma = 1 if self.gamma is None else self.gamma.dimshuffle(pattern_params) else: pattern_params = pattern beta = 0 if self.beta is None else self.beta[style].dimshuffle(pattern_params) gamma = 1 if self.gamma is None else self.gamma[style].dimshuffle(pattern_params) # if self.beta is not None: # beta = ifelse(T.eq(style.shape[0], 1), T.addbroadcast(beta, 0), beta) # if self.gamma is not None: # gamma = ifelse(T.eq(style.shape[0], 1), T.addbroadcast(gamma, 0), gamma) mean = mean.dimshuffle(pattern) inv_std = inv_std.dimshuffle(pattern) # normalize normalized = (input - mean) * (gamma * inv_std) + beta return normalized
Example #29
Source File: model.py From Diffusion-Probabilistic-Models with MIT License | 5 votes |
def get_t_weights(self, t): """ Generate vector of weights allowing selection of current timestep. (if t is not an integer, the weights will linearly interpolate) """ n_seg = self.trajectory_length t_compare = T.arange(n_seg, dtype=theano.config.floatX).reshape((1,n_seg)) diff = abs(T.addbroadcast(t,1) - T.addbroadcast(t_compare,0)) t_weights = T.max(T.join(1, (-diff+1).reshape((n_seg,1)), T.zeros((n_seg,1))), axis=1) return t_weights.reshape((-1,1))
Example #30
Source File: basic.py From attention-lvcsr with MIT License | 5 votes |
def grad(self, inputs, gout): (x,) = inputs (gz,) = gout if x.dtype not in continuous_dtypes: return [x.zeros_like(dtype=theano.config.floatX)] if self.structured: if self.axis is None: r = gz * theano.sparse.sp_ones_like(x) elif self.axis == 0: r = col_scale(theano.sparse.sp_ones_like(x), gz) elif self.axis == 1: r = row_scale(theano.sparse.sp_ones_like(x), gz) else: raise ValueError('Illegal value for self.axis.') else: o_format = x.format x = dense_from_sparse(x) if _is_sparse_variable(gz): gz = dense_from_sparse(gz) if self.axis is None: r = tensor.second(x, gz) else: ones = tensor.ones_like(x) if self.axis == 0: r = tensor.addbroadcast(gz.dimshuffle('x', 0), 0) * ones elif self.axis == 1: r = tensor.addbroadcast(gz.dimshuffle(0, 'x'), 1) * ones else: raise ValueError('Illegal value for self.axis.') r = SparseFromDense(o_format)(r) return [r]