VAE解码器返回不同类型的数据(Bool vs Float-Keras)
我试图从我的VAE解码器生成一些数据,但我不明白为什么它的输出数据类型与输入数据类型不同。 我的数据集是基于布尔数组的。有些是有组织的,有些不是。下面是一个例子:VAE解码器返回不同类型的数据(Bool vs Float-Keras),keras,types,autoencoder,Keras,Types,Autoencoder,我试图从我的VAE解码器生成一些数据,但我不明白为什么它的输出数据类型与输入数据类型不同。 我的数据集是基于布尔数组的。有些是有组织的,有些不是。下面是一个例子: 1010101010101010 1000100010001000 1000000010000000 是一个有组织的重复数组 1001110011101010 0110011011001000 0001111010100110 是一个随机生成的数组 我已经用10000个例子训练了这个模型,包括有组织的和随机的。 结果似乎是正确的
1010101010101010
1000100010001000
1000000010000000
是一个有组织的重复数组
1001110011101010
0110011011001000
0001111010100110
是一个随机生成的数组
我已经用10000个例子训练了这个模型,包括有组织的和随机的。
结果似乎是正确的,正如我们在这张潜在空间图中所看到的:
蓝点是随机数组,黄点是有组织的数组。
有鉴于此,多亏了解码器,我想从坐标生成一个新数组
我的型号是Keras的可变自动编码器:
我的代码可从以下网址获得:
我使用以下命令从解码器生成阵列:
z_sample = np.array([(0,0),(0,1)])
x_decoded = self.decoder.predict(z_sample)
print(x_decoded)
我使用(0,0)作为潜在空间的坐标,使用(0,1)作为平均值和标准值,如文件所示:
解码器可用于通过从均值为0且std为1的高斯分布中采样潜在向量来生成MNIST数字
我认为模式应该是:
但不幸的是,x_解码后返回的是一个二维数组,其值从~0到~0.4:
[[0.07802552 0.07745907 0.07709804 ... 0.2573312 0.25953 0.25999647]
[0.04232737 0.04368901 0.04162821 ... 0.3448236 0.3477785 0.34735686]]
我试图将它们转换为布尔数组,但它只是将数组的中间部分剪切为如下所示:
[[True True True ... False False False]
[True True True ... False False False]]
我想知道我做错了什么,以及如何解码我的潜在空间以生成一个新的布尔数组
谢谢