我使用仅有的Dense
层编写了一个基础的自动编码器。以下是我的代码:
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)
问题:
1) softmax
提供概率分布。这意味着,我会有一个784个值的向量,概率在0和1之间。例如[0.02,0.03 ...直到784个项目],将所有784个元素相加得到1。
2) 我不明白二元交叉熵如何使用这些值。二元交叉熵是用于两个输出值的,对吗?