保存Tensorflow特征列创建者以加载估算器以供事后预测

时间:2018-12-20 00:45:44

标签: python tensorflow tensorflow-estimator

我正在尝试安装Tensorflow DNNRegressor并通过向model_dir arg提供目录来保存模型。 另外,我正在定义功能列。 我的问题是如何保存要素列定义并稍后加载模型以进行预测?

我尝试用泡菜,但提示

AttributeError: Can't pickle local object 'embedding_column.<locals>._creator'

模型定义:

estimator = tf.estimator.DNNRegressor(
                hidden_units=[20, 15],
                feature_columns=self.feature_columns,
                model_dir=SAVE_DIR,
                optimizer='Adagrad',
                activation_fn=tf.nn.relu,
                dropout=0.5)

保存python类的功能

def save_model(self, directory_path):
    path = os.path.join(directory_path, 'model.pkl')
    with open(path, 'wb') as file:
        pickle.dump(file=file, obj=self)

加载模型功能:

@classmethod
def load_model(cls, directory_path):
    path = os.path.join(directory_path, 'model.pkl')
    with open(path, 'rb') as file:
        model = pickle.load(file=file)
    return model

预测功能(可能不正确,因为无法测试是否未腌制特征列)

def predict(self, data, SAVE_DIR):
    estimator = tf.estimator.DNNRegressor(
                hidden_units=[20, 15],
                feature_columns=self.feature_columns,
                model_dir=SAVE_DIR,
                optimizer='Adagrad',
                activation_fn=tf.nn.relu,
                dropout=0.5 )
    predict_input_fn = tf.estimator.inputs.pandas_input_fn(x=data)
    predictions = extimator.predict(predict_input_fn)
    return predictions

目标:

我想找到一种方法来定义带有特征列的预制估算器,并保存模型以备将来使用。之后,我想加载模型并使用padas数据框进行预测。

我该如何实现?

0 个答案:

没有答案