将Keras模型导出到PMML的简单方法
keras2pmml的Python项目详细描述
keras2pmml是keras模型的简单导出器(对于支持的模型,请参见下面的内容)为pmml文本格式 下面提到的问题。
从多个角度来看,使用二进制格式(如pickle)存储预测模型可能是危险的-只需指定几个:
- 二进制兼容性:您更新了库,可能无法打开用旧版本序列化的模型
- 危险代码:何时使用其他人制作的模型
- 可解释性:模型不能很容易地被人打开和检查
- 等
此外,pmml能够保持原始输入特性的缩放,这有助于梯度下降在优化空间中平稳运行。
安装
要安装keras2pmml,只需:
$ pip install keras2pmml
示例
关于iris数据的示例-有关更多示例,请参阅examples文件夹。
fromkeras2pmmlimportkeras2pmmlfromsklearn.datasetsimportload_irisimportnumpyasnpimporttheanofromsklearn.cross_validationimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerfromkeras.utilsimportnp_utilsfromkeras.modelsimportSequentialfromkeras.layers.coreimportDenseiris=load_iris()X=iris.datay=iris.targettheano.config.floatX='float32'X=X.astype(theano.config.floatX)y=y.astype(np.int32)X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=.3)std=StandardScaler()X_train_scaled=std.fit_transform(X_train)X_test_scaled=std.transform(X_test)y_train_ohe=np_utils.to_categorical(y_train)y_test_ohe=np_utils.to_categorical(y_test)model=Sequential()model.add(Dense(input_dim=X_train.shape[1],output_dim=5,activation='tanh'))model.add(Dense(input_dim=5,output_dim=y_test_ohe.shape[1],activation='sigmoid'))model.compile(loss='categorical_crossentropy',optimizer='sgd')model.fit(X_train_scaled,y_train_ohe,nb_epoch=10,batch_size=1,verbose=3,validation_data=(X_test_scaled,y_test_ohe))params={'feature_names':['sepal_length','sepal_width','petal_length','petal_width'],'target_values':['setosa','virginica','versicolor'],'target_name':'specie','copyright':'Václav Čadek','description':'Simple Keras model for Iris dataset.','model_name':'Iris Model'}keras2pmml(estimator=model,transformer=std,file='keras_iris.pmml',**params)
参数说明
- estimator:要导出为pmml的keras模型(有关支持的模型,请参见下文)。
- transformer:如果提供了(并且支持它,请参见下文),则缩放将应用于数据字段。
- file:将导出pmml的文件的名称。
- feature_names:如果提供了与输入层具有相同形状的功能,则功能将具有自定义名称,否则将使用通用名称(x0,…,xn-1)。
- target_values:如果提供了与输出层相同的形状,则目标值将具有自定义名称,否则将使用通用名称(y0,…,yn-1)。
- target\u name:提供时,目标变量将具有自定义名称,否则将使用泛型名称class。
- copyright:模型的作者。
- description:在pmml文档中设置description的可选参数。
- model\u name:在pmml文档中设置model\u name的可选参数。
支持什么?
- 型号
- keras.models.sequential
- 激活功能
- 谭
- 乙状结肠/logistic
- 定标器
- sklearn.preprocessing.standardscaler
- sklearn.preprocessing.minmaxscaler