Próbuję to zrobić

np.random.choice(a, 1, p=p)

Gdzie len(a) != len(p)

Czy mógłbyś wskazać mi w kierunku, gdzie szukać, jak zmienić rozmiar dystrybucji prawdopodobieństwa "P"? Ideą jest zachowanie tej samej dystrybucji, ale przez inną liczbę zmiennych.

EDYTOWAĆ: Zasadniczo to (https://en.wikipedia.org/wiki/cale_parameter), ale z dyskretnym zmienna.

Myślę, że interpolacja jest sposobem na przejście jak sugerowane przez Ryana Sandera. Używam sieci neuronowej, aby wyprowadzić dystrybucję polityki na przestrzeni działania środowiska. Próbuję trenować sieć w wielu środowiskach o różnych rozmiarach przestrzeni działania. Na przykład sieć wyprowadza rozkład na przestrzeni działania w zakresie rozmiaru 6 (akcje [0,1,2, ... 5], 6 liczb podsumowujących do 1) i próbuję spróbować tej dystrybucji na przestrzeni działania rozmiaru 9. lub na odwrót.

Problem z interpolacji jest to, że wartości, które nie otrzymuję, nie podsumowują do 1. Jeśli wykonuję Softmax na tych wartościach, dystrybucję, którą dostaję, nie ma tego samego kształtu (ISH) jako oryginał.

2
Igor Ciganovic 24 październik 2020, 17:41

1 odpowiedź

Najlepsza odpowiedź

Para sugestii:

  1. Jeśli chcesz "interpolować" dystrybucję prawdopodobieństwa na nowych wartościach, możesz to zrobić za pomocą np.interp, tj. Za pomocą poniższego przykładu:
# Set parameters for interpolation
xp = <VALS THAT P IS CURRENTLY OVER>
x = <VALS YOU WANT P TO BE OVER>

# Now interpolate
p_interp = numpy.interp(x, xp, p)
  1. Jeśli chcesz po prostu spróbować z tych samych zmiennych, jak wcześniej (tj. Użyj dokładnej rozkładu prawdopodobieństwa), możesz użyć np.pad. Prawdopodobnie będziesz chciał określić różne wartości dla lewej i prawej strony, w zależności od tego, gdzie są próbkowane wartości z w p pasują do wartości w A.
# Value to pad by (on both sides)
pad_width_left = 5   # Padding on lefthand side
pad_width_right = 3  # Padding on righthand side

# Now pad vector
p_padded_left = np.pad(p, pad_width_left)[:-pad_width_left]
p_padded_right = np.pad(p_padded_left, pad_width_right)[pad_width_right:]
1
Ryan Sander 25 październik 2020, 03:28