我准备了一个机器学习算法的TensorFlow实现:这种实现速度非常慢。不幸的是,我无法看到我犯了什么错误,所以来到这里问。基本操作的性能
假设我有很多参数的值取决于单个变量,例如历元。
例如,我有这样的参数:
sSigma = tf.maximum(
tf.multiply(sSigma0, tf.exp(-tf.divide(epoch,sSigmaTau))),
sSigmaMin, name='s_sigma')
值sSigma
用于每个历元的每一个输入一个示例,并且计算为可变epoch
的函数(sSigma0, sSigmaTau, sSigmaMin
是tf.constant
)。
我想问:
是每次使用时进行评估?在变量
epoch
更改其值然后缓存之后,是否仅评估一次?我应该如何使用这种类型的参数?
- 它是如何实现的,现在
- 使用的
tf.Variable
- 一个
tf.placeholder
epoch
,而不是使用它作为一个变量,在每一个时代的开始设置其与tf.assign
价值?
的问题简单代码:多少次运算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())
提供了一个链接到你的代码的精简版本,突出显示了问题。你问了很多问题,请考虑将一些问题转移到另一个帖子 – Wontonimo
在你的例子中,'maxInA'将在最后一次'mainOp.eval()'调用期间被精确评估一次。 –