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