Team Ai
Apppublic

radames/Text2Human-API

sourceHugging Faceupdated 3y agoView on Hugging Face
1likes
shape_attr_embedding_arch.py36 linesDownload Raw Back to archs
1import torch2import torch.nn.functional as F3from torch import nn4 5 6class ShapeAttrEmbedding(nn.Module):7 8    def __init__(self, dim, out_dim, cls_num_list):9        super(ShapeAttrEmbedding, self).__init__()10 11        for idx, cls_num in enumerate(cls_num_list):12            setattr(13                self, f'attr_{idx}',14                nn.Sequential(15                    nn.Linear(cls_num, dim), nn.LeakyReLU(),16                    nn.Linear(dim, dim)))17        self.cls_num_list = cls_num_list18        self.attr_num = len(cls_num_list)19        self.fusion = nn.Sequential(20            nn.Linear(dim * self.attr_num, out_dim), nn.LeakyReLU(),21            nn.Linear(out_dim, out_dim))22 23    def forward(self, attr):24        attr_embedding_list = []25        for idx in range(self.attr_num):26            attr_embed_fc = getattr(self, f'attr_{idx}')27            attr_embedding_list.append(28                attr_embed_fc(29                    F.one_hot(30                        attr[:, idx],31                        num_classes=self.cls_num_list[idx]).to(torch.float32)))32        attr_embedding = torch.cat(attr_embedding_list, dim=1)33        attr_embedding = self.fusion(attr_embedding)34 35        return attr_embedding36