1. 程式人生 > >TensorFlow常量、序列以及隨機值生成

TensorFlow常量、序列以及隨機值生成

TensorFlow 生成 常量、序列和隨機值

生成常量

tf.constant()這種形式比較常見,除了這一種生成常量的方式之外,像Numpy一樣,TensorFlow也提供了生成集中特殊的常量的函式:

  • tf.zeros(shape, dtype=tf.float32, name=None)

三個引數的意思顯而易見,返回指定形狀的全零張量

  • tf.zeros_like(tensor, dtype=None, name=None, optimizer=True)

與函式的名字一致,傳入一個張量,最後返回一個張量,與傳入的張量擁有一樣的形狀和資料型別,也可以自己傳入dtype指定資料型別

  • tf.ones()tf.ones_like()與之前的函式對應一致

  • tf.fill(shape, value, name=None) 返回填滿指定輸入的數值的張量,例如:

tf.fill([2,3],9)

返回的張量就是:

[[9 9 9]
 [9 9 9]]

生成序列

  • tf.linspace(start, stop, num, name=None)

函式名稱與Numpy中序列的函式一樣,只是引數部分進行了簡化,前兩個引數分別指定了開始和結束的值,num指定了要生成的數量,最後則是名稱,例如:

a = tf.linspace(1.0, 10.0, 10, name='lin1')

輸出:

[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
  • tf.range(start, limit, delta, dtype=None, name=None)

例如:

a = tf.range(1, 5, 1)

輸出:

[1 2 3 4]

隨機張量

隨機值在TensorFlow中很重要,很多情況下的初始值往往會隨機值,常用的隨機值生成函式如下:

  • 生成均勻分佈的隨機張量
# 呼叫格式
random_uniform(
    shape,
    minval=0,
    maxval=None,   # 最大值以及最小值
    dtype=tf.float32,
    seed=None,     # 指定種子
    name=None
)

# 例如
a = tf.random_uniform([2,3], minval=1.0, maxval=5.0, dtype=tf.float32)
# 輸出
[[4.458698  4.091486  4.3704953]
 [3.893827  2.7951822 2.2381153]]
  • 生成服從正態分佈的隨機張量
# 呼叫格式
random_normal(
    shape,
    mean=0.0,      # 均值
    stddev=1.0,    # 標準差
    dtype=tf.float32,
    seed=None,
    name=None
)
a = tf.random_normal([2,3], mean=3.0, stddev=1.0, dtype=tf.float32)
[[3.65199   1.879906  2.1775374]
 [1.6041888 1.503772  2.704612 ]]
  • 生成服從截斷正態分佈的隨機張量
# 呼叫格式
tf.truncated_normal(
    shape,
    mean=0.0,
    stddev=1.0,
    dtype=tf.float32,
    seed=None,
    name=None
)

[[4.477414  2.9767075 2.377511 ]
 [2.7083392 4.2639837 2.497882 ]]

這個函式與正態分佈的函式使用時一樣的,只是增加了 “截斷” 也就是限制每個元素的取值,如果其平均值大於 2 個標準差的值將被丟棄並重新選擇 。

以上~