基本操作的表现

时间:2017-05-10 13:00:30

标签: tensorflow

我准备了机器学习算法的TensorFlow实现:这样的实现非常慢。不幸的是,我无法看到我犯错误的地方,所以来到这里询问。

让我们说我有很多参数,其值取决于单个变量,例如,纪元。

例如,我有这个参数:

sSigma = tf.maximum(
     tf.multiply(sSigma0, tf.exp(-tf.divide(epoch,sSigmaTau))),
     sSigmaMin, name='s_sigma')

sSigma用于每个纪元的每个输入示例,并根据变量epoch计算(sSigma0, sSigmaTau, sSigmaMintf.constant)。

我想问一下:

  • 每次使用时都会进行评估吗?在变量epoch更改其值然后缓存后,它是仅进行一次评估吗?

  • 我应该如何使用这种类型的参数?

    • 现在如何实施
    • 使用tf.placeholder epoch代替tf.Variable
    • 将它用作变量,并在每个纪元的开头用tf.assign设置其值?

问题的简单代码:op maxInA执行了多少次?

import tensorflow as tf
import numpy as np

with tf.device("gpu:0"):
    sess = tf.InteractiveSession()

    a = tf.Variable([ [2, 100, 4], [1, 200, 3]], dtype=tf.float64, name='matrix_a')

    maxIdx = tf.arg_max(a, 0)

    maxInA = tf.reduce_max(a) # <---

    op1 = 2 * maxInA
    op2 = 3 * maxInA

    mainOp = op1 + op2

    sess.run(tf.global_variables_initializer())

    print('1) Index with max value - should be [0 1 0]')
    print(maxIdx.eval())

    print('2) Using max twice - should be 1000')
    print(mainOp.eval())

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题,但这是我的镜头。

无论有多少其他变量依赖它,变量的值都会被计算一次。例如,如果TF为您创建了以下图表:

enter image description here

变量2的值将被计算一次,然后用于计算3,4和5.此外,在4和6之前不会计算3。

有关详细信息,请阅读this paper