TF之RNN:TF的RNN中的常用的两种定义scope的方式get_variable和Variable


聪聪
聪聪 2022-09-19 13:34:50 49688
分类专栏: 人才

TF之RNN:TF的RNN中的常用的两种定义scope的方式get_variable和Variable

目录

输出结果

代码设计


输出结果

代码设计

  1. tensorflow中的两种定义scope(命名变量)的方式tf.get_variable和tf.Variable。Tensorflow当中有两种途径生成变量 variable
  2. import tensorflow as tf
  3. T1法 tf.name_scope()
  4. with tf.name_scope("a_name_scope"):
  5. initializer = tf.constant_initializer(value=1) 定义常量
  6. var1 = tf.get_variable(name='var1', shape=[1], dtype=tf.float32, initializer=initializer) 创建变量
  7. var2 = tf.Variable(name='var2', initial_value=[2], dtype=tf.float32)
  8. var21 = tf.Variable(name='var2', initial_value=[2.1], dtype=tf.float32)
  9. var22 = tf.Variable(name='var2', initial_value=[2.2], dtype=tf.float32)
  10. with tf.Session() as sess:
  11. sess.run(tf.global_variables_initializer())
  12. 以下打印出每一种Variable的名字及其值
  13. print(var1.name) var1:0
  14. print(sess.run(var1)) [ 1.]
  15. print(var2.name) a_name_scope/var2:0
  16. print(sess.run(var2)) [ 2.]
  17. print(var21.name) a_name_scope/var2_1:0
  18. print(sess.run(var21)) [ 2.0999999]
  19. print(var22.name) a_name_scope/var2_2:0
  20. print(sess.run(var22)) [ 2.20000005]
  21. 使用 tf.Variable()定义的时候, 虽然 name都一样, 但是为了不重复变量名, Tensorflow输出的变量名并不是一样的.
  22. 所以, 本质上 var2, var21, var22 并不是一样的变量.
  23. 而另一方面, 使用tf.get_variable()定义的变量不会被tf.name_scope()当中的名字所影响.
  1. print('以下输出的是T2第二种方法')
  2. T2法 tf.variable_scope()
  3. 如果想要达到重复利用变量的效果, 我们就要使用 tf.variable_scope(), 并搭配 tf.get_variable() 这种方式产生和提取变量.
  4. 不像 tf.Variable() 每次都会产生新的变量, tf.get_variable() 如果遇到了同样名字的变量时,
  5. 它会单纯的提取这个同样名字的变量(避免产生新变量). 而在重复使用的时候, 一定要在代码中强调 scope.reuse_variables(),
  6. 否则系统将会报错, 以为你只是单纯的不小心重复使用到了一个变量.
  7. with tf.variable_scope("a_variable_scope") as scope:
  8. initializer = tf.constant_initializer(value=3)
  9. var3 = tf.get_variable(name='var3', shape=[1], dtype=tf.float32, initializer=initializer)
  10. scope.reuse_variables()
  11. var3_reuse = tf.get_variable(name='var3',)
  12. var4 = tf.Variable(name='var4', initial_value=[4], dtype=tf.float32)
  13. var4_reuse = tf.Variable(name='var4', initial_value=[4], dtype=tf.float32)
  14. with tf.Session() as sess:
  15. sess.run(tf.global_variables_initializer())
  16. print(var3.name) a_variable_scope/var3:0
  17. print(sess.run(var3)) [ 3.]
  18. print(var3_reuse.name) a_variable_scope/var3:0
  19. print(sess.run(var3_reuse)) [ 3.]
  20. print(var4.name) a_variable_scope/var4:0
  21. print(sess.run(var4)) [ 4.]
  22. print(var4_reuse.name) a_variable_scope/var4_1:0
  23. print(sess.run(var4_reuse)) [ 4.]

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=2692
赞同 0
评论 0 条
聪聪L0
粉丝 0 发表 11 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2956
【软件正版化】软件正版化工作要点  2875
统信UOS试玩黑神话:悟空  2839
信刻光盘安全隔离与信息交换系统  2733
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1267
grub引导程序无法找到指定设备和分区  1231
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
点击报名 | 京东2025校招进校行程预告  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  159
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
如何玩转信创开放社区—从小白进阶到专家 15
信创开放社区邀请他人注册的具体步骤如下 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
信创再发力!中央国家机关台式计算机、便携式计算机批量集中采购配置标准的通知 8

加入交流群

请使用微信扫一扫!