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
- 1
区别
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
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的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 勒索病毒再次对能源行业数据安全保护敲响警
- 下一篇: ncl如何添加线shp文件_NCL画图个