ПРИМЕЧАНИЕ : этот вопрос связан с colab и основан на псевдокоде для tf.contrib.factorization.WALSModel
.
Корочевопрос состоит в том, как заполнить псевдокод для WALSModel
(см. colab )
Документация Tensorflow не является полной и не обязательно лучшей.На странице документации нередко просто делается ссылка на файл .proto
(который может содержать некоторые комментарии и, возможно, пример).Например, ClusterDef
, Example
, Feature
, JobDef
и т. Д. - все ссылки на .proto
файл для пользователя, чтобы расшифровать.
Это может сделать преобразование псевдокода длительным и запутанным процессом, иногда приводящим пользователя, работающего над частью более высокого уровня API, в траншеи.
Так обстоит дело с псевдокодом tf.contrib.factorization.WALSModel
.
Отчасти причина, по которой псевдокод WALSModel
особенно сложенЧтобы понять, что псевдокод не предназначен для базового варианта использования (подача матрицы в WALSModel
, выполнение для i
итераций и получение результирующего row_factors
/ col_factors
).Скорее, этот псевдокод призван продемонстрировать, как запустить WALSModel
, возможно, в распределенной установке с заштрихованной матрицей (что может потребоваться для больших входных матриц).
Однако этот псевдокод не дает достаточных указаний для реализации распределенного сегментированного WALSModel
.
Почему?
Для начала первое упоминание о том, что входная матрица должна использоваться совместно, не до определения операций обновления:
_, row_update_op, unreg_row_loss, row_reg, _ = model.update_row_factors(
sp_input = matrix_slices_from_queue_for_worker_shard
)
Переменная псевдокода matrix_slices_from_queue_for_worker_shard
не указывает, как пользователь должен это делать.
Дальнейшие примеры больших пробелов в псевдокоде появятся всего несколькими строками позже:
# model_init_op is passed to Supervisor. Chief trainer runs it. Other
# trainers wait.
sv = tf.train.Supervisor(is_chief=is_chief,
...,
init_op=tf.group(..., model_init_op, ...), ...)
В этом большом блоке псевдокода есть упоминание о том, где и как должен быть обучен руководительнастроить или как другие тренеры ждут.
Понятно, что этот псевдокод специально предназначен для WALSModel
, а не для тренеров очереди.Однако, учитывая, что документация tf.train
ссылается на несуществующее руководство «Обучение» (просто перечисляются модули / классы, многие из которых ссылаются на файлы .proto
), куда следует обратиться для изучениякак правильно реализовать это?
Поэтому я решил попробовать заполнить этот псевдокод в меру своих возможностей (см. colab и быстро зайти в тупик.
Буду признателен за любую помощь / руководство по заполнению этого псевдокода (распределенное, защищенное WALSModel
) или за информацией о том, как это сделать.
Использование может быть частично связанным выпуск 26928 , где @ walidk ссылается на некоторый тестовый код для tf.Estimator
версии WALSModel
(WALSMatrixFactorization
), которая, кажется, имеет ещекод для шардинга, но поскольку это Estimator
, не обязательно ясно, что нужно только для WALSModel
относительно псевдокода, предоставленного на странице документации WALSModel
.