Python chainer.functions.normalize() Examples
The following are 17
code examples of chainer.functions.normalize().
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
chainer.functions
, or try the search function
.
Example #1
Source File: test_l2_normalization.py From chainer with MIT License | 6 votes |
def check_forward(self, x_data, axis): eps = self.eps x = chainer.Variable(x_data) y = functions.normalize(x, eps=eps, axis=axis) self.assertEqual(y.data.dtype, self.dtype) y_data = cuda.to_cpu(y.data) y_expect = numpy.empty_like(self.x) shape = self.x.shape indices = [] axis_tuple = axis if isinstance(axis, tuple) else (axis,) for i in six.moves.range(len(shape)): if i not in axis_tuple: indices.append(six.moves.range(shape[i])) else: indices.append([slice(None)]) indices_tuple = list(itertools.product(*indices)) for index in indices_tuple: # Note: Casting back the result of `numpy.linalg.norm` to `x.dtype` # because old NumPy casts it to float32 when a float16 value is # given. numerator = numpy.linalg.norm(self.x[index]).astype(x.dtype) + eps y_expect[index] = self.x[index] / numerator testing.assert_allclose(y_expect, y_data, **self.check_forward_options)
Example #2
Source File: models.py From EEND with MIT License | 6 votes |
def forward(self, xs, hs=None, activation=None): if hs is not None: hx1, cx1, hx_emb, cx_emb = hs else: hx1 = cx1 = hx_emb = cx_emb = None # forward to LSTM layers hy_emb, cy_emb, ems = self.bi_lstm_emb(hx_emb, cx_emb, xs) hy1, cy1, ys = self.bi_lstm1(hx1, cx1, ems) # main branch ys_stack = F.vstack(ys) ys = self.linear1(ys_stack) if activation: ys = activation(ys) ilens = [x.shape[0] for x in xs] ys = F.split_axis(ys, np.cumsum(ilens[:-1]), axis=0) # embedding branch ems_stack = F.vstack(ems) ems = F.normalize(F.tanh(self.linear2(ems_stack))) ems = F.split_axis(ems, np.cumsum(ilens[:-1]), axis=0) if not isinstance(ys, tuple): ys = [ys] ems = [ems] return [hy1, cy1, hy_emb, cy_emb], ys, ems
Example #3
Source File: proxy_nca_loss.py From deep_metric_learning with MIT License | 5 votes |
def proxy_nca_loss(x, proxy, labels): """Proxy-NCA loss function. Args: x (:class:`~chainer.Variable`): L2 normalized anchor points whose shape is (B, D), where B is the batch size and D is the number of dimensions of feature vector. proxy (:class:`~chainer.Variable` or :class:`~chainer.Parameter`): Proxies whose shape is (K, D), where K is the number of classes in the dataset. labels (:class:`numpy.ndarray`): Class labels associated to x. The shape is (B,) and dtype is int. Note that the class IDs must be 0, 1, ..., K-1. Returns: :class:`~chainer.Variable`: Loss value. See: `No Fuss Distance Metric Learning using Proxies \ <http://openaccess.thecvf.com/content_ICCV_2017/papers/\ Movshovitz-Attias_No_Fuss_Distance_ICCV_2017_paper.pdf>`_ """ proxy = F.normalize(proxy) distance = squared_distance_matrix(x, proxy) d_posi = distance[np.arange(len(x)), labels] # For each row, remove one element corresponding to the positive distance B, K = distance.shape # batch size and the number of classes mask = np.tile(np.arange(K), (B, 1)) != labels[:, None] d_nega = distance[mask].reshape(B, K - 1) log_denominator = F.logsumexp(-d_nega, axis=1) loss = d_posi + log_denominator return F.average(loss)
Example #4
Source File: modified_googlenet.py From deep_metric_learning with MIT License | 5 votes |
def __call__(self, x, subtract_mean=True): if subtract_mean: x = x - self._image_mean # h = super(ModifiedGoogLeNet, self).__call__( # x, layers=['pool5'], train=train)['pool5'] # h = self.bn_fc(h, test=not train) # y = self.fc(h) # return y h = F.relu(self.conv1(x)) h = F.max_pooling_2d(h, 3, stride=2) h = F.local_response_normalization(h, n=5, k=1, alpha=1e-4/5) h = F.relu(self.conv2_reduce(h)) h = F.relu(self.conv2(h)) h = F.local_response_normalization(h, n=5, k=1, alpha=1e-4/5) h = F.max_pooling_2d(h, 3, stride=2) h = self.inc3a(h) h = self.inc3b(h) h = F.max_pooling_2d(h, 3, stride=2) h = self.inc4a(h) h = self.inc4b(h) h = self.inc4c(h) h = self.inc4d(h) h = self.inc4e(h) h = F.max_pooling_2d(h, 3, stride=2) h = self.inc5a(h) h = self.inc5b(h) h = F.average_pooling_2d(h, 7, stride=1) h = self.bn_fc(h) y = self.fc(h) if self.normalize_output: y = F.normalize(y) return y
Example #5
Source File: test_proxy_nca_loss.py From deep_metric_learning with MIT License | 5 votes |
def check_forward(self, x_data, proxy_data, labels_data): x = chainer.Variable(x_data) proxy = chainer.Variable(proxy_data) x = F.normalize(x) loss = proxy_nca_loss(x, proxy, labels_data) self.assertEqual(loss.dtype, np.float32)
Example #6
Source File: normalize.py From chainercv with MIT License | 5 votes |
def forward(self, x): """Normalize input and scale it. Args: x (chainer.Variable): A variable holding 4-dimensional array. Its :obj:`dtype` is :obj:`numpy.float32`. Returns: chainer.Variable: The shape and :obj:`dtype` are same as those of input. """ x = F.normalize(x, eps=self.eps, axis=1) scale = F.broadcast_to(self.scale[:, np.newaxis, np.newaxis], x.shape) return x * scale
Example #7
Source File: look_at.py From neural_renderer with MIT License | 5 votes |
def look_at(vertices, eye, at=None, up=None): """ "Look at" transformation of vertices. """ assert (vertices.ndim == 3) xp = chainer.cuda.get_array_module(vertices) batch_size = vertices.shape[0] if at is None: at = xp.array([0, 0, 0], 'float32') if up is None: up = xp.array([0, 1, 0], 'float32') if isinstance(eye, list) or isinstance(eye, tuple): eye = xp.array(eye, 'float32') if eye.ndim == 1: eye = cf.tile(eye[None, :], (batch_size, 1)) if at.ndim == 1: at = cf.tile(at[None, :], (batch_size, 1)) if up.ndim == 1: up = cf.tile(up[None, :], (batch_size, 1)) # create new axes z_axis = cf.normalize(at - eye) x_axis = cf.normalize(neural_renderer.cross(up, z_axis)) y_axis = cf.normalize(neural_renderer.cross(z_axis, x_axis)) # create rotation matrix: [bs, 3, 3] r = cf.concat((x_axis[:, None, :], y_axis[:, None, :], z_axis[:, None, :]), axis=1) if r.shape[0] != vertices.shape[0]: r = cf.broadcast_to(r, (vertices.shape[0], 3, 3)) # apply # [bs, nv, 3] -> [bs, nv, 3] -> [bs, nv, 3] if vertices.shape != eye.shape: eye = cf.broadcast_to(eye[:, None, :], vertices.shape) vertices = vertices - eye vertices = cf.matmul(vertices, r, transb=True) return vertices
Example #8
Source File: look.py From neural_renderer with MIT License | 5 votes |
def look(vertices, eye, direction=None, up=None): """ "Look at" transformation of vertices. """ assert (vertices.ndim == 3) xp = chainer.cuda.get_array_module(vertices) if direction is None: direction = xp.array([0, 0, 1], 'float32') if up is None: up = xp.array([0, 1, 0], 'float32') if isinstance(eye, list) or isinstance(eye, tuple): eye = xp.array(eye, 'float32') if eye.ndim == 1: eye = eye[None, :] if direction.ndim == 1: direction = direction[None, :] if up.ndim == 1: up = up[None, :] # create new axes z_axis = cf.normalize(direction) x_axis = cf.normalize(neural_renderer.cross(up, z_axis)) y_axis = cf.normalize(neural_renderer.cross(z_axis, x_axis)) # create rotation matrix: [bs, 3, 3] r = cf.concat((x_axis[:, None, :], y_axis[:, None, :], z_axis[:, None, :]), axis=1) if r.shape[0] != vertices.shape[0]: r = cf.broadcast_to(r, vertices.shape) # apply # [bs, nv, 3] -> [bs, nv, 3] -> [bs, nv, 3] if vertices.shape != eye.shape: eye = cf.broadcast_to(eye[:, None, :], vertices.shape) vertices = vertices - eye vertices = cf.matmul(vertices, r, transb=True) return vertices
Example #9
Source File: lm_nets.py From models with MIT License | 5 votes |
def output_and_loss_from_seq_batch(self, y_seq_batch, t_seq_batch, normalize=None): y = F.concat(y_seq_batch, axis=0) y = F.dropout(y, ratio=self.dropout) t = F.concat(t_seq_batch, axis=0) loss = self.output.output_and_loss(y, t) if normalize is not None: loss *= 1. * t.shape[0] / normalize else: loss *= t.shape[0] return loss
Example #10
Source File: lm_nets.py From models with MIT License | 5 votes |
def forward_seq_batch(self, x_seq_batch, t_seq_batch, normalize=None): y_seq_batch = self.encode_seq_batch(x_seq_batch) loss = self.output_and_loss_from_seq_batch( y_seq_batch, t_seq_batch, normalize) return loss
Example #11
Source File: lm_nets.py From models with MIT License | 5 votes |
def __call__(self, x): if self.normalizedW is None: if self.norm_to_one: self.normalizedW = F.normalize(self.vocab_freq * self.W) else: self.normalizedW = self.norm_by_freq(self.vocab_freq) return embed_id.embed_id(x, self.normalizedW, ignore_label=self.ignore_label) # Definition of a recurrent net for language modeling
Example #12
Source File: lm_nets.py From models with MIT License | 5 votes |
def output_and_loss(self, h, t): logit = self(h) return F.softmax_cross_entropy( logit, t, normalize=False, reduce='mean')
Example #13
Source File: lm_nets.py From models with MIT License | 5 votes |
def output_and_loss(self, h, t): logit = self(h) return F.softmax_cross_entropy( logit, t, normalize=False, reduce='mean')
Example #14
Source File: test_l2_normalization.py From chainer with MIT License | 5 votes |
def check_eps(self, x_data): x = chainer.Variable(x_data) y = functions.normalize(x, axis=self.axis) self.assertEqual(y.data.dtype, self.dtype) y_data = cuda.to_cpu(y.data) y_expect = numpy.zeros_like(self.x) testing.assert_allclose(y_expect, y_data)
Example #15
Source File: test_l2_normalization.py From chainer with MIT License | 5 votes |
def check_double_backward(self, x_data, axis, y_grad, x_grad_grad): def f(x): return functions.normalize(x, eps=self.eps, axis=axis) gradient_check.check_double_backward( f, x_data, y_grad, x_grad_grad, **self.check_double_backward_options)
Example #16
Source File: test_l2_normalization.py From chainer with MIT License | 5 votes |
def check_backward(self, x_data, axis, y_grad): def f(x): return functions.normalize(x, eps=self.eps, axis=axis) gradient_check.check_backward( f, x_data, y_grad, **self.check_backward_options)
Example #17
Source File: lighting.py From neural_renderer with MIT License | 4 votes |
def lighting( faces, textures, intensity_ambient=0.5, intensity_directional=0.5, color_ambient=(1, 1, 1), color_directional=(1, 1, 1), direction=(0, 1, 0)): xp = chainer.cuda.get_array_module(faces) bs, nf = faces.shape[:2] # arguments if isinstance(color_ambient, tuple) or isinstance(color_ambient, list): color_ambient = xp.array(color_ambient, 'float32') if isinstance(color_directional, tuple) or isinstance(color_directional, list): color_directional = xp.array(color_directional, 'float32') if isinstance(direction, tuple) or isinstance(direction, list): direction = xp.array(direction, 'float32') if color_ambient.ndim == 1: color_ambient = cf.broadcast_to(color_ambient[None, :], (bs, 3)) if color_directional.ndim == 1: color_directional = cf.broadcast_to(color_directional[None, :], (bs, 3)) if direction.ndim == 1: direction = cf.broadcast_to(direction[None, :], (bs, 3)) # create light light = xp.zeros((bs, nf, 3), 'float32') # ambient light if intensity_ambient != 0: light = light + intensity_ambient * cf.broadcast_to(color_ambient[:, None, :], light.shape) # directional light if intensity_directional != 0: faces = faces.reshape((bs * nf, 3, 3)) v10 = faces[:, 0] - faces[:, 1] v12 = faces[:, 2] - faces[:, 1] normals = cf.normalize(neural_renderer.cross(v10, v12)) normals = normals.reshape((bs, nf, 3)) if direction.ndim == 2: direction = cf.broadcast_to(direction[:, None, :], normals.shape) cos = cf.relu(cf.sum(normals * direction, axis=2)) light = ( light + intensity_directional * cfmath.mul(*cf.broadcast(color_directional[:, None, :], cos[:, :, None]))) # apply light = cf.broadcast_to(light[:, :, None, None, None, :], textures.shape) textures = textures * light return textures