【问题标题】:Calculate Average state from a probability distribution in Tensorflow根据 Tensorflow 中的概率分布计算平均状态
【发布时间】:2017-05-30 18:42:00
【问题描述】:

我有 3 个状态(即状态是一个向量,在这个例子中向量长度是 2),我有概率分布(例如 10% 状态 1、60% 状态 2、30% 状态 3)。我想推导出一个新状态,它是概率 * 状态的总和。当然,我也需要考虑批处理。

1> 计算概率分布,我有一批4,3种可能性,分布定义如下。

dist = tf.constant([[0.1, 0.6, 0.3], [0.2, 0.4, 0.4], [0.3, 0.5, 0.2], [0.3, 0.6, 0.1]])

2> 3 种可能的状态(和 4 批)。这是一个形状为 [4, 3, 2] 或 [batch, 3 possible state, state values] 的张量

val = tf.constant([[[10.0, 5.0],[10, 5],[10,5]],[[8, 2],[8, 2],[8, 2]],[[7, 3],[9, 1],[6, 4]],[[1, 2],[3, 4],[5, 6]]])

我想获得 [4, 2] 或 [batch, state values] 的张量。在这种情况下,值应该是

[
  [10*0.1 + 10*0.6 + 10*0.3, 5*0.1 + 5*0.6 + 5*0.3],
  [8*0.2 + 8*0.4 + 8*0.4, 2*0.2 + 2*0.4 + 2*0.4],
  [7*0.3 + 9*0.5 + 6*0.2, 3*0.3 + 1*0.5 + 4*0.2],
  [1*0.3 + 3*0.6 + 5*0.1, 2*0.3 + 4*0.6 + 6*0.1]
]

[
  [10, 5],
  [8, 2],
  [7.8, 2.2],
  [2.6, 3.6]
]

我怎么能这样做?谢谢!

【问题讨论】:

    标签: tensorflow softmax tensor


    【解决方案1】:

    这是我发现的。结果证明是简单的元素乘法(* 或 tf.multiply)

    dist = tf.constant([[0.1, 0.6, 0.3], [0.2, 0.4, 0.4], [0.3, 0.5, 0.2], [0.3, 0.6, 0.1]])
    val = tf.constant([[[10.0, 5.0],[10, 5],[10,5]],[[8, 2],[8, 2],[8, 2]],[[7, 3],[9, 1],[6, 4]],[[1, 2],[3, 4],[5, 6]]])
    dist.get_shape()
       TensorShape([Dimension(4), Dimension(3)])
    val.get_shape()
       TensorShape([Dimension(4), Dimension(3), Dimension(2)])
    val2 = tf.transpose(val, perm=[0, 2, 1])
    val2.get_shape()
       TensorShape([Dimension(4), Dimension(2), Dimension(3)])
    dist2 = tf.expand_dims(dist, 1)
    dist2.get_shape()
       TensorShape([Dimension(4), Dimension(1), Dimension(3)])
    c1 = val2 * dist2
    c1.get_shape()
       TensorShape([Dimension(4), Dimension(2), Dimension(3)])
    c2 = tf.reduce_sum(c1, 2)
    
    print(c2.eval())
    [[ 10.           5.        ]
     [  8.           2.        ]
     [  7.80000019   2.20000005]
     [  2.60000014   3.5999999 ]]
    

    【讨论】:

      猜你喜欢
      • 2019-02-26
      • 2011-09-30
      • 2023-03-15
      • 2013-03-21
      • 1970-01-01
      • 2021-05-28
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多