| 1542 | |
| 1543 | class TextImageProjection(nn.Module): |
| 1544 | def __init__( |
| 1545 | self, |
| 1546 | text_embed_dim: int = 1024, |
| 1547 | image_embed_dim: int = 768, |
| 1548 | cross_attention_dim: int = 768, |
| 1549 | num_image_text_embeds: int = 10, |
| 1550 | ): |
| 1551 | super().__init__() |
| 1552 | |
| 1553 | self.num_image_text_embeds = num_image_text_embeds |
| 1554 | self.image_embeds = nn.Linear(image_embed_dim, self.num_image_text_embeds * cross_attention_dim) |
| 1555 | self.text_proj = nn.Linear(text_embed_dim, cross_attention_dim) |
| 1556 | |
| 1557 | def forward(self, text_embeds: torch.Tensor, image_embeds: torch.Tensor): |
| 1558 | batch_size = text_embeds.shape[0] |