def _create_ladder_prior(self, ladder_len):
     param = np.zeros((2, ladder_len, ladder_len))
     mean, var = param
     lateral_mean = logit(1e-4)
     var[:,0] = 1e-3
     for i in xrange(1, ladder_len):
         mean[i,1:i+1] = lateral_mean
         var[i,1:i+1] = 1e-3
     return param
    def _create_top_prior(self, layer_len, ladder_len):
        param = np.zeros((2, layer_len, ladder_len))
        mean, var = param

        # Make top-level units mutually exclusive and equally probable.
        probs = np.reciprocal(np.arange(layer_len, 0, -1, dtype=float))
        probs[-1] -= 1e-3
        bias_mean = logit(probs)
        lateral_mean = logit(1e-6)

        # Make mutual exclusivity high probable but individual probabilities
        # fairly variable.
        mean[:,0] = bias_mean
        var[:,0] = 1e-3
        for i in xrange(1, layer_len):
            mean[i,1:i+1] = lateral_mean
            var[i,1:i+1] = 1e-3

        return param