Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

VaeImageProcessor.denormalize() raises AttributeError for NumPy inputs

Abierto Apto para principiantes
#15,011 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@tonycoder-hub ya está trabajando en esto.

Desde el 12/10/2026.

  • #15012 de @tonycoder-hub — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
numpy, python, pytorch

Línea de trabajo

Lee src/diffusers/image_processor.py en VaeImageProcessor.denormalize() y comprueba los tipos de entrada documentados. Reproduce el fallo con el ejemplo de NumPy del issue y, después, revisa las pruebas cercanas del procesador de imágenes para comprobar la cobertura de entradas de NumPy y PyTorch. El trabajo estará terminado cuando una entrada de NumPy devuelva valores recortados en [0, 1] y conserve su tipo, mientras que el comportamiento existente de PyTorch siga funcionando.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug
Describe the bug

VaeImageProcessor.denormalize() is documented to accept both NumPy arrays (np.ndarray) and PyTorch tensors (torch.Tensor). However, passing a NumPy array raises an AttributeError because the implementation uses the PyTorch-specific .clamp() method.

Root cause

In src/diffusers/image_processor.py, line 234:

return (images * 0.5 + 0.5).clamp(0, 1)

NumPy arrays do not implement .clamp(), despite being included in the function's type annotations and documentation.

Expected behavior

The function should denormalize NumPy inputs to [0, 1], preserving the input type and existing PyTorch behavior.

Proposed direction

Use input-type-appropriate clipping, such as np.clip() for NumPy and .clamp() for PyTorch, or clarify the supported types if NumPy support is not intended.

I'd be happy to contribute a fix after discussing the preferred approach with maintainers.

Reproduction
import numpy as np
import torch
from diffusers.image_processor import VaeImageProcessor

values = [-2.0, -1.0, 0.0, 1.0, 2.0]

numpy_input = np.array(values, dtype=np.float32)
torch_input = torch.tensor(values, dtype=torch.float32)

# PyTorch succeeds
print("PyTorch:", VaeImageProcessor.denormalize(torch_input))

# NumPy raises AttributeError
print("NumPy:", VaeImageProcessor.denormalize(numpy_input))

The issue is reproducible on CPU without pretrained models or external downloads.

Logs
File "E:\diffusers\src\diffusers\image_processor.py", line 234, in denormalize
    return (images * 0.5 + 0.5).clamp(0, 1)
AttributeError: 'numpy.ndarray' object has no attribute 'clamp'. Did you mean: 'clip'?


Additional validation:


PyTorch actual: [0.0, 0.0, 0.5, 1.0, 1.0]
NumPy expected: [0.0, 0.0, 0.5, 1.0, 1.0]
Outputs match: True
System Info
  • 🤗 Diffusers version: 0.41.0.dev0
  • Platform: Windows-10-10.0.22631-SP0
  • Running on Google Colab?: No
  • Python version: 3.11.16
  • PyTorch version (GPU?): 2.14.1+cpu (False)
  • NumPy version: 2.4.6
  • Huggingface_hub version: 1.33.0
  • Transformers version: 5.18.0
  • Accelerate version: 1.15.0
  • PEFT version: 0.21.2
  • Safetensors version: 0.8.0

Source revision: 899c9f3fd0e64f3206781c00c71c28249eff9ca5

Reproduction environment: Windows, CPU only. No pretrained models or external downloads required.

Who can help?

@DN6 @sayakpaul

I'd appreciate your feedback on the expected NumPy support and the preferred approach to resolving this issue. I'm happy to contribute a fix once the implementation approach is agreed upon.

Lenguaje dominante
Python
Estrellas
34.7k
Forks
7.4k
Merge medio
2 d 10 h
PR fusionados (30 d)
55

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de huggingface/diffusers

Todos los issues de huggingface/diffusers

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.