减少导出 jar 的 DeepLearning4j 依赖大小
Reduce DeepLearning4j dependency size of exported jar
在我的应用程序中,我想使用 Deeplearning4j。 Deeplearning4j 超过 120mb 的依赖项,考虑到我自己的代码只有 0.5mb,这已经很多了。
是否可以减少所需的依赖项?加载一个已经训练好的网络是否可以让我以更小的文件大小发布我的应用程序?
根据您的用例,有很多方法可以减小 jar 的大小。我们最近在我们的文档中对此进行了介绍,但我将在这里总结一些要尝试的事情:
DL4j 很大程度上基于 javacpp。您可以将 -Djavacpp.platform=$YOUR_PLATFORM (linux-x86_64, windows-x86_64,..) 添加到您的构建中以减少其中的原生依赖项数量。
如果您使用的是 deeplearning4j-core,其中包含许多您可能不需要的额外依赖项。在这种情况下,您可能只需要 deeplearning4j-nn 进行配置。如果您只使用 samediff,则同样如此,您不需要 dl4j api。我对你的用例了解不够,无法确认你做什么和不需要什么。
如果您在嵌入式平台上进行部署,我们现在也可以减少支持的操作和数据类型的数量。此功能目前主要面向高级用户(涉及从源代码构建),但如果您认为尽管前两个也适用,请确认,我可以尝试澄清一下。
在我的应用程序中,我想使用 Deeplearning4j。 Deeplearning4j 超过 120mb 的依赖项,考虑到我自己的代码只有 0.5mb,这已经很多了。
是否可以减少所需的依赖项?加载一个已经训练好的网络是否可以让我以更小的文件大小发布我的应用程序?
根据您的用例,有很多方法可以减小 jar 的大小。我们最近在我们的文档中对此进行了介绍,但我将在这里总结一些要尝试的事情:
DL4j 很大程度上基于 javacpp。您可以将 -Djavacpp.platform=$YOUR_PLATFORM (linux-x86_64, windows-x86_64,..) 添加到您的构建中以减少其中的原生依赖项数量。
如果您使用的是 deeplearning4j-core,其中包含许多您可能不需要的额外依赖项。在这种情况下,您可能只需要 deeplearning4j-nn 进行配置。如果您只使用 samediff,则同样如此,您不需要 dl4j api。我对你的用例了解不够,无法确认你做什么和不需要什么。
如果您在嵌入式平台上进行部署,我们现在也可以减少支持的操作和数据类型的数量。此功能目前主要面向高级用户(涉及从源代码构建),但如果您认为尽管前两个也适用,请确认,我可以尝试澄清一下。