1.zip()
Fonctions
zip() La fonction est utilisée pour prendre un objet itérable comme paramètre,Emballer les éléments correspondants de l'objet en tuples,Puis renvoie l'objet composé de ces tuples,L'avantage est d'économiser beaucoup de mémoire.
On peut utiliser list() Convertir en liste de sortie.
Si le nombre d'éléments dans chaque Itérateur est incohérent,La longueur de la liste de retour est la même que celle de l'objet le plus court,Utilisation * Opérateur No.zipFonctions,Vous pouvez décompresser un Tuple dans une liste.
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # Renvoie un objet
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped) # list() Convertir en liste
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # Le nombre d'éléments correspond à la liste la plus courte
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a,b)) # Avec zip Au contraire.,zip(*) Peut être compris comme décompression,Renvoie la matrice bidimensionnelle
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>
https://www.runoob.com/python3/python3-func-zip.html
2.np.random.random()
Fonctions
Renvoie un 0-1Nombre aléatoire de
Lorsque les paramètres entrants sont retournés shapeParamètre0-1 Un tableau de nombres aléatoires de
3.numpy.random.randint()
Fonctions
numpy.random.randint(low, high=None, size=None, dtype='l')
La fonction est,Renvoie un entier aléatoire,La gamme va du bas(Y compris:)Vers le Haut(Non compris),C'est - à - dire:[low, high).
Si aucun paramètre n'est écrithighValeur de,Renvoie[0,low)Valeur de.
>>> np.random.randint(2, size=10)
array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0])
>>> np.random.randint(1, size=10)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> np.random.randint(5, size=(2, 4))
array([[4, 0, 2, 1],
[3, 2, 2, 0]])
>>>np.random.randint(2, high=10, size=(2,3))
array([[6, 8, 7],
[2, 5, 2]])
https://blog.csdn.net/u011851421/article/details/83544853
4.gather
Fonctions
gather La fonction peut être interprétée comme étant basée sur index Paramètres(C'est l'index) Renvoie la valeur de la position correspondante dans le tableau
Ici.b.gather()Rédaction ettorch.gather(b) Tout peut être écrit , L'accent est mis sur deux paramètres ,dimEtindex
Une façon de comprendre les dimensions inférieures
dim=0 Indique un index par ligne ,C'est - à - direindex La valeur de représente la ligne
dim=1 Indique un index par colonne ,Ça veut direindex La valeur de représente la colonne
5.torch.distributions.Categorical
probs = torch.FloatTensor([0.9,0.2])
ac = torch.distributions.Categorical(probs)
print(ac)
for _ in range(5):
print(ac.sample())
Sa fonction est de créer un paramètre probsPour la répartition standard des catégories,L'échantillon provient de“0,…,K-1”Un entier de,K- Oui.probsLongueur du paramètre.C'est - à - dire,SelonprobsLa probabilité de, Échantillonnage à l'endroit approprié , L'échantillon renvoie l'index entier de cet emplacement .
Regardez encore. rl Sélectionner l'action par le réseau de politique :
def take_action(self, state): # Échantillonnage aléatoire basé sur la distribution des probabilités d'action
state = torch.tensor([state], dtype=torch.float).to(self.device) # 1*4
probs = self.policy_net(state) # 1*2
action_dist = torch.distributions.Categorical(probs)
action = action_dist.sample()
return action.item()