tensorflow学习笔记(二):name_scope, variable_scope

本文详细介绍了在TensorFlow中管理变量的关键概念,包括tf.Variable与tf.get_variable的区别,以及tf.name_scope和tf.variable_scope的用法。tf.Variable会自动处理命名冲突,而tf.get_variable在变量已存在时可以选择共享或报错。tf.variable_scope用于控制变量的复用和命名空间,而tf.name_scope主要管理操作的命名。理解这些概念对于构建清晰、高效的深度学习模型至关重要。

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



在训练深度网络时,为了减少需要训练参数的个数(比如LSTM模型),或者是多机多卡并行化训练大数据、大模型等情况时,往往就需要共享变量。另外一方面是当一个深度学习模型变得非常复杂的时候,往往存在大量的变量和操作,如何避免这些变量名和操作名的唯一不重复,同时维护一个条理清晰的graph非常重要。因此,tensorflow中用tf.Variable(), tf.get_variable, tf.Variable_scope(), tf.name_scope() 几个函数来实现。

1、tf.Variable() 和 tf.get_variable()

tf.Variable():只要使用该函数,一律创建新的variable,如果出现重名,变量名后面会自动加上后缀1,2….它会自动监测命名冲突并自行处理;


import tensorflow as tf;
 
a1 = tf.Variable(tf.random_normal(shape=[2, 3], mean=0, stddev=1), name='a2')
a2 = tf.Variable(tf.random_normal(shape=[2, 3], mean=0, stddev=1), name='a2')
 
with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    print(a1.name)
    print(a2.name)
 
# 输出
a2:0
a2_1:0

tf.get_variable():如果变量存在,则使用以前创建的变量,如果不存在,则新创建一个变量,但是tf.get_variable() 遇到重名的变量创建且没有设置为共享变量时,则会报错。

import tensorflow as tf;
 
a1 = tf.get_variable(name='a
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值