На этапе присоединения заданного декодера и энкодера была получена ошибка, решить которую за длительное время не получилось.

Код

input_dec = Input(shape=(49,)) x = input_dec

x = model.layers1

x = model.layers2

decoded = Reshape((28, 28, 1))(x)

decoder = keras.Model(input_dec, decoded, name='decoder')

vae = keras.Model(input_img, decoder(encoder), name='vae')

Ошибка:

Inputs to a layer should be tensors. Got '<keras.engine.functional.Functional object at 0x7f2e04012590>' (of type <class 'keras.engine.functional.Functional'>) as input for layer 'decoder'.

  1. Генеративная модель - модель, которая по входным данным создает новые данные по заданным во время обучения характеристикам.

Автоэнкорер - модель, которой не требуются размеченные данные. Данные сначала попадают на входной слой, затем попадают в скрытые слои, затем выходят в выходной слой энкодера, где имеют меньшую размерность, чем оригинальные данные. Каждый слой имеет свои веса, loss функцию и функцию активации. Затем из энкодера данные попадают в декодер, который максимально близко воспроизводит данные. Задача обучения - научить энкодер так кодировать, а декодер так воспроизводить данные, чтобы полученные данные минимально отличались от исходных.

  1. Общее количество обучаемых параметров: 635796

  2. Оптимизатор adam, функция ошибок

  1. размеры датасетов:

тренировочный: 57000, 28, 28, 1

валидационный: 3000, 28, 28, 1

тестовый: 9000, 28, 28, 1

  1. loss на датасетах:

test Loss: 29.885684967041016 train loss: 30.035560607910156 validation loss: 29.61772918701172

accuracy на автоэнкодерах не применяется, так как они не классифицируют данные по классам, а являются генеративными нейросетями.