Estamos entusiasmados em apresentar keras3
a próxima versão do pacote Keras R. keras3
é uma reconstrução completa de {keras}
mantendo os recursos adorados do unique enquanto refina e simplifica a API com base em insights valiosos coletados ao longo dos últimos anos.
O Keras fornece um equipment de ferramentas completo para criar modelos de aprendizado profundo em R. Nunca foi tão fácil criar, treinar, avaliar e implantar modelos de aprendizado profundo.
Instalação
Para instalar o Keras 3:
set up.packages("keras3")
library(keras3)
install_keras()
O que há de novo:
Documentação
Uma ótima documentação é essencial e trabalhamos arduamente para garantir que keras3
tem excelente documentação, tanto agora quanto no futuro.
O Keras 3 vem com uma atualização completa do website:
https://keras.posit.co. Lá, você encontrará guias, tutoriais, páginas de referência com exemplos renderizados e uma nova galeria de exemplos. Todas as páginas de referência e guias também estão disponíveis por meio do sistema de ajuda integrado do R.
Em um ecossistema de rápido movimento como o deep studying, criar ótima documentação e wrappers uma vez não é o suficiente. Também é preciso haver fluxos de trabalho que garantam que a documentação esteja atualizada com as dependências upstream. Para fazer isso, {keras3} inclui dois novos recursos de mantenedor que garantem que a documentação do R e os wrappers de função permanecerão atualizados:
Agora tiramos instantâneos da documentação upstream e da superfície da API. Com cada lançamento, toda a documentação do R é rebaseada em atualizações upstream. Esse fluxo de trabalho garante que toda a documentação do R (guias, exemplos, vinhetas e páginas de referência) e assinaturas de função do R permaneçam atualizadas com o upstream. Essa funcionalidade de instantâneo e rebase é implementada em um novo pacote R autônomo,
{médico}o que pode ser útil para mantenedores de pacotes R que precisam manter a documentação em paridade com as dependências.Todos os exemplos e vinhetas agora podem ser avaliados e renderizados durante a construção de um pacote. Isso garante que nenhum código de exemplo obsoleto ou quebrado entre em uma versão. Isso também significa que todo código de exemplo voltado para o usuário agora serve adicionalmente como um conjunto estendido de testes de unidade e integração de snapshot.
Avaliar código em vinhetas e exemplos ainda não é permitido de acordo com as restrições do CRAN. Trabalhamos em torno da restrição do CRAN adicionando etapas adicionais de construção de pacotes que pré-renderizam
exemplos
e
vinhetas.
Combinados, esses dois recursos tornarão substancialmente mais fácil para o Keras em R manter a paridade de recursos e a documentação atualizada com a API Python para o Keras.
Suporte multi-backend
Emblem após seu lançamento em 2015, o Keras apresentou suporte para as estruturas de aprendizado profundo mais populares: TensorFlow, Theano, MXNet e CNTK. Com o tempo, o cenário mudou; Theano, MXNet e CNTK foram aposentados, e o TensorFlow ganhou popularidade. Em 2021, três anos atrás, o TensorFlow se tornou o principal e único backend do Keras com suporte. Agora, o cenário mudou novamente.
Keras 3 traz o retorno do suporte multi-backend. Escolha um backend chamando:
use_backend("jax") # or "tensorflow", "torch", "numpy"
O backend padrão continua sendo o TensorFlow, que é a melhor escolha para a maioria dos usuários hoje; para modelos de pequeno a médio porte, este ainda é o backend mais rápido. No entanto, cada backend tem diferentes pontos fortes, e poder alternar facilmente permitirá que você se adapte às mudanças conforme seu projeto, ou os próprios frameworks, evoluem.
Hoje, mudar para o backend Jax pode, para alguns tipos de modelos, trazer melhorias substanciais de velocidade. O Jax também é o único backend que tem suporte para uma nova API de treinamento distribuído de paralelismo de modelo. Mudar para o Torch pode ser útil durante o desenvolvimento, frequentemente produzindo trackbacks mais simples durante a depuração.
O Keras 3 também permite que você incorpore qualquer módulo Torch, Jax ou Flax pré-existente como uma camada Keras padrão usando o wrapper apropriado, permitindo que você construa sobre projetos existentes com o Keras. Por exemplo, treine um modelo Torch usando a API de treinamento de alto nível do Keras (compile()
+
match()
), ou incluir um módulo Flax como um componente de um modelo Keras maior. O novo suporte multi-backend permite que você use Keras à la carte.
A família ‘Ops’
{keras3}
introduz uma nova família de funções “Operações”. A família Ops, atualmente com mais de 200 funçõesfornece um conjunto abrangente de operações normalmente necessárias ao operar em matrizes nd para aprendizado profundo. A família Operation substitui e expande muito a antiga família de funções de backend prefixadas com k_
no {keras}
pacote.
As funções Ops permitem que você escreva código agnóstico de backend. Elas fornecem uma API uniforme, independentemente de você estar trabalhando com TensorFlow Tensors, Jax Arrays, Torch Tensors, Keras Symbolic Tensors, NumPy arrays ou R arrays.
As funções do Ops:
- todos começam com prefixo
op_
(por exemplo,op_stack()
) - todas são funções puras (não produzem efeitos colaterais)
- todos usam indexação consistente baseada em 1 e forçam doubles para inteiros conforme necessário
- todos são seguros para uso com qualquer backend (tensorflow, jax, torch, numpy)
- todos são seguros para uso nos modos ansioso e gráfico/jit/traçado
A API Ops inclui:
- A totalidade da API NumPy (
numpy.*
) - A API TensorFlow NN (
tf.nn.*
) - Funções comuns de álgebra linear (um subconjunto de
scipy.linalg.*
) - Uma subfamília de transformadores de imagem
- Um conjunto abrangente de funções de perda
- E mais!
Ingerir dados tabulares com layer_feature_space()
keras3
fornece um novo conjunto de funções para construir modelos que ingerem dados tabulares: layer_feature_space()
e uma família de funções transformadoras de características (prefixo, feature_
) para construir modelos keras que podem trabalhar com dados tabulares, seja como entradas para um modelo keras ou como etapas de pré-processamento em um pipeline de carregamento de dados (por exemplo, um
tfdatasets::dataset_map()
).
Veja o página de referência e um exemplo de uso em um completo exemplo de ponta a ponta
aprender mais.
Nova API de subclassificação
A API de subclassificação foi refinada e estendida para mais tipos de Keras. Defina subclasses simplesmente chamando: Layer()
, Loss()
, Metric()
,
Callback()
, Constraint()
, Mannequin()
e LearningRateSchedule()
. Definindo {R6}
courses proxy não são mais necessárias.
Além disso, a página de documentação para cada uma das funções de subclassificação agora contém uma lista abrangente de todos os atributos e métodos disponíveis para esse tipo. Confira
?Layer
para ver o que é possível.
Salvando e Exportando
O Keras 3 traz uma nova API de serialização e exportação de modelos. Agora é muito mais simples salvar e restaurar modelos, e também exportá-los para servir.
save_model()
/load_model()
:
Um novo formato de arquivo de alto nível (extensão:.keras
) para salvar e restaurar um modelo completo.O formato do arquivo é agnóstico de backend. Isso significa que você pode converter modelos treinados entre backends, simplesmente salvando com um backend e, em seguida, carregando com outro. Por exemplo, treine um modelo usando Jax e, em seguida, converta para Tensorflow para exportação.
export_savedmodel()
:
Exporte apenas a passagem para frente de um modelo como um artefato compilado para inferência com TF Servindo ou (em breve)
Posicionar Conexão. Esta é a maneira mais fácil de implantar um modelo Keras para servir inferências simultâneas e eficientes, tudo sem qualquer dependência de tempo de execução do R ou Python.Pontos de entrada de nível inferior:
save_model_weights()
/load_model_weights()
:
salve apenas os pesos como.h5
arquivos.save_model_config()
/load_model_config()
:
salve apenas a arquitetura do modelo como um arquivo json.
register_keras_serializable()
:
Registre objetos personalizados para permitir que eles sejam serializados e desserializados.serialize_keras_object()
/deserialize_keras_object()
:
Converta qualquer objeto Keras em uma lista R de tipos simples que seja segura para converter para JSON ou rds.Veja o novo Vinheta de serialização e salvamento
para mais detalhes e exemplos.
Novo random
família
Uma nova família de geradores de tensores aleatórios. Assim como a família Ops, eles funcionam com todos os backends. Além disso, todos os métodos que usam RNG têm suporte para uso sem estado quando você passa um gerador de sementes. Isso permite o rastreamento e a compilação por frameworks que têm suporte especial para funções sem estado, puras, como Jax. Veja
?random_seed_generator()
por exemplo, uso.
Outras adições:
Novo
form()
função, utilitário completo para trabalhar com formas tensoras em todos os contextos.
Novo e melhorado
print(mannequin)
eplot(mannequin)
método. Veja alguns exemplos de saída no Guia de API funcionalTudo novo
match()
barra de progresso e saída do visualizador de métricas ao vivo, incluindo novo suporte ao modo escuro no RStudio IDE.Novo
config
famíliaum conjunto selecionado de funções para obter e definir configurações globais do Keras.
Todas as outras famílias de funções foram expandidas com novos membros:
Migrando de {keras}
para {keras3}
{keras3}
substitui o {keras}
pacote.
Se você estiver escrevendo um novo código hoje, você pode começar a usar {keras3}
agora mesmo.
Se você tiver um código legado que usa {keras}
você é encorajado a atualizar o código para {keras3}
. Para muitas funções de API de alto nível, como layer_dense()
, match()
e keras_model()
são necessárias alterações mínimas ou nenhuma. No entanto, há uma longa cauda de pequenas alterações que você pode precisar fazer ao atualizar o código que fez uso da API Keras de nível inferior. Algumas delas estão documentadas aqui:
https://keras.io/guides/migrating_to_keras_3/.
Se você estiver enfrentando problemas ou tiver dúvidas sobre a atualização, não hesite em perguntar em https://github.com/rstudio/keras/points ou
https://github.com/rstudio/keras/discussions.
O {keras}
e {keras3}
os pacotes coexistirão enquanto a comunidade faz a transição. Durante a transição, {keras}
continuará a receber atualizações de patch para compatibilidade com Keras v2, que continua a ser publicado no PyPi sob o nome do pacote tf-keras
. Depois tf-keras
não é mais mantido, o {keras}
o pacote será arquivado.
Resumo
Resumindo, {keras3}
é uma atualização robusta do pacote Keras R, incorporando novos recursos enquanto preserva a facilidade de uso e a funcionalidade do unique. O novo suporte multi-backend, conjunto abrangente de funções Ops, API de serialização de modelo refinada e fluxos de trabalho de documentação atualizados permitem que os usuários aproveitem facilmente os últimos desenvolvimentos na comunidade de aprendizado profundo.
Seja você um usuário experiente do Keras ou esteja apenas começando sua jornada de aprendizado profundo, o Keras 3 fornece as ferramentas e a flexibilidade para construir, treinar e implantar modelos com facilidade e confiança. À medida que fazemos a transição do Keras 2 para o Keras 3, estamos comprometidos em dar suporte à comunidade e garantir uma migração tranquila. Convidamos você a explorar os novos recursos, conferir a documentação atualizada e participar da conversa em nossa página de discussões do GitHub. Bem-vindo ao próximo capítulo do aprendizado profundo em R com o Keras 3!