Tensorflow 中,想要使用sequence to sequence 模型,在RNN的输出端采样(sampling),可以在softmax层之后,做简单的log p 再用tf.multinomial()来实现:
tf.multinomial(logits, num_samples, seed=None, name=None)
例如:
# samples has shape [1, 5], where each value is either 0 or 1 with equal
# probability.
samples = tf.multinomial(tf.log([[10., 10.]]), 5)
Args:
logits
: 2-D Tensor with shape[batch_size, num_classes]
. Each slice[i, :]
represents the unnormalized log probabilities for all classes.num_samples
: 0-D. Number of independent samples to draw for each row slice.seed
: A Python integer. Used to create a random seed for the distribution. Seetf.set_random_seed
for behavior.name
: Optional name for the operation.
Returns:
The drawn samples of shape [batch_size, num_samples]
.
Defined in tensorflow/python/ops/random_ops.py
.