djl
v0.31.0
Deep Java圖書館(DJL)是一個開源的,高級的,發動機 - 不合時宜的Java框架,用於深度學習。 DJL設計為易於入門,易於使用Java開發人員。 DJL與任何其他常規Java庫一樣提供本地Java開發經驗和功能。
您不必是機器學習/深度學習專家即可開始。您可以將現有的Java專業知識用作學習和使用機器學習和深度學習的坡道。您可以使用自己喜歡的IDE來構建,訓練和部署模型。 DJL使將這些模型與您的Java應用程序集成在一起變得容易。
由於DJL是深度學習引擎不可知論,因此在創建項目時,您不必在引擎之間做出選擇。您可以隨時切換引擎。為了確保最佳性能,DJL還基於硬件配置提供了自動CPU/GPU選擇。
DJL的人體工程學API界面旨在指導您採用最佳實踐來完成深度學習任務。以下偽代碼演示了運行推理:
// 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
...
}以下偽代碼展示了運行訓練:
// 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 ();計劃於2025年1月發布DJL 0.32.0。
要從源構建,請先檢查代碼。一旦您在本地檢查了代碼,就可以使用Gradle如下構建它:
# for Linux/macOS:
./gradlew build
# for Windows:
gradlew build為了提高構建速度,您可以使用以下命令跳過單元測試:
# for Linux/macOS:
./gradlew build -x test
# for Windows:
gradlew build -x test將源項目導入Eclipse
# for Linux/macOS:
./gradlew eclipse
# for Windows:
gradlew eclipse
在日食
文件 - >導入 - > gradle->現有的gradle項目
注意:請將您的工作區文本編碼設置設置為UTF-8
您可以閱讀我們的社區論壇指南,遵循DJL,問題,討論和RFC,以找出分享和查找DJL社區內容的最佳方法。
加入我們的Slack頻道,與開發團隊取得聯繫,以進行問題和討論。
請按照我們的X(以前為Twitter)查看有關新內容,功能和發行版的最新信息。
關注我們關注我們獲取djl 最新的內容!
該項目已根據APACHE-2.0許可獲得許可。