# UNet1DModel

El modelo [UNet](https://huggingface.co/papers/1505.04597) fue introducido originalmente por Ronneberger et al. para la segmentación de imágenes biomédicas, pero también se utiliza comúnmente en 🤗 Diffusers porque genera imágenes del mismo tamaño que la entrada. Es uno de los componentes más importantes de un sistema de difusión, ya que facilita el proceso de difusión propiamente dicho. Existen varias variantes del modelo UNet en 🤗 Diffusers, dependiendo de su número de dimensiones y de si es un modelo condicional o no. Este es un modelo UNet de 1D.

El resumen del artículo es:

*Existe un amplio consenso de que el entrenamiento exitoso de redes profundas requiere miles de muestras de entrenamiento anotadas. En este artículo, presentamos una red y una estrategia de entrenamiento que se basa en el uso intensivo de aumentación de datos para utilizar las muestras anotadas disponibles de manera más eficiente. La arquitectura consiste en una ruta contractiva para capturar el contexto y una ruta expansiva simétrica que permite una localización precisa. Demostramos que una red de este tipo puede entrenarse de extremo a extremo a partir de muy pocas imágenes y supera al mejor método anterior (una red convolucional de ventana deslizante) en el desafío ISBI para la segmentación de estructuras neuronales en pilas de microscopía electrónica. Utilizando la misma red entrenada con imágenes de microscopía de luz transmitida (contraste de fase y DIC), ganamos el desafío de seguimiento celular ISBI 2015 en estas categorías por un amplio margen. Además, la red es rápida. La segmentación de una imagen de 512x512 toma menos de un segundo en una GPU reciente. La implementación completa (basada en Caffe) y las redes entrenadas están disponibles en http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.*

## UNet1DModel[[diffusers.UNet1DModel]]

#### diffusers.UNet1DModel[[diffusers.UNet1DModel]]

```python
diffusers.UNet1DModel(sample_size: int = 65536, sample_rate: int | None = None, in_channels: int = 2, out_channels: int = 2, extra_in_channels: int = 0, time_embedding_type: str = 'fourier', time_embedding_dim: int | None = None, flip_sin_to_cos: bool = True, use_timestep_embedding: bool = False, freq_shift: float = 0.0, down_block_types: tuple[str, ...] = ('DownBlock1DNoSkip', 'DownBlock1D', 'AttnDownBlock1D'), up_block_types: tuple[str, ...] = ('AttnUpBlock1D', 'UpBlock1D', 'UpBlock1DNoSkip'), mid_block_type: str = 'UNetMidBlock1D', out_block_type: str = None, block_out_channels: tuple[int, ...] = (32, 32, 64), act_fn: str = None, norm_num_groups: int = 8, layers_per_block: int = 1, downsample_each_block: bool = False)
```

[Fuente](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/unet_1d.py#L40)

**Parámetros:**

sample_size (`int`, *opcional*) : Longitud predeterminada de la muestra. Debe ser adaptable en tiempo de ejecución.

in_channels (`int`, *opcional*, valor predeterminado 2) : Número de canales en la muestra de entrada.

out_channels (`int`, *opcional*, valor predeterminado 2) : Número de canales en la salida.

extra_in_channels (`int`, *opcional*, valor predeterminado 0) : Número de canales adicionales que se añadirán a la entrada del primer bloque de reducción. Útil para casos en los que los datos de entrada tienen más canales de los que el modelo fue diseñado inicialmente.

time_embedding_type (`str`, *opcional*, por defecto `"fourier"`) : Tipo de incrustación temporal a utilizar.

freq_shift (`float`, *opcional*, valor predeterminado 0.0) : Desplazamiento de frecuencia para la incrustación temporal de Fourier.

flip_sin_to_cos (`bool`, *opcional*, valor predeterminado `False`) : Si se debe cambiar sin a cos para la incrustación temporal de Fourier.

down_block_types (`tuple[str]`, *opcional*, por defecto `("DownBlock1DNoSkip", "DownBlock1D", "AttnDownBlock1D")`) : tupla de tipos de bloques de muestreo descendente.

up_block_types (`tuple[str]`, *opcional*, por defecto `("AttnUpBlock1D", "UpBlock1D", "UpBlock1DNoSkip")`) : tupla de tipos de bloques de submuestreo ascendente.

block_out_channels (`tuple[int]`, *opcional*, valor predeterminado `(32, 32, 64)`) : tupla de canales de salida de bloque.

mid_block_type (`str`, *opcional*, valor predeterminado `"UNetMidBlock1D"`) : Tipo de bloque para la parte central de UNet.

out_block_type (`str`, *opcional*, valor predeterminado `None`) : Bloque de procesamiento de salida opcional de UNet.

act_fn (`str`, *opcional*, valor predeterminado `None`) : Función de activación opcional en los bloques de UNet.

norm_num_groups (`int`, *opcional*, valor predeterminado 8) : El número de grupos para la normalización.

layers_per_block (`int`, *opcional*, valor predeterminado 1) : El número de capas por bloque.

downsample_each_block (`int`, *opcional*, valor predeterminado `False`) : Función experimental para usar un UNet sin remuestreo ascendente.

Un modelo UNet 1D que toma una muestra con ruido y un paso de tiempo y devuelve una salida con forma de muestra.

Este modelo hereda de [ModelMixin](/docs/diffusers/v0.43.0/es/api/models/overview#diffusers.ModelMixin). Consulta la documentación de la superclase para sus métodos genéricos implementados para todos los modelos (como la descarga o el guardado).

#### forward[[diffusers.UNet1DModel.forward]]

```python
forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], return_dict: bool = True)
```

[Fuente](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/unet_1d.py#L205)

**Parámetros:**

sample (`torch.Tensor`) : El tensor de entrada con ruido con la siguiente forma `(batch_size, num_channels, sample_size)`.

timestep (`torch.Tensor` o `float` o `int`) : El número de pasos de tiempo para desruidar una entrada.

return_dict (`bool`, *opcional*, valor predeterminado `True`) : Indica si se debe devolver un [UNet1DOutput](/docs/diffusers/v0.43.0/es/api/models/unet#diffusers.models.unets.unet_1d.UNet1DOutput) en lugar de una tupla simple.

**Devuelve:** [UNet1DOutput](/docs/diffusers/v0.43.0/es/api/models/unet#diffusers.models.unets.unet_1d.UNet1DOutput) o `tuple`

Si `return_dict` es True, se devuelve un [UNet1DOutput](/docs/diffusers/v0.43.0/es/api/models/unet#diffusers.models.unets.unet_1d.UNet1DOutput); en caso contrario, se devuelve una `tuple` cuyo primer elemento es el tensor de la muestra.

El método forward de [UNet1DModel](/docs/diffusers/v0.43.0/es/api/models/unet#diffusers.UNet1DModel).

## UNet1DOutput[[diffusers.models.unets.unet_1d.UNet1DOutput]]

#### diffusers.models.unets.unet_1d.UNet1DOutput[[diffusers.models.unets.unet_1d.UNet1DOutput]]

```python
diffusers.models.unets.unet_1d.UNet1DOutput(sample: Tensor)
```

[Fuente](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/unet_1d.py#L28)

**Parámetros:**

sample (`torch.Tensor` de forma `(batch_size, num_channels, sample_size)`) : Los estados ocultos de salida de la última capa del modelo.

La salida de [UNet1DModel](/docs/diffusers/v0.43.0/es/api/models/unet#diffusers.UNet1DModel).

