【问题标题】:what is the difference between var.op.name and var.name in tensorflow?tensorflow中的var.op.name和var.name有什么区别?
【发布时间】:2016-07-07 07:43:45
【问题描述】:

我有一点令人困惑。下面是示例代码:

opt = tf.train.GradientDescentOptimizer(1e-4)
grads_and_vars = opt.compute_gradients(total_loss)       
for grad, var in grads_and_vars:        
    print(var.op.name)

输出为:conv1/filt conv1/bias

当我将var.op.name 更改为var.name

输出为:conv1/filt:0 conv1/bias:0

var.op.namevar.name 有什么区别? :0 是什么意思?

【问题讨论】:

    标签: python tensorflow deep-learning


    【解决方案1】:

    op.name 是操作的名称,而var.name 是张量的名称。操作是分配内存的东西,并在端点:0、:1等上产生可用的输出。张量是操作的输出,因此它对应于某个端点。在这种情况下,conv1/filt 是负责内存的变量操作,conv1/filt:0 是该操作的第一个端点。实际的区别是conv1/filt:0是你可以获取的值,即sess.run(["conv1/filt:0"]),而你使用conv1/filt来获取操作,即tf.get_default_graph().get_operation_by_name("conv1/filt")

    【讨论】:

      【解决方案2】:

      据我了解,OP 只是用来初始化所有变量。 :0 只是第一个输出,因此如果有另一个 conv1/filt,它将显示为 conv1/filt:1。

      【讨论】:

        猜你喜欢
        • 2020-03-16
        • 1970-01-01
        • 2016-11-15
        • 2017-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-10
        • 1970-01-01
        相关资源
        最近更新 更多