tf.random_normal()
- 用途:
从 “正态分布” 中生成随机数
- 正太分布:
- 概念:
1.又名“高斯分布”,是一个常见的连续概率分布
2.若随机变量X服从一个数学期望为μ、方差为σ^2 的正态分布,记为N(μ,σ^2)
3.当期望为0,标准差为1时为标准正太分布
-
数学表达式:
-
函数图像如图所示:
-
python语法:
**tf.random_normal (shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
shape: 输出张量的形状,必选
mean: 正态分布的均值,默认为0
stddev: 正态分布的标准差,默认为1.0
dtype: 输出的类型,默认为tf.float32
seed: 随机数种子,是一个整数,当设置之后,每次生成的随机数都一样
name: 操作的名称
- (1) shape=(3,3),dtype为默认类型float34
import tensorflow as tf
tf = tf.random.normal((3,3))
print(tf)
print(tf.dtype)
>>> tf.Tensor(
[[ 0.7568037 0.76599705 -0.9618746 ]
[-0.40774775 0.6299737 1.0331134 ]
[ 0.2801164 -0.01470783 0.18125445]], shape=(3, 3), dtype=float32)
>>> <dtype: 'float32'>
- (2) 将dtype由默认类型float32修改为float64
import tensorflow as tf
tf = tf.random.normal((3,3),dtype=tf.float64)
print(tf)
print(tf.dtype)
>>> tf.Tensor(
[[ 0.21275012 0.95105498 -0.90443889]
[-1.62835943 1.17666347 -0.19029969]
[ 0.05321206 -0.95185553 0.76990253]], shape=(3, 3), dtype=float64)
>>> <dtype: 'float64'>
- (3) 设定mean=0,studdev=2
import tensorflow as tf
tf = tf.random.normal((3,3),dtype=tf.float64,mean=0,stddev=2)
print(tf)
print(tf.dtype)
>>> tf.Tensor(
[[ 3.93224124 -0.14164949 1.3077799 ]
[ 2.87169663 2.37923328 1.89279953]
[ 2.73603371 -0.40775127 0.4801522 ]], shape=(3, 3), dtype=float64)
>>> <dtype: 'float64'>
-
(3) 设定随机种子seed
- 未设定随机种子,运行3次代码,发现每次生成的随机数不同
import tensorflow as tf
tf = tf.random.normal((3,3))
print(tf)
# 第一次
tf.Tensor(
[[ 1.7006174 1.2488154 1.4032307 ]
[ 1.3743714 -1.0814087 0.21140715]
[-1.4997168 -1.1225951 -0.6438281 ]], shape=(3, 3), dtype=float32)
# 第二次
tf.Tensor(
[[-0.7726681 -0.53940475 -0.9869719 ]
[-1.3266131 -0.17771764 -1.3138798 ]
[ 0.51728415 -0.38590327 -1.362033 ]], shape=(3, 3), dtype=float32)
# 第三次
tf.Tensor(
[[ 0.2407825 0.661185 -1.043917 ]
[-0.2979386 -0.7310074 -0.6485838 ]
[ 0.3239951 -0.4127123 0.26340994]], shape=(3, 3), dtype=float32)
- 设定随机种子seed=5,运行3次代码,发现每次生成的随机数相同
import tensorflow as tf
tf = tf.random.normal((3,3),seed=5)
print(tf)
# 第一次
tf.Tensor(
[[-1.1780828 -0.7099414 -1.748158 ]
[-0.49537227 0.24303888 -0.12631302]
[-0.6639287 -0.49519837 -0.8939343 ]], shape=(3, 3), dtype=float32)
# 第二次
tf.Tensor(
[[-1.1780828 -0.7099414 -1.748158 ]
[-0.49537227 0.24303888 -0.12631302]
[-0.6639287 -0.49519837 -0.8939343 ]], shape=(3, 3), dtype=float32)
# 第三次
tf.Tensor(
[[-1.1780828 -0.7099414 -1.748158 ]
[-0.49537227 0.24303888 -0.12631302]
[-0.6639287 -0.49519837 -0.8939343 ]], shape=(3, 3), dtype=float32)