Как настроить потерю WALSModel в model_fn для инициализации EstimatorSpec? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь настроить WALSModel как объект оценщика, чтобы я мог вызвать train_and_evaluate для него. Чтобы сделать это, мне нужно преобразовать WALSModel в Оценщик, передав его через EstimatorSpec в model_fn. Сейчас я сосредоточен на учебной операции.

Чтобы настроить операцию обучения, я нашел в Интернете руководства и определил их следующим образом:

    train_op = tf.group(model.row_update_prep_gramian_op,
                        model.initialize_row_update_op,
                        model.update_row_factors(sp_input=input_tensor)[1],
                        model.col_update_prep_gramian_op,
                        model.initialize_col_update_op,
                        model.update_col_factors(sp_input=input_tensor)[1],
                        )

    loss = ?

    return tf.estimator.EstimatorSpec(mode=mode, train_op=train_op, loss=loss)

Где sp_input - это tf.SparseTensor со всеми моими данными, на данный момент (в будущем я могу использовать пакетную обработку для столбцов и строк отдельно).

Теперь я должен определить свою потерю, чтобы передать ее в EstimatorSpec. Я не уверен, как это сделать: в документах https://www.tensorflow.org/api_docs/python/tf/contrib/factorization/WALSModel они упоминают способы вычисления потерь путем оценки update_row_factors и update_col_factors, но я понимаю, что model_fn не должен делать это: он должен просто перечислить сами операции.

  • Правильно ли настроен порядок тренировок?
  • Как я могу вычислить потери?
...