在Sigmax上使用Sigmoid有什么区别? (自动编码器,keras)

时间:2019-04-28 07:18:51

标签: python keras deep-learning softmax sigmoid

我在训练自动编码器神经网络(多层感知器)时遇到了这个问题。 这是我的代码

# AE encoding arch
model=Sequential()
model.add(Dense(units= 2000, activation= 'relu', input_shape= (784,)))
model.add(Dense(units= 1200, activation= 'relu'))
model.add(Dense(units= 500, activation= 'relu'))

# latent representation (lower dim representation)
model.add(Dense(units= 10, activation= 'sigmoid')) # mark this activation

# AE decoding arch
model.add(Dense(units= 500, activation= 'relu'))
model.add(Dense(units= 1200, activation= 'relu'))
model.add(Dense(units= 2000, activation= 'relu'))
model.add(Dense(units = 784))

上面的代码非常有效。 以前,我曾经在潜在表示密集层中使用“ softmax”作为激活:

model.add(Dense(units= 10, activation= 'softmax')) # mark this activation

似乎被卡在局部极小值中。损失没有减少。

Train on 60000 samples, validate on 10000 samples
Epoch 1/20
60000/60000 [==============================] - 7s 123us/step - loss: 0.0901 - val_loss: 0.0874
Epoch 2/20
60000/60000 [==============================] - 6s 106us/step - loss: 0.0872 - val_loss: 0.0875
Epoch 3/20
60000/60000 [==============================] - 6s 106us/step - loss: 0.0872 - val_loss: 0.0882
Epoch 4/20
60000/60000 [==============================] - 6s 106us/step - loss: 0.0872 - val_loss: 0.0875
Epoch 5/20
60000/60000 [==============================] - 6s 105us/step - loss: 0.0871 - val_loss: 0.0875

这是怎么回事?为什么sigmoid起作用但softmax不起作用?两者的目的不同吗?

0 个答案:

没有答案