Thanks for tuning in to Google I/O. View all sessions on demand

# nsl.lib.random_in_norm_ball

Generates a random sample in a norm ball, conforming the given structure.

This function expects `tensor_structure` to represent a batch of examples, where the tensors in the structure are features. The norms are calculated in the whole feature space (including all tensors).

For L-inf norm, each feature dimension can be sampled independently from a uniform distribution. For L2 and L1 norms, we use the result (Corollary 4 in Barthe et al., 2005) that the first `n` coordinates of a uniformly random point on the `p`-norm unit sphere in `R^(n+p)` are uniformly distributed in the `p`-norm unit ball in `R^n`. For L2 norm, we draw random points on the unit sphere from the standard normal distribution which density is proportional to `exp(-x^2)`(Corollary 1 in Harman and Lacko, 2010). For L1 norm, we draw random points on the 1-norm unit sphere from the standard Laplace distribution which density is proportional to `exp(-|x|)`. More details on the papers: https://arxiv.org/abs/math/0503650 and https://doi.org/10.1016/j.jmva.2010.06.002

`tensor_structure` A (nested) collection of batched, floating-point tensors. Only the structure (number of tensors, shape, and dtype) is used, not the values. The first dimension of each tensor is the batch size and must all be equal.
`radius` The radius of the norm ball to sample from.
`norm_type` One of `nsl.configs.NormType` which specifies the norm of the norm ball.

A (nested) collection of tensors in the same structure as `tensor_structure` but has its values drawn randomly. The norm of each example in the batch is less than or equal to the given radius.

[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }]