tensorflow细节---tf.Variable、tf.get_variable、tf.variable_scope以及tf.name_scope关系

本文深入解析了TensorFlow中tf.Variable、tf.get_variable、tf.name_scope及tf.variable_scope的使用技巧与区别,详细阐述了变量创建、命名空间管理、变量共享的机制,适合初学者与进阶者参考。

tf.Variable、tf.get_variable的区别

tf.Variable、tf.get_variable、tf.variable_scope以及tf.name_scope关系
https://www.cnblogs.com/MY0213/p/9270864.html
(其中的几个观点:
1、tf.Variable、tf.get_variable的区别
2、tf.get_variable与tf.variable_scope配合实现reuse
3、tf.get_variable函数不受tf.name_scope的影响。)

TensorFlow入门(七) 充分理解 name / variable_scope
https://blog.youkuaiyun.com/Jerr__y/article/details/70809528

TensorFlow中的name_scope和variable_scope的使用
https://blog.youkuaiyun.com/qq_27825451/article/details/82349984
这篇文章中有tf.name_scope()、 tf.variable_scope()、分别与tf.Variable() 、tf.get_variable()组合使用的四种情况。

一、概要

  • tf.name_scope() #主要是方便参数变量的“ 分组 ”和 “ 管理 ”,主要是结合tf.Variable()一起使用
    1)与tf.Variable()一起使用,给变量名加一个前缀
    2)与 tf.get_variable()一起使用,不会给其创建的变量带来任何影响(不会给变量加前缀)

  • tf.variable_scope() #一方面也是可以实现变量的“ 分组 ”和“ 管理 ”; 另一方面在大大大部分情况下,跟 tf.get_variable() 配合使用,实现变量共享的功能
    1)与tf.Variable()一起使用,给变量名加一个前缀
    2)与 tf.get_variable()一起使用,也会给变量加前缀。

  • tf.Variable() #创建一个全新的变量,如果变量同名,则在名称后自动递增。
    1)生成一个初始值为initial-value的变量,必须指定初始化值。
    2)与tf.name_scope()和tf.variable_scope()都可搭配,主要跟tf.name_scope()搭配
    3)创建同名变量:不管在tf.name_scope()、tf.variable_scope()里,还是没有任何命名管理空间时,创建同名变量(假设二者都为"myname"),会自动创建自动递增的变量名(如myname_1,myname_2)

  • tf.get_variable() #用于创建共享变量。不能创建同名变量,只能共享同名变量。
    1)可以用各种初始化方法,不用明确指定值。
    2)tf.name_scope() 并不会对 tf.get_variable() 创建的变量有任何影响,不会给变量添加前缀。
    3)在name_scope中或者没有任何命名空间时,使用tf.get_variable() ,只能创建不同名的变量(同名变量会报错)
    4)在variable_scope中使用tf.get_variable() ,在不启用scope.reuse_variables()或者设置reuse=True的情况下,只能创建不同名的变量(同名变量会报错)
    5)在variable_scope中使用tf.get_variable() ,启用scope.reuse_variables()或者设置reuse=True,可以出现同名变量,但不是新建,而是共享同名变量。

共享同名变量的三种方式

使用同名变量是要进行相关的设置的。下面会有几种方式:
方式一:scope.reuse_variables() # 设置共享变量
在这里插入图片描述
在这里插入图片描述
方式二:reuse=True
在这里插入图片描述
方式三:直接指定前面的那个variable_scope
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值