Я пытаюсь настроить 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 не должен делать это: он должен просто перечислить сами операции.
- Правильно ли настроен порядок тренировок?
- Как я могу вычислить потери?