JPMML-Tensorflow是Java库和命令行应用,可以将Tensorflow模型转换为PMML。

现阶段jpmml支持的Estimator类型有:

  • learn.DNNClassifier

  • learn.DNNRegressor

  • learn.LinearClassifier

  • learn.LinearRegressor

支持的特征列类型为:

  • layers.one_hot_column

  • layers.real_valued_column

  • layers.sparse_column_with_keys

安装准备

这里对jpmml-tensorflow的源码进行编译,要编译源码。在现在的源码中,支持Tensorflow 1.4 API,因此需要先安装tensorflow 1.4.1,确保java为1.8+。在源码编译过程中,发现代码需要经过gcc编译,且支持c++ 11和c++ 14,因此需要更换使用的类库。

这里主要需要注意更换的两个类库是:libstdc++.so.6和libm.so.6

libstdc++.so.6

首先,确定libstdc++支持的GLIBCXX

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

当前使用的环境gcc版本为4.8.5,GLIBCXX仅支持到3.4.19。

因此,编译gcc 5.4.0源码,并将对应的libstdc++.so.6.0.21拷贝到/usr/lib64

删除之前的软链接,创建新的软链接

ln -s libstdc++.so.6.0.21 libstdc++.so.6

libm.so.6

在编译过程中,libm.so.6需要2.23标准,因此编译glibc-2.23源码,并将生成的libm.so.6拷贝到目录,如上操作。

构建源码

maven构建jpmml-tensorflow源码

mvn -Dprotoc.exe=/usr/local/bin/protoc clean install

构建成功后会生成可执行jar文件target/converter-executable-1.0-SNAPSHOT.jar

查看jar的使用方法

java -jar target/converter-executable-1.0-SNAPSHOT.jar --help

转换tensorflow model

java -jar target/converter-executable-1.0-SNAPSHOT.jar --tf-savedmodel-input estimator/ --pmml-output estimator.pmml

results matching ""

    No results matching ""