在对模型进行拟合(运行了几个小时)之后,我想用下面的代码获得准确度:
train_loss=hist.history['loss']
val_loss=hist.history['val_loss']
train_acc=hist.history['acc']
val_acc=hist.history['val_acc']
xc=range(nb_epoch)
但是得到了一个错误,这是由我使用的不推荐的方法引起的。
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-233-081ed5e89aa4> in <module>()
3 train_loss=hist.history['loss']
4 val_loss=hist.history['val_loss']
----> 5 train_acc=hist.history['acc']
6 val_acc=hist.history['val_acc']
7 xc=range(nb_epoch)
KeyError: 'acc'
在尝试读取精度之前,我用来拟合模型的代码如下:
hist = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
verbose=1, validation_data=(X_test, Y_test))
hist = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
verbose=1, validation_split=0.2)
它在运行时生成此输出:
Epoch 1/20
237/237 [==============================] - 104s 440ms/step - loss: 6.2802 - val_loss: 2.4209
.....
.....
.....
Epoch 19/20
189/189 [==============================] - 91s 480ms/step - loss: 0.0590 - val_loss: 0.2193
Epoch 20/20
189/189 [==============================] - 85s 451ms/step - loss: 0.0201 - val_loss: 0.2312
我注意到我运行的是不推荐使用的方法和参数。
那么,我怎样才能在不需要再次拟合和等待几个小时的情况下读取精度和valúu精度呢?我试着用train_acc=hist.history['accuracy']
替换train_acc=hist.history['acc']
,但没有用。
编译模型时添加一个metrics=['accurity']
只需获得上一个历元的精度。hist.history.get('acc')[-1]
实际上,我要做的是使用GridSearchCV,然后获取best_score嫒参数来打印最佳指标
刚刚在
tensorflow==2.0.0
中试过。结果如下:打了个培训电话,比如:
上述调用的最终精度如下:
打印整个dict
history.history
将提供所有包含值的概述。 您将发现一行中报告的所有值,例如:可以从听写中读出
为了完整起见,我创建了如下模型:
在编译模型时,可能没有添加“acc”作为度量。
您可以从任何数据中获取度量和损失,而无需再次培训,方法是:
相关问题 更多 >
编程相关推荐