Just looking for the equivalent of np.std() in TensorFlow to calculate the standard deviation of a tensor.
TensorFlow implements a subset of the NumPy API, available as tf. experimental. numpy . This allows running NumPy code, accelerated by TensorFlow, while also allowing access to all of TensorFlow's APIs.
The standard deviation of a tensor is computed using torch. std(). It returns the standard deviation of all the elements in the tensor. Like mean, we can also compute the standard deviation, row or column-wise.
a NumPy array is created by using the np. array() method. The NumPy array is converted to tensor by using tf. convert_to_tensor() method.
To get the mean and variance just use tf.nn.moments
.
mean, var = tf.nn.moments(x, axes=[1])
For more on tf.nn.moments
params see docs
You can also use reduce_std
in the following code adapted from Keras:
#coding=utf-8 import numpy as np import tensorflow as tf def reduce_var(x, axis=None, keepdims=False): """Variance of a tensor, alongside the specified axis. # Arguments x: A tensor or variable. axis: An integer, the axis to compute the variance. keepdims: A boolean, whether to keep the dimensions or not. If `keepdims` is `False`, the rank of the tensor is reduced by 1. If `keepdims` is `True`, the reduced dimension is retained with length 1. # Returns A tensor with the variance of elements of `x`. """ m = tf.reduce_mean(x, axis=axis, keep_dims=True) devs_squared = tf.square(x - m) return tf.reduce_mean(devs_squared, axis=axis, keep_dims=keepdims) def reduce_std(x, axis=None, keepdims=False): """Standard deviation of a tensor, alongside the specified axis. # Arguments x: A tensor or variable. axis: An integer, the axis to compute the standard deviation. keepdims: A boolean, whether to keep the dimensions or not. If `keepdims` is `False`, the rank of the tensor is reduced by 1. If `keepdims` is `True`, the reduced dimension is retained with length 1. # Returns A tensor with the standard deviation of elements of `x`. """ return tf.sqrt(reduce_var(x, axis=axis, keepdims=keepdims)) if __name__ == '__main__': x_np = np.arange(10).reshape(2, 5).astype(np.float32) x_tf = tf.constant(x_np) with tf.Session() as sess: print(sess.run(reduce_std(x_tf, keepdims=True))) print(sess.run(reduce_std(x_tf, axis=0, keepdims=True))) print(sess.run(reduce_std(x_tf, axis=1, keepdims=True))) print(np.std(x_np, keepdims=True)) print(np.std(x_np, axis=0, keepdims=True)) print(np.std(x_np, axis=1, keepdims=True))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With