ReservoirPy (v0.3.12) ??
Código simples e flexível para arquiteturas de computação de reservatórios como Echo State Networks (ESN).
Notícias emocionantes! Acabamos de lançar uma nova ferramenta beta baseada em um modelo de linguagem grande! Você pode conversar com nosso "ReservoirChat" e perguntar qualquer coisa sobre Computação de Reservatórios ou codificação de reservatórios! ? Não perca, está disponível por tempo limitado! ⏳ https://chat.reservoirpy.inria.fr
from reservatóriopy.nodes import Reservatório, Ridge, Inputdata = Input(input_dim=1)reservoir = Reservoir(100, lr=0.3, sr=1.1)readout = Ridge(ridge=1e-6)esn = data >> reservatório >> readoutforecast = esn.fit(X, y).run(série temporal)
ReservoirPy é uma biblioteca simples e amigável baseada em módulos científicos Python. Ele fornece uma interface flexível para implementar arquiteturas eficientes de Computação de Reservatório (RC), com foco particular em Echo State Networks (ESN). Os recursos avançados do ReservoirPy permitem melhorar a eficiência do tempo de computação em um laptop simples em comparação com a implementação básica do Python, com conjuntos de dados de qualquer tamanho.
Algumas de suas características são: treinamento offline e online , implementação paralela , computação de matrizes esparsas , inicialização espectral rápida, regras de aprendizagem avançadas (ex. Plasticidade Intrínseca ) etc. Também torna possível criar facilmente arquiteturas complexas com múltiplos reservatórios (ex. reservatórios profundos ), leituras e ciclos de feedback complexos . Além disso, ferramentas gráficas estão incluídas para explorar facilmente os hiperparâmetros com a ajuda da biblioteca hyperopt . Por fim, inclui vários tutoriais explorando arquiteturas exóticas e exemplos de reprodução de artigos científicos.
Esta biblioteca funciona para Python 3.8 e superior.
Siga as atualizações e novos lançamentos do @reservoirpy no Twitter.
Consulte a documentação oficial do ReservoirPy para saber mais sobre os principais recursos do ReservoirPy, sua API e o processo de instalação. Ou você pode acessar diretamente o Guia do Usuário com tutoriais.
pip instalar reservatóriopy
(Veja abaixo para opções de instalação mais avançadas)
Etapa 1: carregar o conjunto de dados
ReservoirPy vem com um gerador de dados útil capaz de criar séries temporais sintéticas para tarefas conhecidas, como previsão de séries temporais Mackey-Glass.
de reservatóriopy.datasets importar mackey_glassX = mackey_glass(n_timesteps=2000)
Etapa 2: Crie uma rede Echo State...
...ou qualquer tipo de modelo que você queira usar para resolver sua tarefa. Neste caso de uso simples, testaremos Echo State Networks (ESNs), uma das arquiteturas mais minimalistas de máquinas de computação de reservatório.
Um ESN é feito de um reservatório , uma rede recorrente aleatória usada para codificar nossas entradas em um espaço de alta dimensão (não linear), e um readout , uma simples camada feed-forward de neurônios responsável pela leitura da saída desejada. das ativações do reservatório.
de reservatóriopy.nodes import Reservatório, Ridgereservoir = Reservatório (unidades = 100, lr = 0,3, sr = 1,25) leitura = Ridge (output_dim = 1, cume = 1e-5)
Obtemos aqui um reservatório com 100 neurônios, raio espectral de 1,25 e taxa de vazamento de 0,3 (você pode aprender mais sobre esses hiperparâmetros no tutorial Entenda e otimize hiperparâmetros). Aqui, nossa camada de leitura é apenas uma unidade, onde receberemos conexões de (todas as unidades) do reservatório. Observe que apenas as conexões da camada de leitura são treinadas. Esta é uma das bases de todas as técnicas de computação de reservatórios. No nosso caso, treinaremos essas conexões por meio de regressão linear, com coeficiente de regularização de 10 -5 .
Agora, vamos conectar tudo usando o operador >>
.
esn = reservatório >> leitura
É isso! Próximo passo: ajustar os pesos de leitura para realizar a tarefa que desejamos. Treinaremos o ESN para fazer previsões um passo à frente de nossas séries temporais.
Etapa 3: ajuste e execute o ESN
Treinamos nosso ESN nos primeiros 500 passos de tempo da série temporal, com 100 passos usados para aquecer os estados do reservatório.
esn.fit(X[:500], X[1:501], aquecimento=100)
Nosso ESN agora está treinado e pronto para uso. Vamos executá-lo no restante da série temporal:
previsões = esn.run(X[501:-1])
Como atalho, ambas as operações podem ser realizadas em apenas uma linha!
previsões = esn.fit(X[:500], X[1:501]).run(X[501:-1])
Vamos agora avaliar seu desempenho.
Etapa 4: avaliar o ESN
de reservatóriopy.observables import rmse, rsquareprint("RMSE:", rmse(X[502:], previsões), "pontuação R^2:", rsquare(X[502:], previsões))
Execute e analise este arquivo simples (na pasta "tutoriais/Exemplos Simples com Mackey-Glass") para ver um exemplo completo de previsão de série temporal com ESNs:
simple_example_MackeyGlass.py (usando a classe ESN)
python simple_example_MackeyGlass.py
Se você tiver problemas ao testar alguns exemplos, dê uma olhada nos requisitos de pacotes estendidos em ReadTheDocs.
Para instalá-lo, use um dos seguintes comandos:
pip instalar reservatóriopy
ou
pip instalar reservatóriopy==0.3.12
Se você deseja executar os Python Notebooks da pasta tutoriais , instale os pacotes no arquivo de requisitos (aviso: isso pode fazer o downgrade da versão do hyperopt instalada):
pip install -r tutoriais/requisitos.txt
Se quiser usar a versão anterior 0.2.4, você pode instalar o ReservoirPy usando:
pip instalar reservatóriopy==0.2.4
Se você deseja habilitar o pacote hyper
e seus auxiliares de otimização de hiperparâmetros usando hyperopt, use:
pip instalar reservatóriopy[hiper]
Vá para a pasta tutorial para tutoriais em Jupyter Notebooks.
Vá para a pasta de exemplos para exemplos e artigos com códigos, também em Jupyter Notebooks.
O tutorial para ReservoirPy (v0.2) pode ser encontrado neste artigo (Trouvain et al. 2020).
Um rápido tutorial sobre como explorar hiperparâmetros com ReservoirPy e Hyperopt pode ser encontrado neste artigo (Trouvain et al. 2020).
Dê uma olhada em nossos conselhos e nosso método para explorar hiperparâmetros para reservatórios em nosso artigo recente: (Hinaut et al 2021) HTML HAL
Tutorial e Jupyter Notebook para exploração de hiperparâmetros
Mais informações sobre hyperopt: Site oficial
Se você deseja que seu artigo apareça aqui, entre em contato conosco (veja link de contato abaixo).
Leger et al. (2024) Reservatórios em evolução para aprendizagem por meta-reforço. Código EvoAPPS 2024 HAL PDF
Chaix-Eichel et al. (2022) Da aprendizagem implícita às representações explícitas. Pré-impressão do arXiv arXiv:2204.02484. arXiv PDF
Trouvain & Hinaut (2021) Canary Song Decoder: Transdução e segmentação implícita com ESNs e LTSMs. PDF HAL HTML da ICANN 2021
Pagliarini et al. (2021) Modelo Sensorimotor Vocal Canário com Decodificador RNN e Gerador GAN de Baixa Dimensão. ICDL 2021.HTML
Pagliarini et al. (2021) O que diz o Canário? GAN de baixa dimensão aplicado ao canto dos pássaros. Pré-impressão HAL. HAL PDF
Qual hype para minha nova tarefa? Dicas e pesquisa aleatória de hiperparâmetros de redes Echo State. PDF HAL HTML da ICANN 2021
Se você tiver alguma dúvida sobre a biblioteca, abra um problema. Se você tiver perguntas ou comentários mais gerais, pode entrar em contato conosco no Twitter ou por e-mail para xavier dot hinaut the-famous-home-symbol inria dot fr.
Trouvain, N., Pedrelli, L., Dinh, TT, Hinaut, X. (2020) Reservoirpy: uma biblioteca eficiente e fácil de usar para projetar redes de estado de eco. Na Conferência Internacional sobre Redes Neurais Artificiais (pp. 494-505). Springer, Cham. PDF HAL HTML
Se você estiver usando ReservoirPy em seu trabalho, cite nosso pacote usando a seguinte entrada bibtex:
@incollection{Trouvain2020, doi = {10.1007/978-3-030-61616-8_40}, url = {https://doi.org/10.1007/978-3-030-61616-8_40}, year = {2020}, publisher = {Springer International Publishing}, pages = {494--505}, author = {Nathan Trouvain and Luca Pedrelli and Thanh Trung Dinh and Xavier Hinaut}, title = {{ReservoirPy}: An Efficient and User-Friendly Library to Design Echo State Networks}, booktitle = {Artificial Neural Networks and Machine Learning {textendash} {ICANN} 2020} }
Este pacote é desenvolvido e apoiado pela Inria em Bordeaux, França, no grupo Mnemosyne. Inria é um Instituto Francês de Pesquisa em Ciências Digitais (Ciências da Computação, Matemática, Robótica, ...).