Tensorflow 随机张量

Tensorflow 随机张量

  • tf.random_normal(shape, mean, stddev, dtype, seed, name)

    正太分布:生成100个均值为0、标准差为1的随机数。

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

norm = tf.random_normal([100], mean = 0.0, stddev = 1.0) 
with tf.Session() as sess:
    y = sess.run(norm)
    plt.plot(y)
    plt.show()

 

  • tf.truncated_normal(shape, mean, stddev, dtype, seed, name)

正太分布:生成的值遵循具有指定平均值和标准偏差的正态分布,与tf.random_normal()不同之处在于其平均值大于 2 个标准差的值将被丢弃并重新选择。

tru_norm = tf.truncated_normal([100], mean = 0.0, stddev = 1.0) 
with tf.Session() as sess:
    y = sess.run(tru_norm)
    plt.plot(y)
    plt.show()

  •  tf.random_uniform(shape, minval, maxval, dtype, seed, name)

生成的值在该 [minval, maxval) 范围内遵循均匀分布。下限 minval 包含在范围内,而上限 maxval 被排除在外。

对于浮点数,默认范围是 [0, 1)。

对于整数,至少 maxval 必须明确地指定。在整数情况下,随机整数稍有偏差,除非 maxval - minval 是 2 的精确幂。对于maxval - minval 的值,偏差很小,明显小于输出(2**32 或者 2**64)的范围。

uni = tf.random_uniform([100], minval = 0.0, maxval = 2.0) 
with tf.Session() as sess:
    y = sess.run(uni)
    plt.plot(y)
    plt.show()

  • tf.random_shuffle( value, seed, name)

 随机地将张量沿value的第一维度打乱。

shuff = tf.random_shuffle([[1, 2],[3, 4],[5, 6]])
with tf.Session() as sess:
    print (sess.run(shuff))
[[5 6]
 [1 2]
 [3 4]]

tf.random_crop(value, size, seed, name)

随机地将张量裁剪为给定的大小。

以一致选择的偏移量将一个形状 size 部分从 value 中切出。需要的条件:value.shape >= size。

如果大小不能裁剪,请传递该维度的完整大小。例如,可以使用 size = [crop_height, crop_width, 3] 裁剪 RGB 图像。

a = tf.constant([[1, 2, 3],[3, 4, 5],[5, 6, 7]])
crop = tf.random_crop(a, [2, 2])
with tf.Session() as sess:
    print (sess.run(crop))
[[4 5]
 [6 7]]
  • tf.random_gamma(shape, alpha, beta, dtype, seed, name)

 生成具有 dtype 类型值的带有形状 tf.concat(shape, tf.shape(alpha + beta)) 的 Tensor。

samples = tf.random_gamma([2, 2], alpha = [[1.],[3.],[5.]], beta = [[3., 4.]]) 
# samples 形状为 [2, 2, 3, 2], 每个 3x2 分布有2x2个样本
with tf.Session() as sess:
    print (sess.run(samples))
[[[[ 1.63772702  0.5840373 ]
   [ 1.03710461  0.36423346]
   [ 2.86617827  0.84376758]]

  [[ 0.6439873   0.36427465]
   [ 0.84286988  0.85151744]
   [ 1.08493042  1.33050048]]]


 [[[ 0.03977644  0.56549203]
   [ 0.98616809  0.61759812]
   [ 1.91300941  1.36291587]]

  [[ 0.24800633  0.04706015]
   [ 1.19238377  0.52829504]
   [ 2.43106723  1.20613503]]]]
  • tf.set_random_seed(seed) 

tf.set_random_seed()为图形级随机seed。在op里设置的seed为操作级seed。

它与操作级别seed的交互如下:

  1. 如果既没有设置图层级也没有设置操作级别的seed:则使用随机seed进行该操作。
  2. 如果设置了图形级seed,但操作seed没有设置:系统确定性地选择与图形级seed结合的操作seed,以便获得唯一的随机序列。
  3. 如果未设置图形级seed,但设置了操作seed:使用默认的图层seed和指定的操作seed来确定随机序列。
  4. 如果图层级seed和操作seed都被设置:则两个seed将一起用于确定随机序列。
aa = tf.random_uniform([1])

print("Session 1")
with tf.Session() as sess1:
  print(sess1.run(aa))  # generates 'A1'
  print(sess1.run(aa))  # generates 'A2'

print("Session 2")
with tf.Session() as sess2:
  print(sess2.run(aa))  # generates 'A3'
  print(sess2.run(aa))  # generates '
Session 1
[ 0.47583222]
[ 0.20866013]
Session 2
[ 0.23697805]
[ 0.88876247]
bb = tf.random_uniform([1], seed = 1)

print("Session 1")
with tf.Session() as sess1:
  print(sess1.run(bb))  # generates 'B1'
  print(sess1.run(bb))  # generates 'B2'

print("Session 2")
with tf.Session() as sess2:
  print(sess2.run(bb))  # generates 'B1'
  print(sess2.run(bb))  # generates 'B2'
Session 1
[ 0.23903739]
[ 0.22267115]
Session 2
[ 0.23903739]
[ 0.22267115]
tf.set_random_seed(1)
cc = tf.random_uniform([1])

print("Session 1")
with tf.Session() as sess1:
  print(sess1.run(cc))  # generates 'C1'
  print(sess1.run(cc))  # generates 'C2'

print("Session 2")
with tf.Session() as sess2:
  print(sess2.run(cc))  # generates 'C1'
  print(sess2.run(cc))  # generates 'C2'

再执行一次会同时变 

Session 1
[ 0.20512795]
[ 0.26588583]
Session 2
[ 0.20512795]
[ 0.26588583]
tf.set_random_seed(1234)
cc = tf.random_uniform([1], seed = 1)

print("Session 1")
with tf.Session() as sess1:
  print(sess1.run(cc))  # generates 'C1'
  print(sess1.run(cc))  # generates 'C2'

print("Session 2")
with tf.Session() as sess2:
  print(sess2.run(cc))  # generates 'C1'
  print(sess2.run(cc))  # generates 'C2'

 再执行不会变

Session 1
[ 0.1689806]
[ 0.7539084]
Session 2
[ 0.1689806]
[ 0.7539084]

猜你喜欢

转载自blog.csdn.net/Muzi_Water/article/details/81359108