Built-in observation aggregators drop bounds-preserving specifications
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 75/100
Rechercherichtung
Start by locating base.AGGREGATORS and Updater.observation_spec(), then reproduce the AttributeError and the bounded Generic observable case described in the issue. Check that min, max, mean and median retain scalar or per-element bounds while sum remains unbounded, without changing value, shape/dtype, custom-aggregator or unbounded-input behavior.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Reproduction
Built-in observation aggregators declare a bounds_reserving attribute, while Updater.observation_spec() reads preserves_bounds. Consequently, even min, max, mean and median are treated as having unknown bound behavior: the updater logs a warning and returns an unbounded Array instead of retaining a BoundedArray specification.
The problem is visible directly:
from dm_control.composer.observation.observable import base
assert base.AGGREGATORS['mean'].preserves_bounds is True
# AttributeError: functools.partial has no attribute preserves_bounds
A bounded Generic observable reduced with the built-in mean loses its limits through the actual Updater. Returned values remain in bounds, but the resulting specification no longer rejects out-of-bounds inputs.
Expected behavior
Use the attribute name already documented and consumed by Updater. The four bounds-preserving reducers should retain scalar or per-element limits, while sum must remain unbounded. Preserve reduced values, shape/dtype inference, custom-aggregator behavior and unbounded inputs.
Reproduced on main at a04e3e4cf56c12117d2294bb090f9acec21e5c67, including a native MuJoCo observation sequence. No renderer, external services or model inference is needed.
- Vorherrschende Sprache
- Python
- Sterne
- 4.7k
- Forks
- 765
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus google-deepmind/dm_control
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
google-deepmind/dm_control#559 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 74/100
google-deepmind/dm_control#557 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 76/100
google-deepmind/dm_control#552 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
google-deepmind/dm_control#540 · 1 Kommentar ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
google-deepmind/dm_control#537 · 1 Kommentar ·
Alle Issues in google-deepmind/dm_control
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
PedestrianDynamics/pyFDS-Evac#343 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
theskumar/python-dotenv#708 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Docs Timedelta
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
pandas-dev/pandas#69919 ·
Maintainer antworten meist innerhalb von 1 Tag
-
API documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
zephyrproject-rtos/west#1009 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 3 Tagen