Deep Java Biblioteca (DJL) es un marco Java Java de código abierto, de alto nivel y agnóstico de motor para el aprendizaje profundo. DJL está diseñado para ser fácil de comenzar y fácil de usar para los desarrolladores de Java. DJL proporciona una experiencia y funciones de desarrollo de Java nativas como cualquier otra biblioteca de Java regular.
No tiene que ser experto en aprendizaje automático/aprendizaje profundo para comenzar. Puede usar su experiencia en Java existente como una rampa de entrada para aprender y usar el aprendizaje automático y el aprendizaje profundo. Puede usar su IDE favorito para construir, entrenar e implementar sus modelos. DJL facilita la integración de estos modelos con sus aplicaciones Java.
Debido a que DJL es un motor de aprendizaje profundo agnóstico, no tiene que elegir entre los motores al crear sus proyectos. Puede cambiar de motores en cualquier momento. Para garantizar el mejor rendimiento, DJL también proporciona opción automática de CPU/GPU basada en la configuración de hardware.
La interfaz API ergonómica de DJL está diseñada para guiarlo con las mejores prácticas para realizar tareas de aprendizaje profundo. El siguiente pseudocódigo demuestra una inferencia de ejecución:
// 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
...
}El siguiente pseudocódigo demuestra el entrenamiento en ejecución:
// 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 ();El lanzamiento de DJL 0.32.0 está planeado para enero de 2025.
Para construir desde la fuente, comience revisando el código. Una vez que haya revisado el código localmente, puede construirlo de la siguiente manera usando Gradle:
# for Linux/macOS:
./gradlew build
# for Windows:
gradlew buildPara aumentar la velocidad de compilación, puede usar el siguiente comando para omitir las pruebas unitarias:
# for Linux/macOS:
./gradlew build -x test
# for Windows:
gradlew build -x testpara importar el proyecto fuente en eclipse
# for Linux/macOS:
./gradlew eclipse
# for Windows:
gradlew eclipse
en eclipse
Archivo-> import-> gradle-> Proyecto de Gradle existente
Nota: Establezca la configuración de codificación de texto de su espacio de trabajo en UTF-8
Puede leer nuestra guía de foros comunitarios, siguiendo DJL, problemas, discusiones y RFC para descubrir la mejor manera de compartir y encontrar contenido de la comunidad DJL.
Únase a nuestro canal Slack para ponerse en contacto con el equipo de desarrollo, para preguntas y discusiones.
Siga nuestra X (anteriormente Twitter) para ver actualizaciones sobre nuevos contenidos, características y lanzamientos.
关注我们 知乎专栏 获取 DJL 最新的内容!
Este proyecto tiene licencia bajo la licencia Apache-2.0.