来自https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/slim,
TF通过定义模型变量进一步区分变量,模型变量是表示模型参数的变量。模型变量在学习过程中被训练或微调,并在评估或推理过程中从检查点加载。示例包括由slim.fully_connected或slim.conv2d层创建的变量。非模型变量是学习或评价过程中使用的所有其他变量,但实际执行推理并不需要这些变量。例如,global_step是在学习和评估期间使用的变量,但它实际上不是模型的一部分。同样,移动平均变量可能反映模型变量,但移动平均值本身并不是模型变量。
来自functions,
tf.model_variables() 返回MODEL_VARIABLES集合中的所有变量。
然而,slim创建了“移动均值”变量,作为它的批处理规范层的一部分,这些层包含在MODEL_VARIABLES集合中。
我至少可以看到“模型变量”的定义:
Tensorflow的“模型变量”是由条件2定义的,slim的“模型变量”是由条件1定义的吗?
发布于 2017-04-21 09:12:08
简单地说,苗条使用的是密肋层。控制层使用layer_variable_getter (实际上是_model_variable_getter )生成"model_variable“,这些变量是添加到tf.GraphKeys.GLOBAL_VARIABLES、tf.GraphKeys.MODEL_VARIABLES集合中的变量。
因此,模型变量是公共变量,并添加到MODEL_VARIABLES集合中。控制层的变量是模型变量,如果需要的话,还可以从“偏差”重命名为“偏差”,从“内核”重命名为“权重”。
https://stackoverflow.com/questions/41456454
复制