VAE解码器返回不同类型的数据(Bool vs Float-Keras)

VAE解码器返回不同类型的数据(Bool vs Float-Keras),keras,types,autoencoder,Keras,Types,Autoencoder,我试图从我的VAE解码器生成一些数据,但我不明白为什么它的输出数据类型与输入数据类型不同。
 我的数据集是基于布尔数组的。有些是有组织的,有些不是。下面是一个例子: 1010101010101010 1000100010001000 1000000010000000 是一个有组织的重复数组 1001110011101010 0110011011001000 0001111010100110 是一个随机生成的数组 我已经用10000个例子训练了这个模型,包括有组织的和随机的。 结果似乎是正确的

我试图从我的VAE解码器生成一些数据,但我不明白为什么它的输出数据类型与输入数据类型不同。
 我的数据集是基于布尔数组的。有些是有组织的,有些不是。下面是一个例子:

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]]
我想知道我做错了什么,以及如何解码我的潜在空间以生成一个新的布尔数组

谢谢