我正在研究生成对抗网络。最近,在阅读Radford等人此处的论文时,我发现他们的生成器网络的输出层使用了Tanh()。Tanh()的范围是(-1, 1),然而,图像的像素值在双精度格式下位于[0, 1]之间。请问有人能解释一下为什么在输出层使用Tanh(),以及生成器是如何生成具有正确像素值的图像的吗?
回答:
如果你查看论文的代码,你会发现作者对图像进行了预处理:https://github.com/soumith/dcgan.torch/blob/master/data/donkey_folder.lua#L68,使得图像的值位于[-1, 1]
之间。
然后,在生成部分,他们将图像重新缩放到[0, 1]
的值范围:https://github.com/soumith/dcgan.torch/blob/master/generate.lua#L89。