BiGRU_T_version / src /bigru_t /multimodal /image_encoder.py
PowerMachine's picture
Upload folder using huggingface_hub
3275441 verified
Raw History Blame Contribute Delete
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"]