def plot_training(hist):
'''
This function take training model and plot history of accuracy and losses with the best epoch in both of them.
'''
# Define needed variables
tr_acc = hist.history['accuracy']
tr_loss = hist.history['loss']
val_acc = hist.history['val_accuracy']
val_loss = hist.history['val_loss']
index_acc = np.argmax(val_acc)
acc_highest = val_acc[index_acc]
index_loss = np.argmin(val_loss)
val_lowest = val_loss[index_loss]
Epochs = [i+1 for i in range(len(tr_acc))]
acc_label = f'best epoch= {str(index_acc + 1)}'
loss_label = f'best epoch= {str(index_loss + 1)}'
# Plot training history
plt.figure(figsize= (20, 20))
plt.style.use('fivethirtyeight')
# Training Accuracy
plt.subplot(2, 2, 1)
plt.plot(Epochs, tr_acc, 'r', label= 'Training Accuracy')
plt.plot(Epochs, val_acc, 'g', label= 'Validation Accuracy')
plt.scatter(index_acc + 1 , acc_highest, s= 150, c= 'blue', label= acc_label)
plt.title('Training and Validation Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
# Training Loss
plt.subplot(2, 2, 2)
plt.plot(Epochs, tr_loss, 'r', label= 'Training loss')
plt.plot(Epochs, val_loss, 'g', label= 'Validation loss')
plt.scatter(index_loss + 1, val_lowest, s= 150, c= 'blue', label= loss_label)
plt.title('Training and Validation Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.tight_layout
plt.show()
我尝试了不同的代码,我只得到了一张空白图,没有训练验证曲线
固定代码:
import numpy as np
import matplotlib.pyplot as plt
# Mock data to simulate model training
hist = {
'accuracy': np.random.uniform(0.7, 0.9, 10),
'loss': np.random.uniform(0.2, 0.4, 10),
'val_accuracy': np.random.uniform(0.6, 0.8, 10),
'val_loss': np.random.uniform(0.3, 0.5, 10)
}
# Define needed variables
tr_acc = hist['accuracy']
tr_loss = hist['loss']
val_acc = hist['val_accuracy']
val_loss = hist['val_loss']
index_acc = np.argmax(val_acc)
acc_highest = val_acc[index_acc]
index_loss = np.argmin(val_loss)
val_lowest = val_loss[index_loss]
Epochs = [i+1 for i in range(len(tr_acc))]
acc_label = f'best epoch= {str(index_acc + 1)}'
loss_label = f'best epoch= {str(index_loss + 1)}'
# Plot training history
plt.figure(figsize= (12, 10))
plt.style.use('fivethirtyeight')
# Training Accuracy
plt.subplot(2, 1, 1)
plt.plot(Epochs, tr_acc, 'r', label= 'Training Accuracy')
plt.plot(Epochs, val_acc, 'g', label= 'Validation Accuracy')
plt.scatter(index_acc + 1 , acc_highest, s= 150, c= 'blue', label= acc_label)
plt.title('Training and Validation Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
# Training Loss
plt.subplot(2, 1, 2)
plt.plot(Epochs, tr_loss, 'r', label= 'Training loss')
plt.plot(Epochs, val_loss, 'g', label= 'Validation loss')
plt.scatter(index_loss + 1, val_lowest, s= 150, c= 'blue', label= loss_label)
plt.title('Training and Validation Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.tight_layout()
plt.show()