Tensorflow中tf.Variable()和tf.get_variable()的区别与关系

本文介绍了TensorFlow中tf.Variable()和tf.get_variable()的区别。tf.Variable()会根据name自动创建新变量,而tf.get_variable()在未指定变量作用域时遇到重复name会报错。在变量作用域variable_scope下,tf.Variable()依然会创建新变量,但tf.get_variable()会实现变量共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从两个方法的名称上,可以简单理解一下,Variable是定义变量,而get_variable是获取变量(只不过如果获取不到就重新定义一个变量),如果按照这种逻辑,已经基本上可以理解两者的差异了。

下面我们通过一些代码,来更深入理解一下两者的差异和各自的特点

先看下面这段代码(最好先不要看下面注释中的输出结果,先自己思考一下会是什么结果)

import tensorflow as tf

v1 = tf.Variable(1,name="V1")                     # 第1句话
v2 = tf.Variable(2,name="V1")                     # 第2句话
v3 = tf.Variable(3,name="V1")                     # 第3句话
v4 = tf.Variable(4,name="V1_1")                   # 第4句话

print ("v1:",v1.name)
print ("v2:",v2.name)
print ("v3:",v3.name)
print ("v4:",v4.name)

v1 = tf.Variable(1,name="V1")                     # 第5句话
print ("v1:",v1.name)


### 输出结果为 ###
# v1: V1:0
# v2: V1_1:0
# v3: V1_2:0
# v4: V1_1_1:0
# v1: V1_3:0

这段代码表明,定义一个变量并传入参数name,如果name取值相同,则系统会自动在上一个传入的name后面加上"_n",n从1开始顺序增加。

比如上面的第2句话和第3句话,就是因为定义变量时传入的参数name和第1句话的name取值相同(V1),因此在"V1"的基础上分别加上了"_1"和"_2"。也就是说,虽然在定义变量时,指定了相同的变量name,但是系统会创建一个新的内存空间,并自动生成一个新的name。

上面第4句话传入的参数name

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值