日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

variable与get_variable

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 variable与get_variable 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Variable

tensorflow中有兩個關于variable的op,tf.Variable()與tf.get_variable()下面介紹這兩個的區別

tf.Variable與tf.get_variable()

tf.Variable(initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None)
  • 1
tf.get_variable(name, shape=None, dtype=None, initializer=None, regularizer=None, trainable=True, collections=None, caching_device=None, partitioner=None, validate_shape=True, custom_getter=None)
  • 1

區別

  • 使用tf.Variable時,如果檢測到命名沖突,系統會自己處理。使用tf.get_variable()時,系統不會處理沖突,而會報錯
  • import tensorflow as tf w_1 = tf.Variable(3,name="w_1") w_2 = tf.Variable(1,name="w_1") print w_1.name print w_2.name #輸出 #w_1:0 #w_1_1:0
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    import tensorflow as tfw_1 = tf.get_variable(name="w_1",initializer=1) w_2 = tf.get_variable(name="w_1",initializer=2) #錯誤信息 #ValueError: Variable w_1 already exists, disallowed. Did #you mean to set reuse=True in VarScope?
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 基于這兩個函數的特性,當我們需要共享變量的時候,需要使用tf.get_variable()。在其他情況下,這兩個的用法是一樣的
  • get_variable()與Variable的實質區別

    來看下面一段代碼:

    import tensorflow as tfwith tf.variable_scope("scope1"):w1 = tf.get_variable("w1", shape=[])w2 = tf.Variable(0.0, name="w2") with tf.variable_scope("scope1", reuse=True):w1_p = tf.get_variable("w1", shape=[])w2_p = tf.Variable(1.0, name="w2")print(w1 is w1_p, w2 is w2_p) #輸出 #True False
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    看到這,就可以明白官網上說的參數復用的真面目了。由于tf.Variable()?每次都在創建新對象,所有reuse=True?和它并沒有什么關系。對于get_variable(),來說,如果已經創建的變量對象,就把那個對象返回,如果沒有創建變量對象的話,就創建一個新的。

    random Tensor

    可用于賦值給tf.Variable()的第一個參數

    tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)tf.random_uniform(shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name=None)tf.random_shuffle(value, seed=None, name=None)tf.random_crop(value, size, seed=None, name=None)tf.multinomial(logits, num_samples, seed=None, name=None)tf.random_gamma(shape, alpha, beta=None, dtype=tf.float32, seed=None, name=None)tf.set_random_seed(seed)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    constant value tensor

    tf.zeros(shape, dtype=tf.float32, name=None)tf.zeros_like(tensor, dtype=None, name=None)tf.ones(shape, dtype=tf.float32, name=None)tf.ones_like(tensor, dtype=None, name=None)tf.fill(dims, value, name=None)tf.constant(value, dtype=None, shape=None, name='Const')
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    initializer

    tf.constant_initializer(value=0, dtype=tf.float32) tf.random_normal_initializer(mean=0.0, stddev=1.0, seed=None, dtype=tf.float32) tf.truncated_normal_initializer(mean=0.0, stddev=1.0, seed=None, dtype=tf.float32) tf.random_uniform_initializer(minval=0, maxval=None, seed=None, dtype=tf.float32) tf.uniform_unit_scaling_initializer(factor=1.0, seed=None, dtype=tf.float32) tf.zeros_initializer(shape, dtype=tf.float32, partition_info=None) tf.ones_initializer(dtype=tf.float32, partition_info=None) tf.orthogonal_initializer(gain=1.0, dtype=tf.float32, seed=None)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    參考資料?
    https://www.tensorflow.org/api_docs/python/state_ops/variables#Variable?
    https://www.tensorflow.org/api_docs/python/state_ops/sharing_variables#get_variable?
    https://www.tensorflow.org/versions/r0.10/api_docs/python/constant_op/?
    https://www.tensorflow.org/api_docs/python/state_ops/

    轉自:http://blog.csdn.net/u012436149/article/details/53696970

    總結

    以上是生活随笔為你收集整理的variable与get_variable的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。