Initial observation padding changes when source arrays are reused
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 85/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- numpy, python
- Domínio
- machine-learning
Direção de pesquisa
Comece por dm_control/composer/observation/obs_buffer.py e pelo caminho de padding de Buffer; execute primeiro a reprodução em NumPy do issue. Verifique o tratamento existente das observações inseridas normalmente e o caminho do updater descrito no relatório; em seguida, confirme que o padding inicial permanece inalterado depois que o array de origem ou o estado da simulação muda, enquanto a ordenação, o zero padding, os tamanhos e as observações posteriores permanecem intactos.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Python
- Estrelas
- 4.7k
- Forks
- 768
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de google-deepmind/dm_control
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 75/100
google-deepmind/dm_control#560 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 74/100
google-deepmind/dm_control#557 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 76/100
google-deepmind/dm_control#552 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
google-deepmind/dm_control#540 · 1 comentário ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
google-deepmind/dm_control#537 · 1 comentário ·
Todas as issues de google-deepmind/dm_control
Issues semelhantes
-
bug server
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
sportsdataverse/sportsdataverse-py#641 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
googleapis/google-cloud-python#18532 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia