-
Notifications
You must be signed in to change notification settings - Fork 0
Adicionei a policy act-language #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
Achei muito massa que você usou do type system do python, ajuda muito na hora de fazer manutenções. Revi o código e anotei possíveis melhorias: 1. Uso correto do decorador torch.no_grad
@torch.no_grad()
def some_fn() -> Tensor:
pass
2. Uso correto do Type System
from typing import Optional
variavel: Optional[int] = None
3. Docstrings padronizadas nos métodosdef process_data(self, data: list[float], normalize: bool = True) -> np.ndarray:
"""Processa e transforma dados de entrada em um formato padronizado.
Args:
data: Lista de valores numéricos para processamento.
normalize: Se True, normaliza os valores entre 0 e 1.
Returns:
Array NumPy contendo os dados processados.
Raises:
ValueError: Se a lista de entrada estiver vazia.
"""
pass
4. Nomes de variáveis auto-explicativos
q = k = x if pos_embed is None else x + pos_embed
query = key = input_tensor if pos_embed is None else input_tensor + pos_embed
5. Evitar código repetitivo (princípio DRY - Don't Repeat Yourself)
if self.pre_norm:
x = self.norm1(x)
# código...
else:
# código...
if not self.pre_norm:
x = self.norm2(x)
def _apply_normalization(self, x: Tensor, norm_layer, pre_norm: bool) -> Tensor:
if pre_norm:
return norm_layer(x)
return x
def _apply_post_normalization(self, x: Tensor, norm_layer, pre_norm: bool) -> Tensor:
if not pre_norm:
return norm_layer(x)
return x
6. Funções Focadas: Uma Responsabilidade por Vez
# Antes: Método excessivamente longo com múltiplas responsabilidades
def forward(self, x: Tensor, encoder_out: Tensor, decoder_pos_embed: Optional[Tensor] = None,
encoder_pos_embed: Optional[Tensor] = None) -> Tensor:
# 30+ linhas de código realizando self-attention, cross-attention, normalização e feed-forward
# ...
return x
def forward(self, x: Tensor, encoder_out: Tensor, decoder_pos_embed: Optional[Tensor] = None,
encoder_pos_embed: Optional[Tensor] = None) -> Tensor:
"""Processa a entrada através do bloco decoder.
Args:
x: Tensor de entrada.
encoder_out: Saída do encoder.
decoder_pos_embed: Embedding posicional opcional para o decoder.
encoder_pos_embed: Embedding posicional opcional para o encoder.
Returns:
Tensor processado.
"""
x = self._apply_self_attention(x, decoder_pos_embed)
x = self._apply_cross_attention(x, encoder_out, encoder_pos_embed)
return self._apply_feed_forward(x)
def _apply_self_attention(self, x: Tensor, pos_embed: Optional[Tensor] = None) -> Tensor:
"""Aplica mecanismo de self-attention."""
# 8-10 linhas específicas para self-attention
return x
def _apply_cross_attention(self, x: Tensor, encoder_out: Tensor,
pos_embed: Optional[Tensor] = None) -> Tensor:
"""Aplica mecanismo de cross-attention entre decoder e encoder."""
# 8-10 linhas específicas para cross-attention
return x
def _apply_feed_forward(self, x: Tensor) -> Tensor:
"""Aplica rede feed-forward."""
# 5-8 linhas específicas para feed-forward
return x
|
|
Eu estou terminando de melhorar o código nesses pontos, mas encontrei alguns problemas quando rodo as simulações como pusht, e vou tentar resolvê-los antes de fazer outro commit. |
Esse pull request adiciona a policy act-language