¿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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta