VAE Decoder возвращает другой тип данных (Bool vs Float - Keras) - PullRequest
1 голос
/ 13 января 2020

Я пытаюсь сгенерировать некоторые данные из моего VAE-декодера, но я не понимаю, почему его тип выходных данных отличается от входного. Мой набор данных основан на логических массивах. Некоторые организованы, а другие нет. Вот пример:

1010101010101010
1000100010001000
1000000010000000

Организованный массив с повторениями

1001110011101010
0110011011001000
0001111010100110

Случайно сгенерированный массив

Я обучил модель на 10 000 примеров, как организованные, так и случайные. Результаты кажутся исправленными, как мы видим на этом графике скрытого пространства:

Представление скрытого пространства

Синие точки - это массивы случайных чисел, а желтые - организованные из них. Учитывая это, я хотел бы создать новый массив из координат благодаря декодеру.

Моя модель - вариационный автокодер от Keras:

https://keras.io/examples/variational_autoencoder/

https://github.com/keras-team/keras/blob/master/examples/variational_autoencoder.py

Мой код доступен по адресу: https://github.com/KyrillosL/SimpleVAEMidi/blob/master/unquantized_v2_temperature_algo_gen/vae_evaluator.py

Я генерирую свой массив из декодера с помощью:

z_sample = np.array([(0,0),(0,1)]) 
x_decoded = self.decoder.predict(z_sample)
print(x_decoded)

Я использовал (0,0) в качестве координаты из скрытого пространства и (0,1) для среднего и стандартного значения, как указано в документации: декодер можно использовать для генерации цифр MNIST путем выборки скрытого вектора из гауссовского распределения со средним значением = 0 и стандартным значением = 1.

Я думал, что схема будет: Схема AE

Но, к сожалению, x_decoded возвращает мне двумерный массив со значениями от ~ 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]]

Я хотел бы знать, что я сделал неправильно и как декодировать свое скрытое пространство для того, чтобы сгенерировать новый массив логических значений.

Спасибо!

...