| 23 | * @param axis Axis along which to perform normalization. |
| 24 | */ |
| 25 | export function l2Normalize(x: Tensor, axis?: number): Tensor { |
| 26 | return tidy(() => { |
| 27 | if (x.dtype !== 'float32') { |
| 28 | x = tfc.cast(x, 'float32'); |
| 29 | } |
| 30 | const squareSum = tfc.sum(K.square(x), axis, true); |
| 31 | const epsilonTensor = tfc.fill(squareSum.shape, epsilon()); |
| 32 | const norm = tfc.sqrt(tfc.maximum(squareSum, epsilonTensor)); |
| 33 | return tfc.div(x, norm); |
| 34 | }); |
| 35 | } |
| 36 | |
| 37 | export function meanSquaredError(yTrue: Tensor, yPred: Tensor): Tensor { |
| 38 | return tidy(() => tfc.mean(K.square(tfc.sub(yPred, yTrue)), -1)); |