gpt4 book ai didi

python - tf.random.categorical 给出奇怪的结果

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:31 30 4
gpt4 key购买 nike

我正在尝试在 tensorflow 中实现 np.random.choice。这是我的实现

import numpy as np
import tensorflow as tf
p=tf.Variable(0,tf.int32)
selection_sample=[i for i in range(10)]#sample to select from
k=tf.convert_to_tensor(selection_sample)
samples = tf.random.categorical(tf.math.log([[1, 0.5, 0.3, 0.6]]),1)
sample_selected=tf.cast(samples[0][0],tf.int64)
op=tf.assign(p,k[sample_selected])
#selection_sample[samples]
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sample_selected.eval())
print(k.eval())
print((sess.run(op)))
print(p.eval())

然而,当 sample_selected 例如为 1 时,我希望 p.eval 为 1,即 k[1],但事实并非如此。例如运行此代码的示例输出是

3
[0 1 2 3 4 5 6 7 8 9]
1
1

然而 p.eval 应该是 k[3]sess.run(op) 也应该是 k[3]我做错了什么。谢谢

最佳答案

当你这样做时:

print(sample_selected.eval())

您会得到一个从 tf.random.categorical 派生的随机值。该随机值由 session 返回,不会保存在其他任何地方。

然后,当您这样做时:

print((sess.run(op)))

您正在为变量 p 分配一个 在调用 run 时产生的随机值。这是打印的值,现在保存在变量中。

最后,当您这样做时:

print(p.eval())

您会看到当前存储在p 中的值,这是在之前调用run 时生成的随机值。

关于python - tf.random.categorical 给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57426761/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com