Download src/bigru_t/multimodal/image_encoder.py from PowerMachine/BiGRU_T_version: direct link, hf CLI and curl.
- Browser
- Download file 909 Bytes
-
https://huggingface.co/PowerMachine/BiGRU_T_version/resolve/main/src/bigru_t/multimodal/image_encoder.py
- Command line
-
hf download hf://PowerMachine/BiGRU_T_version/src/bigru_t/multimodal/image_encoder.py
-
curl -L -o image_encoder.py https://huggingface.co/PowerMachine/BiGRU_T_version/resolve/main/src/bigru_t/multimodal/image_encoder.py
909 Bytes
| """Xavante - image_encoder.py - Encoder de imagem (Teorema 16.1/16.2).""" | |
| from __future__ import annotations | |
| import logging | |
| import torch | |
| import torch.nn as nn | |
| logger = logging.getLogger(__name__) | |
| class ImageEncoder(nn.Module): | |
| """CNN leve -> features em d_model.""" | |
| def __init__(self, d_model: int = 512, in_channels: int = 3): | |
| super().__init__() | |
| self.conv = nn.Sequential( | |
| nn.Conv2d(in_channels, 32, 4, 2, 1), | |
| nn.GELU(), | |
| nn.Conv2d(32, 64, 4, 2, 1), | |
| nn.GELU(), | |
| nn.Conv2d(64, 128, 4, 2, 1), | |
| nn.GELU(), | |
| nn.AdaptiveAvgPool2d((1, 1)), | |
| ) | |
| self.proj = nn.Linear(128, d_model) | |
| def forward(self, x: torch.Tensor) -> torch.Tensor: | |
| # x: [B, C, H, W] | |
| feat = self.conv(x).flatten(1) # [B, 128] | |
| return self.proj(feat) # [B, d_model] | |
| __all__ = ["ImageEncoder"] | |