A Biblioteca Java Deep (DJL) é uma estrutura Java de código aberto, de alto nível e agnóstico do motor para aprendizado profundo. O DJL foi projetado para ser fácil de começar e simples de usar para desenvolvedores de Java. A DJL fornece uma experiência de desenvolvimento de Java nativo e funções como qualquer outra biblioteca Java regular.
Você não precisa ser um especialista em aprendizado de máquina/aprendizado profundo para começar. Você pode usar sua experiência em Java existente como uma rampa para aprender e usar o aprendizado de máquina e o aprendizado profundo. Você pode usar seu IDE favorito para construir, treinar e implantar seus modelos. O DJL facilita a integração desses modelos com seus aplicativos Java.
Como o DJL é um mecanismo de aprendizado profundo agnóstico, você não precisa fazer uma escolha entre os motores ao criar seus projetos. Você pode trocar os motores a qualquer momento. Para garantir o melhor desempenho, o DJL também fornece uma opção automática de CPU/GPU com base na configuração de hardware.
A interface da API ergonômica da DJL foi projetada para guiá -lo com as melhores práticas para realizar tarefas profundas de aprendizado. O pseudocode a seguir demonstra a inferência de execução:
// Assume user uses a pre-trained model from model zoo, they just need to load it
Criteria < Image , Classifications > criteria =
Criteria . builder ()
. optApplication ( Application . CV . OBJECT_DETECTION ) // find object detection model
. setTypes ( Image . class , Classifications . class ) // define input and output
. optFilter ( "backbone" , "resnet50" ) // choose network architecture
. build ();
Image img = ImageFactory . getInstance (). fromUrl ( "http://..." ); // read image
try ( ZooModel < Image , Classifications > model = criteria . loadModel ();
Predictor < Image , Classifications > predictor = model . newPredictor ()) {
Classifications result = predictor . predict ( img );
// get the classification and probability
...
}O pseudocode a seguir demonstra o treinamento em execução:
// Construct your neural network with built-in blocks
Block block = new Mlp ( 28 * 28 , 10 , new int [] { 128 , 64 });
Model model = Model . newInstance ( "mlp" ); // Create an empty model
model . setBlock ( block ); // set neural network to model
// Get training and validation dataset (MNIST dataset)
Dataset trainingSet = new Mnist . Builder (). setUsage ( Usage . TRAIN ) ... . build ();
Dataset validateSet = new Mnist . Builder (). setUsage ( Usage . TEST ) ... . build ();
// Setup training configurations, such as Initializer, Optimizer, Loss ...
TrainingConfig config = setupTrainingConfig ();
Trainer trainer = model . newTrainer ( config );
/*
* Configure input shape based on dataset to initialize the trainer.
* 1st axis is batch axis, we can use 1 for initialization.
* MNIST is 28x28 grayscale image and pre processed into 28 * 28 NDArray.
*/
trainer . initialize ( new Shape ( 1 , 28 * 28 ));
EasyTrain . fit ( trainer , epoch , trainingSet , validateSet );
// Save the model
model . save ( modelDir , "mlp" );
// Close the resources
trainer . close ();
model . close ();O lançamento do DJL 0,32.0 está planejado para janeiro de 2025.
Para construir a partir da fonte, comece verificando o código. Depois de verificar o código localmente, você pode construí -lo o seguinte usando o gradle:
# for Linux/macOS:
./gradlew build
# for Windows:
gradlew buildPara aumentar a velocidade de construção, você pode usar o seguinte comando para pular testes de unidade:
# for Linux/macOS:
./gradlew build -x test
# for Windows:
gradlew build -x testPara importar o projeto de origem para o eclipse
# for Linux/macOS:
./gradlew eclipse
# for Windows:
gradlew eclipse
no eclipse
Arquivo-> Import-> Gradle-> Projeto Gradle existente
NOTA: Defina o seu espaço de trabalho que codifica a configuração do UTF-8
Você pode ler nosso guia para fóruns da comunidade, seguindo DJL, questões, discussões e RFCs para descobrir a melhor maneira de compartilhar e encontrar conteúdo da comunidade DJL.
Junte -se ao nosso canal Slack para entrar em contato com a equipe de desenvolvimento, para perguntas e discussões.
Siga nosso X (anteriormente Twitter) para ver atualizações sobre novos conteúdos, recursos e lançamentos.
关注我们 知乎专栏 获取 djl 最新的内容!
Este projeto está licenciado sob a licença Apache-2.0.