Deep Java Library (DJL) est un cadre Java en open source, de haut niveau et agnostique pour l'apprentissage en profondeur. DJL est conçu pour être facile à démarrer et simple à utiliser pour les développeurs Java. DJL offre une expérience de développement Java native et des fonctions comme toute autre bibliothèque Java ordinaire.
Vous n'avez pas besoin d'être un expert en apprentissage automatique / apprentissage en profondeur pour commencer. Vous pouvez utiliser votre expertise Java existante comme une rampe pour apprendre et utiliser l'apprentissage automatique et l'apprentissage en profondeur. Vous pouvez utiliser votre IDE préféré pour construire, former et déployer vos modèles. DJL facilite l'intégration de ces modèles avec vos applications Java.
Parce que DJL est agnostique en moteur de Deep Learning, vous n'avez pas à faire de choix entre les moteurs lors de la création de vos projets. Vous pouvez changer de moteur à tout moment. Pour assurer les meilleures performances, DJL fournit également un choix automatique CPU / GPU basé sur la configuration matérielle.
L'interface API ergonomique de DJL est conçue pour vous guider avec les meilleures pratiques pour accomplir des tâches d'apprentissage en profondeur. Le pseudocode suivant démontre l'inférence de l'exécution:
// 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
...
}Le pseudocode suivant montre une formation en cours d'exécution:
// 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 ();La publication de DJL 0,32,0 est prévue pour janvier 2025.
Pour construire à partir de la source, commencez par vérifier le code. Une fois que vous avez vérifié le code localement, vous pouvez le construire comme suit en utilisant Gradle:
# for Linux/macOS:
./gradlew build
# for Windows:
gradlew buildPour augmenter la vitesse de construction, vous pouvez utiliser la commande suivante pour ignorer les tests unitaires:
# for Linux/macOS:
./gradlew build -x test
# for Windows:
gradlew build -x testPour importer le projet Source dans Eclipse
# for Linux/macOS:
./gradlew eclipse
# for Windows:
gradlew eclipse
en éclipse
Fichier-> Import-> gradle-> Projet Gradle existant
Remarque: veuillez définir votre paramètre de codage de texte d'espace de travail sur UTF-8
Vous pouvez lire notre guide des forums communautaires, en suivant les DJL, les problèmes, les discussions et les RFC pour trouver la meilleure façon de partager et de trouver du contenu de la communauté DJL.
Rejoignez notre canal Slack pour contacter l'équipe de développement, pour des questions et des discussions.
Suivez notre X (anciennement Twitter) pour voir des mises à jour sur les nouveaux contenus, fonctionnalités et versions.
关注我们 知乎专栏 获取 djl 最新的内容!
Ce projet est concédé sous licence Apache-2.0.