keras TimeGAN中的“Supervisor”是如何构建的?

ztmd8pv5  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(144)

我正在探索TimeGAN架构(Yoon等人),我研究了原作者https://github.com/jsyoon0823/TimeGAN/blob/master/timegan.py的代码,以及用TensorFlow 2编写的修订代码,https://github.com/ydataai/ydata-synthetic/blob/e4cace4fb5c7ac47604364fbf300c7b072faab8a/src/ydata_synthetic/synthesizers/timeseries/timegan/model.py#L339。实际论文似乎缺乏TimeGAN架构的许多细节,特别是与监督模型相关的细节。第一参考文献的第132行示出了监督者的预期输入是“H”,即潜在表示。在第170和171行中,管理器被给予两个单独的输入,'E-Hat'产生'H_hat','H'产生'H_hat_supervise'。监督损失被定义为这两者的MSE(“H”和“H_hat_supervised”)。这部分说不通如果'H'是管理器的输入,它的输出直接与'H'进行比较。这不是强制监督者是同一的吗?此外,该损失的可训练变量被定义为发电机权重和管理器权重。当生成器不用于生成'H'或'H_hat_supervised'时,为什么要将生成器权重包括在其中?

xzlaal3s

xzlaal3s1#

请注意,正如代码中所注解的,管理程序的目标是“使用前一个序列生成下一个序列”(源文件中的第133行)。因此,监督丢失在H_hat_supervisedH移位版本之间(源文件中的第200行):

  1. G_loss_S = tf.losses.mean_squared_error(H[:,1:,:], H_hat_supervise[:,:-1,:])

这就是你想要的(我想,我还没有读报纸)。此外,supervisor的输出也用于X_hat的创建,所以无论如何它不会收敛到恒等式中。
关于你的第二个问题,我也想知道,因为它看起来是多余的--监督损失不依赖于这些权重,而且在这个损失的反向传播过程中,它们似乎不会更新。

相关问题