TensorFlow——LossNan问题

定量定义及复用

  • 示例代码
  • 运行结果
  • 结果分析
  • 结论
    • trainable = Nonetrainable = True等价,也是trainable参数的默认值,会被添加到训练变量中
      • 只有当trainable = False时不会被添加到训练变量中
    • reuse参数取值为True,None,tf.AUTO_REUSE,False(说明文档没明确列出False,但尝试可以用)
      • True: 表示读取一个旧的同名变量,如没有则抛出异常
      • None: 表示继承父scope的情况,若没有父scope,则默认为创建新变量,此时有同名变量则会抛出异常
      • tf.AUTO_REUSE: 表示使用自动模式,没有同名变量,则创建一个,否则返回同名变量
      • False特殊:
        • 经测试,当reuse参数在variable_scope或者layer中使用时,False等价于None,会继承父scope的情况
      • 注意,reuse参数在variable_scope或者layer中使用时
        • 父:tf.AUTO_REUSE,子None,False => 最终tf.AUTO_REUSE
        • 父:tf.AUTO_REUSE,子True => 最终True
        • 父:True,子None,False => 最终True
        • 父:True,子tf.AUTO_REUSE => 最终tf.AUTO_REUSE
        • 父:None,False, 子 xxx => 最终 xxx
        • 对于多层的级联架构中,依然满足上面的规律,举例来说,中途任意一层有一个
    • reuse参数只在variable_scope或者layer中可以使用,tf.get_variable,name_scope,tf.Variable中都不可用
    • tf.Variable一定会新建变量,而且会在重名时自动修改变量名称
      • 注意, tf.Variable不等价于tf.get_variablereuse=False的情况,后者在有同名变量时会报错