2016-12-13 23 views
12

Czy istnieje odpowiednik funkcji numpy losowego wyboru w Tensorflow. W numpy możemy uzyskać losowo wybrany przedmiot z podanej listy wraz z jego wagą.numpy losowy wybór w Tensorflow

np.random.choice([1,2,3,5], 1, p=[0.1, 0, 0.3, 0.6, 0]) 

Ten kod wybierze pozycję z podanej listy z wagą p.

Odpowiedz

9

Nie, ale można osiągnąć ten sam rezultat używając tf.multinomial:

elems = tf.convert_to_tensor([1,2,3,5]) 
samples = tf.multinomial(tf.log([[1, 0, 0.3, 0.6]]), 1) # note log-prob 
elems[tf.cast(samples[0][0], tf.int32)].eval() 
Out: 1 
elems[tf.cast(samples[0][0], tf.int32)].eval() 
Out: 5 

[0][0] część jest tutaj, jak multinomial oczekuje rząd prawdopodobieństw dla każdego elementu partii i ma również inny wymiar dla numeru próbek.

+0

Bardzo dziękuję :) – seleucia

+0

Jak można to rozszerzyć na przypadek (i) dynamicznych tensorów, których kształt można wywnioskować tylko podczas wykonywania i (ii) równego prawdopodobieństwa selekcji dla każdego elementu w tym tensorze? – user1050648