【发布时间】:2018-08-07 08:03:50
【问题描述】:
在训练 CNN 时,为什么验证损失可以在一个 epoch 中有所改善,即使之前的 epoch 验证损失没有改善?我不使用任何 dropout,训练和验证数据集在每个 epoch 之后都保持不变
型号:
model = Sequential()
model.add(Conv2D(filters=16, kernel_size=2, padding='same', activation='relu',
input_shape=(32, 32, 3)))
model.add(MaxPooling2D(pool_size=2))
model.add(Conv2D(filters=32, kernel_size=2, padding='same', activation='relu'))
model.add(Conv2D(filters=64, kernel_size=2, padding='same', activation='relu'))
#model.add(Dropout(0.3))
model.add(MaxPooling2D(pool_size=2))
model.add(Conv2D(filters=64, kernel_size=2, padding='same', activation='relu'))
model.add(Conv2D(filters=64, kernel_size=2, padding='same', activation='relu'))
#model.add(Dropout(0.3))
model.add(MaxPooling2D(pool_size=2))
#model.add(Dropout(0.3))
model.add(Flatten())
model.add(Dense(500, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(10, activation='softmax'))
下面的示例:epoch 14 改进了 val_loss 而 epoch 13 没有。这个怎么可能?这背后的直觉是什么?
Epoch 12/20
Epoch 00011: val_loss did not improve
14s - loss: 1.1619 - acc: 0.6079 - val_loss: 1.2863 - val_acc: 0.5308
Epoch 13/20
Epoch 00012: val_loss did not improve
14s - loss: 1.1741 - acc: 0.6029 - val_loss: 1.3020 - val_acc: 0.5930
Epoch 14/20
Epoch 00013: val_loss improved from 1.11924 to 0.97569, saving model to model.weights.best.hdf5
14s - loss: 1.1895 - acc: 0.6005 - val_loss: 0.9757 - val_acc: 0.6614
【问题讨论】:
标签: validation tensorflow keras conv-neural-network epoch