以下代码用于训练给定数据集(50,000个样本,64个暗点)的神经网络模型。
from keras import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
X, y = process_dataset()
model = Sequential([
Dense(16, input_dim=X.shape[1], activation='relu'),
Dense(16, activation='relu'),
Dense(1, activation='sigmoid')
])
'''
Compile the Model
'''
model.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.01), metrics=['accuracy'])
'''
Fit the Model
'''
model.fit(X, y, shuffle=True, epochs=1000, batch_size=200, validation_split=0.2, verbose=2)
在一开始,您可以在下面看到val_loss
从一个时期减少到另一个时期。
Epoch 82/1000
- 0s - loss: 0.2036 - acc: 0.9144 - val_loss: 0.2400 - val_acc: 0.8885
Epoch 83/1000
- 0s - loss: 0.2036 - acc: 0.9146 - val_loss: 0.2375 - val_acc: 0.8901
当模型经历多个时期时,损耗变化会变得很小,尤其是当时期数增加时。
Epoch 455/1000
- 0s - loss: 0.0903 - acc: 0.9630 - val_loss: 0.1317 - val_acc: 0.9417
Epoch 456/1000
- 0s - loss: 0.0913 - acc: 0.9628 - val_loss: 0.1329 - val_acc: 0.9443
请问两个问题:
谢谢
答案 0 :(得分:0)
这是由于权重的梯度收敛于局部(或全局)最小值。发生这种情况的某些原因是:
这里有更深入的解释:multiprocessing.dummy
一些解决方案是尝试对您的超参数进行网格搜索,例如学习率,每一层中的神经元数量,层数等。