Удовлетворяет ли ваш запрос tf.contrib.distributions.Categorical? Выборки должны быть от (0 до n - 1), где n представляет категорию.
Пример:
# logits имеет форму [N, M], где M - количество классов
dist = tf.contrib.distributions.Categorical (logits = logits)
# Образец 20 раз. Должен придать форму [20, Н].
samples = dist.sample (20)
# глубина - количество категорий.
one_hots = tf.one_hot (сэмплы, глубина = M)