TensorFlow理解关于WALSModel分片和监督的伪代码

2024-06-02 08:15:11 发布

您现在位置:Python中文网/ 问答频道 /正文

注意:这个问题有一个关联的colab,并且基于^{}的伪代码。你知道吗

简而言之,问题是如何完成^{}的伪代码(参见colab


Tensorflow的文档并不完整,也不一定是最好的。文档页面简单地链接到.proto文件(可能有一些注释,也可能有一个示例)并不少见。例如^{}^{}^{}^{}等都链接到一个.proto文件,供用户解密。你知道吗

这会使伪代码的转换成为一个冗长而复杂的过程,有时会让在api的“更高”级别工作的用户陷入困境。你知道吗

这就是^{}伪代码的情况。你知道吗

^{}伪代码特别难以破译的部分原因是伪代码不适用于基本用例(将矩阵输入到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的,而不是针对队列训练器的。然而,考虑到^{}文档链接到一个不存在的“培训”指南(只列出了模块/类,其中许多链接到.proto文件),我们应该去哪里学习如何正确地实现它?你知道吗

因此,我开始尽我所能尝试填充这个伪代码(参见colab),很快就遇到了死胡同。你知道吗

如果您能提供任何帮助/指导来完成这个伪代码(分布式、分片的WALSModel),或者在哪里阅读更多关于如何做到这一点的内容,我将不胜感激。你知道吗

可能会用到半相关的issue 26928,其中@walidk链接到tf.Estimator版本的WALSModelWALSMatrixFactorization)的一些test code,似乎有更多的代码用于分片,但由于它是Estimator,与^{}文档页上提供的伪代码相关的WALSModel需要什么并不一定清楚。你知道吗


Tags: 文件代码用户文档model链接分布式矩阵