Esse código treina um modelo de linguagem no nível do caractere usando uma variante de uma arquitetura de rede neural convolucional chamada Hyena. O modelo treinado pode ser usado para gerar texto aleatório, dada uma corda de semente.
Para executar este código, você precisa ter o Python 3 e os seguintes pacotes instalados:
Você pode instalar esses pacotes executando pip install -r requirements.txt .
Para treinar o modelo, execute train_hyena_model() com os seguintes parâmetros:
text_file : caminho para um arquivo de texto usado para treinar o modelo.input_dim : o número de caracteres para alimentar o modelo de uma só vez.output_dim : o número de classes de saída (caracteres) do modelo.filter_size : o tamanho dos filtros convolucionais usados no modelo.depth : o número de filtros convolucionais no modelo.positional_dim : a dimensionalidade da saída da camada convolucional.lr : A taxa de aprendizado usada durante a otimização.num_epochs : o número de épocas para treinar o modelo.A função retorna o modelo treinado, uma lista de caracteres no vocabulário e um dicionário que mapeia os personagens de seus índices no vocabulário.
Para gerar texto aleatório usando o modelo treinado, RUN generate_text() com os seguintes parâmetros:
model : o modelo treinado.seed_text : A sequência de sementes usada para iniciar a geração de texto.length : o comprimento do texto a ser gerado.char_to_idx : o dicionário que mapeia os personagens de seus índices no vocabulário.idx_to_char : o dicionário que mapeia os índices no vocabulário dos caracteres.vocab : O número de personagens no vocabulário. Você pode executar o código de exemplo em main() para treinar o modelo em um texto gerado aleatoriamente e gerar texto aleatório, dada uma string de semente.
text fornecido e seq_len .
text (string): texto de entrada.seq_len (int): comprimento da sequência. __len__() : retorna o comprimento do conjunto de dados.
__getitem__(index) : retorna o tensor da sequência e do destino no index fornecido.
index (INT): índice da sequência.input_dim (int): dimensão de entrada.output_dim (int): dimensão de saída.filter_size (int): tamanho do filtro para convolução.depth (int): profundidade do modelo.positional_dim (int): dimensão posicional do modelo. forward(x) : calcula o passe direto do modelo Hyena com o tensor de entrada fornecido x .
x (tensor): tensor de entrada.train_hyena_model(text_file, input_dim, filter_size, depth, positional_dim, lr, num_epochs, batch_size=128) : treina o modelo hiena com os parâmetros fornecidos e retorna o modelo treinado, a lista de caracteres e o caractere de caracteres.text_file (String): Caminho do arquivo de texto de entrada.input_dim (int): dimensão de entrada.filter_size (int): tamanho do filtro para convolução.depth (int): profundidade do modelo.positional_dim (int): dimensão posicional do modelo.lr (flutuação): taxa de aprendizado.num_epochs (int): Número de épocas.batch_size (int): tamanho do lotegenerate_text(model, seed_text, length, char_to_idx, idx_to_char, vocab) : gera texto usando o modelo hiena treinado com os parâmetros fornecidos.model (Hiena): modelo de hiena treinada.seed_text (String): Texto de semente.length (int): Comprimento do texto gerado.char_to_idx (ditado): dicionário de personagem para índice.idx_to_char (ditado): dicionário de índice para caracteres.vocab (int): tamanho do vocabulário.input_dim (int): dimensão de entradamain() : executa a função principal que gera texto aleatório, treina o modelo Hyena e gera texto usando o modelo treinado.Este código é inspirado nos papéis
Por Nal Kalchbrenner, Edward Grefenstette e Phil Blunsom.
Por: Michael Poli, Stefano Massaroli, Eric Nguyen, Daniel Y. Fu, Tri Dao, Stephen Baccus, Yoshua Bengio, Stefano Ermon, Christopher Ré
Afiliações: