Applies batch normalization on x given mean, var, beta and gamma. I.e. returns: `output = (x - mean) / (sqrt(var) + epsilon) * gamma + beta` Arguments: x: Input tensor or variable. mean: Mean of batch. var: Variance of batch. beta: Tensor with which to center the inpu
(x, mean, var, beta, gamma, axis=-1, epsilon=1e-3)
| 2499 | |
| 2500 | @keras_export('keras.backend.batch_normalization') |
| 2501 | def batch_normalization(x, mean, var, beta, gamma, axis=-1, epsilon=1e-3): |
| 2502 | """Applies batch normalization on x given mean, var, beta and gamma. |
| 2503 | |
| 2504 | I.e. returns: |
| 2505 | `output = (x - mean) / (sqrt(var) + epsilon) * gamma + beta` |
| 2506 | |
| 2507 | Arguments: |
| 2508 | x: Input tensor or variable. |
| 2509 | mean: Mean of batch. |
| 2510 | var: Variance of batch. |
| 2511 | beta: Tensor with which to center the input. |
| 2512 | gamma: Tensor by which to scale the input. |
| 2513 | axis: Integer, the axis that should be normalized. |
| 2514 | (typically the features axis). |
| 2515 | epsilon: Fuzz factor. |
| 2516 | |
| 2517 | Returns: |
| 2518 | A tensor. |
| 2519 | """ |
| 2520 | if ndim(x) == 4: |
| 2521 | # The CPU implementation of `fused_batch_norm` only supports NHWC |
| 2522 | if axis == 1 or axis == -3: |
| 2523 | tf_data_format = 'NCHW' |
| 2524 | elif axis == 3 or axis == -1: |
| 2525 | tf_data_format = 'NHWC' |
| 2526 | else: |
| 2527 | tf_data_format = None |
| 2528 | |
| 2529 | if (tf_data_format == 'NHWC' or |
| 2530 | tf_data_format == 'NCHW' and _has_nchw_support()): |
| 2531 | # The mean / var / beta / gamma tensors may be broadcasted |
| 2532 | # so they may have extra axes of size 1, which should be squeezed. |
| 2533 | if ndim(mean) > 1: |
| 2534 | mean = array_ops.reshape(mean, [-1]) |
| 2535 | if ndim(var) > 1: |
| 2536 | var = array_ops.reshape(var, [-1]) |
| 2537 | if beta is None: |
| 2538 | beta = zeros_like(mean) |
| 2539 | elif ndim(beta) > 1: |
| 2540 | beta = array_ops.reshape(beta, [-1]) |
| 2541 | if gamma is None: |
| 2542 | gamma = ones_like(mean) |
| 2543 | elif ndim(gamma) > 1: |
| 2544 | gamma = array_ops.reshape(gamma, [-1]) |
| 2545 | y, _, _ = nn.fused_batch_norm( |
| 2546 | x, |
| 2547 | gamma, |
| 2548 | beta, |
| 2549 | epsilon=epsilon, |
| 2550 | mean=mean, |
| 2551 | variance=var, |
| 2552 | data_format=tf_data_format, |
| 2553 | is_training=False |
| 2554 | ) |
| 2555 | return y |
| 2556 | return nn.batch_normalization(x, mean, var, beta, gamma, epsilon) |
| 2557 | |
| 2558 |
nothing calls this directly
no test coverage detected