#python #tensorflow #machine-learning #keras #deep-learning
Вопрос:
n_inputs определяется как-
n_inputs = X.shape[1]
и его стоимость составляет 25
Моя модель-
# define encoder
visible = Input(shape=(n_inputs,))
# encoder level 1
'''
e = Dense(400)(visible)
e = Dropout(0.05)(e)
e = ReLU()(e)
'''
# encoder level 2
e = Dense(300)(visible)
e = Dropout(0.05)(e)
e = ReLU()(e)
# encoder level 3
e = Dense(200)(visible)
e = Dropout(0.05)(e)
e = ReLU()(e)
# encoder level 4
e = Dense(100)(visible)
e = Dropout(0.05)(e)
e = ReLU()(e)
# encoder level 4
e = Dense(50)(visible)
e = Dropout(0.05)(e)
e = ReLU()(e)
# bottleneck
n_bottleneck = n_inputs
bottleneck = Dense(n_bottleneck)(e)
# define decoder, level 1
d = Dense(50)(bottleneck)
d = Dropout(0.05)(d)
d = ReLU()(d)
# define decoder, level 2
d = Dense(100)(bottleneck)
d = Dropout(0.05)(d)
d = ReLU()(d)
# define decoder, level 3
d = Dense(200)(bottleneck)
d = Dropout(0.05)(d)
d = ReLU()(d)
# define decoder, level 4
d = Dense(300)(bottleneck)
d = Dropout(0.05)(d)
d = ReLU()(d)
'''
# define decoder, level 4
d = Dense(400)(bottleneck)
d = Dropout(0.05)(d)
d = ReLU()(d)
'''
# output layer
output = Dense(n_inputs, activation='sigmoid')(d)
# define autoencoder model
model = Model(inputs=visible, outputs=output)
# compile autoencoder model
opt = keras.optimizers.Adam(lr=0.00001)
es = EarlyStopping(monitor='val_loss', mode='min', verbose=1,patience=10)
model.compile(optimizer=opt, loss='binary_crossentropy')
# plot the autoencoder
#plot_model(model, 'drive/MyDrive/autoencoder_no_compress.png', show_shapes=True)
# fit the autoencoder model to reconstruct input
history = model.fit(X_train_norm, X_train_norm, epochs=500, batch_size=64, verbose=2, validation_split=0.1,callbacks=[es])
Мой график потерь-
Поезд и потеря валидации становятся постоянными очень скоро и не меняются также после 20 эпох. Является ли моя модель слишком сложной для данных или слишком простой, чтобы она тоже не подходила для увеличения эпох?
Я нормализовал свои данные, изменил различные скорости обучения, запустил их в течение 500 эпох с обратным вызовом
Комментарии:
1. Что такое
n_inputs
?, какова его ценность?2. @PrakashDahal добавил
3. Модель может просто страдать от утечки данных, если вы считаете, что результаты слишком идеальны.
4. Эта модель довольно большая и не является кодером/декодером. Это просто большая полностью подключенная сеть. Вы пробовали 1 или 2 слоя?
5. @ubuntu_noob вы можете попробовать с небольшими слоями, а затем увеличить слои и проверить разницу в точности