小编Jef*_*eff的帖子

Tensorflow仅针对变量的某些元素进行最小化

是否可以通过仅更改变量的某些元素来最小化损失函数?换句话说,如果我有一个X长度为2 的变量,我如何通过改变X[0]和保持X[1]常数来最小化我的损失函数?

希望我试过的这段代码能描述我的问题:

import tensorflow as tf
import tensorflow.contrib.opt as opt

X = tf.Variable([1.0, 2.0])
X0 = tf.Variable([3.0])

Y = tf.constant([2.0, -3.0])

scatter = tf.scatter_update(X, [0], X0)

with tf.control_dependencies([scatter]):
    loss = tf.reduce_sum(tf.squared_difference(X, Y))

opt = opt.ScipyOptimizerInterface(loss, [X0])

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    opt.minimize(sess)

    print("X: {}".format(X.eval()))
    print("X0: {}".format(X0.eval()))
Run Code Online (Sandbox Code Playgroud)

哪个输出:

INFO:tensorflow:Optimization terminated with:
  Message: b'CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL'
  Objective function value: 26.000000
  Number of iterations: 0
  Number of functions evaluations: 1
X: [3. 2.]
X0: …
Run Code Online (Sandbox Code Playgroud)

python machine-learning tensorflow

10
推荐指数
1
解决办法
2026
查看次数

使用不规则张量和 while 循环时,XLA 无法推导出跨步切片的编译时间常数输出形状

是否可以使用以下最小示例experimental_compile=True?我已经看到这个论点有一些很大的加速,因此我很想弄清楚如何让它工作。谢谢!

import tensorflow as tf

print(tf.__version__)
# ===> 2.2.0-dev20200409

x = tf.reshape(tf.range(25, dtype=tf.float32), [5, 5])
row_lengths = tf.constant([2, 1, 2])
ragged_tensor = tf.RaggedTensor.from_row_lengths(x, row_lengths)

for i, tensor in enumerate(ragged_tensor):
    print(f"i: {i}\ntensor:\n{tensor}\n")
# ==>
# i: 0
# tensor:
# [[0. 1. 2. 3. 4.]
#  [5. 6. 7. 8. 9.]]

# i: 1
# tensor:
# [[10. 11. 12. 13. 14.]]

# i: 2
# tensor:
# [[15. 16. 17. 18. 19.]
#  [20. 21. 22. 23. 24.]] …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorflow-xla tensorflow2.0

5
推荐指数
1
解决办法
587
查看次数

R :: dexp的参数化

我花了一些时间试图在我的代码中找到一个错误,这个错误对于R::dexp函数来说是一个不寻常的(至少对我而言)参数化.例如:

cppFunction("
  double my_dexp(double x, double lambda, double is_log) {
    return R::dexp(x, lambda, is_log);
  }
")

> my_dexp(4.5, 2.5, FALSE)
[1] 0.06611956
> dexp(4.5, 2.5, FALSE)
[1] 3.251824e-05
Run Code Online (Sandbox Code Playgroud)

这里我可以看到他们所使用的定义:

double R::dexp(double x, double sl, int lg)
Run Code Online (Sandbox Code Playgroud)

但我无法找出sl代表什么.我不确定这是否记录在任何地方 - 所以希望这篇文章能够警告那些使用了像我这样的功能的人,以及任何人可以帮助确定使用了什么参数化,以及为什么.

r rcpp

1
推荐指数
1
解决办法
160
查看次数