class_docstr: Hierarchical softmax function based on a binary tree.
  
  This function object should be allocated beforehand, and be copied on every
  forward computation, since the initializer parses the given tree. See the
  implementation of :class:`BinaryHierarchicalSoftmax` for details.
  
  Args:
      tree: A binary tree made with tuples like ``((1, 2), 3)``.
  
  .. seealso::
     See :class:`BinaryHierarchicalSoftmax` for details.
code: def _backward_cpu_one(self, x, t, W, gloss, gW):
      begin = self.begins[t]
      end = self.begins[t + 1]
  
      path = self.paths[begin:end]
      w = W[path]
      wxy = w.dot(x) * self.codes[begin:end]
      g = -gloss * self.codes[begin:end] / (1.0 + numpy.exp(wxy))
      gx = g.dot(w)
      gw = g.reshape((g.shape[0], 1)).dot(x.reshape(1, x.shape[0]))
      gW[path] += gw
      return gx
  
imports: import copy
  import numpy
  import six
  import chainer
  from chainer.backends import cuda
  from chainer import device_resident
  from chainer import function
  from chainer.initializers import uniform
  from chainer import link
  from chainer import utils
  from chainer.utils import type_check
  from chainer import variable
label_desc: Use image node_id 7 for calling the BinaryHierarchicalSoftmaxFunction obj's underlying member method code with example usage: obj._backward_cpu_one(x, t, W, gloss, gW) and returns: gx