Zel*_*elB 8 python machine-learning deep-learning keras tensorflow
拟合模型(运行了几个小时)之后,我想通过以下代码获得准确性:
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)
Run Code Online (Sandbox Code Playgroud)
训练模型的结果,但出现错误,这是由于我使用的方法过时所致。
---------------------------------------------------------------------------
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'
Run Code Online (Sandbox Code Playgroud)
在尝试读取精度之前,我用来拟合模型的代码如下:
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)
Run Code Online (Sandbox Code Playgroud)
运行时会产生以下输出:
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
Run Code Online (Sandbox Code Playgroud)
我注意到我正在运行不推荐使用的方法和参数。
那么,如何在不再次适应的情况下又再等待几个小时的情况下读取精度和val_accuracy?我尝试替换为train_acc=hist.history['acc'],train_acc=hist.history['accuracy']但没有帮助。
Dan*_*ler 12
编译模型时,您可能没有添加“ acc”作为指标。
model.compile(optimizer=..., loss=..., metrics=['accuracy',...])
Run Code Online (Sandbox Code Playgroud)
您可以从任何数据中获取指标和损失,而无需再次进行以下培训:
model.evaluate(X, Y)
Run Code Online (Sandbox Code Playgroud)
刚刚试了一下tensorflow==2.0.0。结果如下:
给定一个培训电话,如:
history = model.fit(train_data, train_labels, epochs=100,
validation_data=(test_images, test_labels))
Run Code Online (Sandbox Code Playgroud)
上述调用的最终精度可以读出如下:
history.history['accuracy']
Run Code Online (Sandbox Code Playgroud)
打印整个 dict 可以history.history让您概览所有包含的值。您会发现在一行中报告了所有值,例如:
7570/7570 [==============================] - 42s 6ms/sample - loss: 1.1612 - accuracy: 0.5715 - val_loss: 0.5541 - val_accuracy: 0.8300
Run Code Online (Sandbox Code Playgroud)
可以从那个字典中读出。
为了完整起见,我创建了如下模型:
model.compile(optimizer=tf.optimizers.Adam(learning_rate=0.0001,
beta_1=0.9,
beta_2=0.999,
epsilon=1e-07,
amsgrad=False,
name='Adam'
),
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
Run Code Online (Sandbox Code Playgroud)
编译模型时添加一个 metrics = ['accuracy']
只需获得最后一个时代的准确性。hist.history.get('acc')[-1]
我实际上会做的是使用 GridSearchCV 然后获取 best_score_ 参数来打印最佳指标
| 归档时间: |
|
| 查看次数: |
14965 次 |
| 最近记录: |