我正在尝试使用python和tensorflow实现变量自动编码器。我在互联网上看到了各种各样的实现。我已经设法使用我找到的各个部分创建了自己的部分,并使它们与我的特定情况一起工作。 我在这里总结了一个自动编码器: my autoncoder on git
简单地说,我有一个包含以下内容的自动编码器:
1)具有2个卷积层和1个展平层的编码器,
2)潜在空间(维度2),
3)和带编码器反向部分的解码器。
我的问题是当我尝试实现自动编码器的变分部分时。我的意思是潜在空间中的数学过程。至少是我确定问题的地方。
为了更清楚,我有以下两种情况:
案例1 : 在没有实际实现任何变分数学的情况下,只需简单地将变量设置在潜在空间中并将它们馈送到解码器中而不应用数学。在这种情况下,成本函数只是输入和输出之间的差异。您可以在git上的这些图中看到该案例的代码(抱歉无法发布更多链接): figure1_code_part1.png, figure1_code_part2.png
情况2 : 试图在潜在的空间变量中实现数学。您可以在这些图中看到该案例的代码: figure_2_code_part1.png, figure_2_code_part2.png
我在每个案例中得到的潜在空间的情节是: figure_1.png figure_2.png
我认为变量实现显然有问题,但我无法弄清楚是什么。实现变分自动编码器的每个人都使用这些数学公式(至少是我在互联网上找到的公式)。可能我错过了一些东西。
欢迎提出任何意见/建议。 感谢!!!
答案 0 :(得分:2)
以下是 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
</configuration>
</plugin>
和mu
与sigma
的计算方式:
我不确定代码的KL_term
部分。因此,我建议如下:
请注意,在此处,在编码器侧的完全连接的图层之前,我有一个linear
形状层:conv4
。
[7, 7, 256]
完整代码: https://gist.github.com/issa-s-ayoub/5267558c4f5694d479a84d960c265452
希望有所帮助!!