¿Cómo funciona la pérdida de entropía cruzada binaria en autoencoders?
Escribí un autoencoder de vainilla usando soloDense
capa. A continuación se muestra mi código:
iLayer = Input ((784,))
layer1 = Dense(128, activation='relu' ) (iLayer)
layer2 = Dense(64, activation='relu') (layer1)
layer3 = Dense(28, activation ='relu') (layer2)
layer4 = Dense(64, activation='relu') (layer3)
layer5 = Dense(128, activation='relu' ) (layer4)
layer6 = Dense(784, activation='softmax' ) (layer5)
model = Model (iLayer, layer6)
model.compile(loss='binary_crossentropy', optimizer='adam')
(trainX, trainY), (testX, testY) = mnist.load_data()
print ("shape of the trainX", trainX.shape)
trainX = trainX.reshape(trainX.shape[0], trainX.shape[1]* trainX.shape[2])
print ("shape of the trainX", trainX.shape)
model.fit (trainX, trainX, epochs=5, batch_size=100)
Preguntas: 1)softmax
proporciona distribución de probabilidad. Entendido. Esto significa que tendría un vector de 784 valores con probabilidad entre 0 y 1. Por ejemplo [0.02, 0.03 ..... hasta 784 elementos], sumando todos los 784 elementos proporciona 1.
2) No entiendo cómo funciona la crossentropía binaria con estos valores. La entropía cruzada binaria es para dos valores de salida, ¿verdad?