Skip to content

Commit 520fe93

Browse files
DeepMind Technologies Ltdlanctot
authored andcommitted
Fix numpy incompatibility change for PSRO's joint to marginal probability function. See chat in #1148
Fixes: #1148. PiperOrigin-RevId: 600726087 Change-Id: If5252c931874283f5fea4acb7885f90d4c83f8c0
1 parent 5fb7522 commit 520fe93

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

open_spiel/python/algorithms/psro_v2/meta_strategies.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -95,21 +95,18 @@ def renormalize(probabilities):
9595

9696

9797
def get_joint_strategy_from_marginals(probabilities):
98-
"""Returns a joint strategy matrix from a list of marginals.
98+
"""Returns a joint strategy tensor from a list of marginals.
9999
100100
Args:
101101
probabilities: list of probabilities.
102102
103103
Returns:
104-
A joint strategy from a list of marginals.
104+
A flat joint strategy from a list of marginals.
105105
"""
106-
probas = []
107-
for i in range(len(probabilities)):
108-
probas_shapes = [1] * len(probabilities)
109-
probas_shapes[i] = -1
110-
probas.append(probabilities[i].reshape(*probas_shapes))
111-
result = np.prod(probas)
112-
return result.reshape(-1)
106+
res = np.ones((1,), dtype=np.float64)
107+
for prob in probabilities:
108+
res = res[..., None] @ np.asarray(prob).reshape((1,) * res.ndim + (-1,))
109+
return res.reshape(-1)
113110

114111

115112
def nash_strategy(solver, return_joint=False):

0 commit comments

Comments
 (0)