Initial observation padding changes when source arrays are reused
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 85/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- numpy, python
- Bereich
- machine-learning
Rechercherichtung
Beginnen Sie mit dm_control/composer/observation/obs_buffer.py und dem Buffer-Padding-Pfad; führen Sie zuerst die NumPy-Reproduktion des Issues aus. Prüfen Sie die bestehende Behandlung regulär eingefügter Beobachtungen und den im Bericht beschriebenen Updater-Pfad. Verifizieren Sie anschließend, dass das initiale Padding unverändert bleibt, nachdem sich das Quellarray oder der Simulationszustand geändert hat, während Reihenfolge, Zero-Padding, Größen und spätere Beobachtungen intakt bleiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Reproduction
Initial-value observation padding retains a reference to the caller's array. Reusing that array changes the apparent initial observations, although normally inserted observations are copied.
import numpy as np
from dm_control.composer.observation.obs_buffer import Buffer
source = np.array([3., 7.])
buffer = Buffer(3, source.shape, source.dtype, pad_with_initial_value=True)
buffer.insert(timestamp=0, delay=0, value=source)
source[:] = -1
print(buffer.read(0))
# [[-1., -1.], [-1., -1.], [3., 7.]]
# Expected three copies of [3., 7.].
With a delayed first sample, all padding entries can change before that sample arrives. The same behavior occurs through the actual observation Updater when a Generic observable exposes physics.data.qpos: advancing MuJoCo rewrites padding intended to represent the initial state, including when mean aggregation is used.
Expected behavior
Snapshot the initial value before using it to fill the padding entries, consistently with regular inserted observations. Preserve arrival ordering, zero padding, buffer sizes, source data and subsequent observations.
Reproduced on main at a04e3e4cf56c12117d2294bb090f9acec21e5c67. The regression uses real buffer/updater code and a minimal native MuJoCo simulation, without rendering or trained agents.
- 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 3/5 1-2 Tage Anfängerfreundlichkeit 75/100
google-deepmind/dm_control#560 ·
-
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