我正在使用TensorFlow.js库中的tf.multinomial函数,我希望得到[75000,25000]的结果,但实际上得到的是[62083,37917]。有人能解释一下为什么会发生这种情况,以及如何才能得到预期的结果吗?
我是TensorFlow.js的初学者,无法在API文档中找到有关tf.multinomial函数行为的正确信息
const tf = require('@tensorflow/tfjs-node');
const sample = []
const p = tf.tensor([0.75,0.25], [2], 'float32')
// or just p = [0.75,0.25]
for (let i = 0; i < 100000; i++) {
const a = tf.multinomial(p, 1).arraySync()[0]
sample[a] = (sample[a] || 0) + 1
}
console.log(sample) // should be something like [75000, 25000], but it is something like [62000, 38000]
1条答案
按热度按时间jmo0nnb31#
使用
Math.log()
函数计算概率,然后将其传递给tf.multinomial()
函数可以避免此问题。例如,您可以按如下方式定义概率:
const p = tf.tensor([Math.log(0.75), Math.log(0.25)], [2], 'float32')
并且结果将是正确的(例如[ 75043,24957 ]或类似的东西)。