def get_mixture_coef(output, KMIX=24, OUTPUTDIM=1):
out_pi = tf.placeholder(dtype=tf.float32, shape=[None,KMIX], name="mixparam")
out_sigma = tf.placeholder(dtype=tf.float32, shape=[None,KMIX], name="mixparam")
out_mu = tf.placeholder(dtype=tf.float32, shape=[None,KMIX*OUTPUTDIM], name="mixparam")
splits = tf.split(1, 2 + OUTPUTDIM, output)
out_pi = splits[0]
out_sigma = splits[1]
out_mu = tf.pack(splits[2:], axis=2)
out_mu = tf.transpose(out_mu, [1,0,2])
# use softmax to normalize pi into prob distribution
max_pi = tf.reduce_max(out_pi, 1, keep_dims=True)
out_pi = tf.sub(out_pi, max_pi)
out_pi = tf.exp(out_pi)
normalize_pi = tf.inv(tf.reduce_sum(out_pi, 1, keep_dims=True))
out_pi = tf.mul(normalize_pi, out_pi)
# use exponential to make sure sigma is positive
out_sigma = tf.exp(out_sigma)
return out_pi, out_sigma, out_mu
评论列表
文章目录