Keras是一个易于使用和强大的Python库,用于深度学习。 在设计和配置深度学习模型时,需要做很多决定。大多数决策都必须通过试验和错误来解决,并通过实际数据进行评估。 因此,拥有一种可靠的方法来评估神经网络和深度学习模型的性能是至关重要的。 在本文中,您将发现一些使用Keras评估模型性能的方法。
数据切分
大量的数据和模型的复杂性需要很长的训练时间。 因此,它通常使用简单的数据分离到训练和测试数据集或培训和验证数据集。 Keras提供了两种方便的方法来评估你的深度学习算法: 1)使用自动验证数据集; 2)使用手动验证数据集。
使用自动验证数据集
Keras可以将一部分训练数据分离到一个验证数据集中,并在每个时期对该验证数据集评估模型的性能。可以通过将fit()函数的validation_split参数设置为训练数据集大小的百分比来实现这一点,这里使用的数据集是一个人脸识别评分TopN的数据集且有对应的样本标签,形式如下所示:
下面的例子演示了在一个小的二进制分类问题上使用自动验证数据集,代码如下所示:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout
X = np.loadtxt('preprocess_final.txt',usecols=(0, 1, 2, 3, 4, 5, 6),delimiter='\t')
Y = np.loadtxt('preprocess_final.txt',usecols=(7),delimiter='\t')
model = Sequential()
model.add(Dense(16, input_dim=7, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(16, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(X, Y,
epochs=100,
validation_split=0.25,
batch_size=32)
运行这个示例,您可以看到每个epoch上的详细输出显示了训练数据集和验证数据集上的损失和准确性。
Epoch 1/100
13830/13830 [==============================] - 1s 44us/step - loss: 0.3361 - acc: 0.8907 - val_loss: 0.1682 - val_acc: 0.9601
Epoch 2/100
13830/13830 [==============================] - 1s 41us/step - loss: 0.2197 - acc: 0.9553 - val_loss: 0.1666 - val_acc: 0.9601
Epoch 3/100
13830/13830 [==============================] - 1s 52us/step - loss: 0.2085 - acc: 0.9553 - val_loss: 0.1656 - val_acc: 0.9601
Epoch 4/100
13830/13830 [==============================] - 1s 62us/step - loss: 0.1956 - acc: 0.9553 - val_loss: 0.1645 - val_acc: 0.9601
Epoch 5/100
13830/13830 [==============================] - 1s 47us/step - loss: 0.1947 - acc: 0.9553 - val_loss: 0.1624 - val_acc: 0.9601
使用手动验证数据集
Keras还允许您手动指定用于训练期间验证的数据集。 在本例中,我们使用Python scikit- learning机器学习库中的train_test_split()函数将数据分离到训练和测试数据集中。我们将75%用于培训,其余25%用于验证。 验证数据集可以通过validation_data参数指定到在Keras中的fit()函数,它接受输入和输出数据集的元组。
im