我需要对多维张量进行加权采样。你知道吗
我有一个形状为[X,Y]
的张量A
和形状为[X]
的概率分布B
。
我需要根据分布对B
中的N
元素进行采样。你知道吗
B
表示子传感器的分布。每个子传感器内的采样是均匀的。你知道吗
A中有一些填充,所以我必须考虑到这一点。什么是填充的信息包含在掩码中。你知道吗
例如
A = [[1, 2, 3, X, X, X],
[10, 20, 30, X, X, X],
[100, 200, 300, 400, 500, 600]]
A_mask = [[T, T, T, F, F, F],
[T, T, T, F, F, F],
[T, T, T, T, T, T]]
B = [0.5, 0.4, 0.1]
# a possible output, with N = 10
ouput = [1, 1, 2, 2, 3, 10, 20, 30, 30, 200]
我可以从A
的每个嵌套张量中检索要采样的元素数,方法是:
tf.multinomial(tf.log(probability_distribution), N)
# a possible output of that function, with N = 10, is:
[1, 1, 1, 1, 1, 2, 2, 2, 2, 3]
对于这些数字中的每一个,我都必须在子传感器中执行均匀采样。你知道吗
我能够计算每个子传感器的最大值。你知道吗
subtensor_sizes = tf.reduce_sum(tf.cast(A_mask, tf.int32), axis=1)
# it would return: [3, 3, 6]
此时,对于多项式函数返回的每个子传感器,我应该在0
与其maxvalue
之间执行统一采样(或者类似地,计算出现次数并从多项式输出中出现T
次的子传感器中采样T
个元素)。你知道吗
我不知道怎么处理,怎么办?你知道吗
所以有一个包含不同长度序列的张量
A
。您想要从这些序列中提取值,以不同的概率B
为每个序列选择一个值。你知道吗您可以按以下步骤进行:
相关问题 更多 >
编程相关推荐