Сохранение создателя столбца Tensorflow Feature для загрузки оценки для прогнозирования впоследствии - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь установить 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

Функция Predict (возможно, неверная, поскольку нет способа проверить, не выбраны ли столбцы объектов)

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.

Как мне этого добиться?

...