На этапе присоединения заданного декодера и энкодера была получена ошибка, решить которую за длительное время не получилось.
Код
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'.
- Генеративная модель - модель, которая по входным данным создает новые данные по заданным во время обучения характеристикам.
Автоэнкорер - модель, которой не требуются размеченные данные. Данные сначала попадают на входной слой, затем попадают в скрытые слои, затем выходят в выходной слой энкодера, где имеют меньшую размерность, чем оригинальные данные. Каждый слой имеет свои веса, loss функцию и функцию активации. Затем из энкодера данные попадают в декодер, который максимально близко воспроизводит данные. Задача обучения - научить энкодер так кодировать, а декодер так воспроизводить данные, чтобы полученные данные минимально отличались от исходных.
-
-
Общее количество обучаемых параметров: 635796
-
Оптимизатор adam, функция ошибок
- размеры датасетов:
тренировочный: 57000, 28, 28, 1
валидационный: 3000, 28, 28, 1
тестовый: 9000, 28, 28, 1
- loss на датасетах:
test Loss: 29.885684967041016 train loss: 30.035560607910156 validation loss: 29.61772918701172
accuracy на автоэнкодерах не применяется, так как они не классифицируют данные по классам, а являются генеративными нейросетями.