Я пытаюсь сгенерировать некоторые данные из моего 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]]
Я хотел бы знать, что я сделал неправильно и как декодировать свое скрытое пространство для того, чтобы сгенерировать новый массив логических значений.
Спасибо!