我仅使用ReLU激活构建了以下神经网络,它收敛了一些可接受的水平。我想尝试另一种激活方法,因为我阅读了它应该可以改善更深层次的培训。这是我的模型:
model = tfk.Sequential([
tfk.layers.Dense(h1, input_shape=(4,), activation='elu',kernel_initializer='he_uniform'),
tfk.layers.GaussianDropout(drop1),
tfk.layers.Dense(h2, activation= 'relu',kernel_initializer='he_uniform'),
tfk.layers.Dense(h3, activation= 'elu',kernel_initializer='he_uniform'),
tfk.layers.Dense(h4, activation= 'elu',kernel_initializer='he_uniform'),
tfk.layers.Dense(h4, activation= 'elu',kernel_initializer='he_uniform'),
tfk.layers.Dense(1,activation='relu',kernel_initializer='he_uniform'),
])
之所以在输出层中也使用ReLu激活,是因为我期望只有正输出。
问题在于它在前两个时期后停止训练。
Epoch 1/200
270625/270625 [==============================] - 41s 153us/sample - loss: 0.3676 - val_loss: 0.3654
Epoch 2/200
270625/270625 [==============================] - 39s 146us/sample - loss: 0.3674 - val_loss: 0.3654
Epoch 3/200
270625/270625 [==============================] - 40s 147us/sample - loss: 0.3674 - val_loss: 0.3654
无论多少个时代,损失都不会动。我尝试使用glorot_uniform初始化,结果相似。
我想知道问题是否出在tfk.layers.Dense中通过ELU激活的方式。因为它应该接收参数 alpha ,但是我无法在tfk.keras
中弄清楚该如何做。