tf.random_shuffle 问题

大家好,我写了一个关于tf.random_shuffle的程序,但程序得出的结果和预期的总是不一样,有哪位大佬知道原因吗?谢谢!

import tensorflow as tf
import numpy as np
label_np=np.array([0,1,2,3,4,5])
label=tf.convert_to_tensor(label_np)
indices=tf.constant([4,0,3])
indices_random=tf.random_shuffle(indices)
   
label=tf.gather(label,indices_random)
with tf.Session() as sess:
    print('indices_random:\n',sess.run(indices_random))
print('label:\n',sess.run(label))

程序输出结果为:

indices_random:
[4 0 3]
label:
[3 4 0]

发帖人:nmx
发帖时间:2018-7-24 15:54:49

print('indices_random:\n',sess.run(indices_random))

试试连续执行这个两次,会怎么样?你这个其实是理解问题,最上面的

indices_random=tf.random_shuffle(indices)
label=tf.gather(label,indices_random)

这两句话并不是立即执行的,只是把这两个算子的依赖关系给建好了,在 sess.run 里面才会真正执行,你这里相当于隐含的执行了两次 indices_random

outs = sess.run([inices_random, label])
这么试试,然后打印 outs[0]outs[1] 看看。


回帖人:bigfundamental
发表于 2018-7-25 10:08:28