将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

许可证

这个软件是由麻省理工学院授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java重写父类中的特定行   java Apache Commons CLI订购帮助选项?   java如何将数据添加到网格视图   java如何在Apache Camel批处理后移动文件?   java如何为日期范围的between子句编写hql查询?   雅加达ee开始Java编程,我应该从哪里开始?   排序Java8+流:检查我的objectinstances的两个字段的列表顺序是否正确   java如何将json转换为Map<String,Object>确保整数为整数   java不能在Spring数据JPA批处理过程中创建TransactionException   java损坏的PDF文件从FTP下载到使用Apache Common Net的设备   java无法使用Spring批处理和Wso2为XML架构命名空间找到Spring NamespaceHandler   java Android ImageView未显示在SherlockFragment中   Maven在构建时出错=无法识别Java路径   java如何使用批处理文件调用关闭处理程序?   java admob广告横幅重叠我的游戏屏幕安卓