简体   繁体   中英

I am getting a very high loss in training (& testing) my auto-encoder

I am getting a very high loss (170+). I am making an auto-encoder with 3 hidden layers and using SGD as my optimiser. I have used cross_entropy as my loss function. Also initially, the accuracy I am getting is pretty good (about 0.88) but it decreases after almost every epoch.

Here is my code:

   encoding_dim=8
   i=Input(shape=(60,))
   encoded=Dense(30,activation='sigmoid')(i)
   encoded1=Dense(15,activation='sigmoid')(encoded)
   encoded2=Dense(8,activation='relu')(encoded1)
   #encoded=Dense(encoding_dim,activation='sigmoid')(encoded2)

   decoded=Dense(15,activation='sigmoid')(encoded2)
   decoded2 =Dense(30,activation='sigmoid')(decoded)
   decoded3 =Dense(60,activation='sigmoid')(decoded2)
   autoencoder = Model(i, decoded3)

   ec = Model(i,encoded)
   encoded_input=Input(shape=(encoding_dim,))
   decoder_layer=autoencoder.layers[-3](encoded_input)
   decoder_layer=autoencoder.layers[-2](decoder_layer)
   decoder_layer=autoencoder.layers[-1](decoder_layer)

   decoder = Model(encoded_input, decoder_layer)
   from keras.optimizers import SGD
   opt = SGD(lr=0.06)
   #model.compile(loss = "categorical_crossentropy", optimizer = opt)
   autoencoder.compile(loss = "categorical_crossentropy", optimizer = opt,metrics=['accuracy'])

   autoencoder.fit(X_Train, X_Train,
            epochs=200,
            batch_size=200,
            shuffle=True,
            validation_data=(X_Test, X_Test))

   #encoded_out= ec.predict(X_Test)
   #decoded_out=decoder.predict(encoded_out)

At least in principle, sigmoid should only be used for your last decoding layer (here decoded3 ) - see the examples in Building Autoencoders in Keras . So, change all your other activations to relu .

Also, accuracy does not make sense in autoencoders - just remove it from your model compilation and focus on the loss .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM