我正在使用 matplotlib 繪制訓練神經網路的結果。
我成功地使用make_interp_spline給定的 x 軸 50(紀元)繪制了我的結果。1
當然,x 和 y 的大小相同(都有 9 個值),所以我很容易繪制它們。現在,我必須在同一個圖上顯示多個結果,因此我需要在 x 軸上使用不同的值,因為某些結果基于一個值(Epoch - 這是我的 x 軸)> 50(例如 60, 70 等)。
我嘗試初始化 linspace > 50 并且它有效,但結果以指數方式上升。2 有沒有辦法“洗掉”從 x = 50 開始的點?
另外,如果我在 x 軸上添加值,python 會拋出一個錯誤說:
ValueError: Shapes of x (14,) and y (10,) are incompatible
我將把我所取得的成就留到現在。
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import make_interp_spline
listA = [0.00,25.98386517667222,36.10066770794748,
31.70895801412648,29.430944916297648,
27.164039966977874,30.26995937742036,
29.23696275469900,28.11570993620774,
28.608378364299906]
epochList = [0, 10, 15, 20, 25, 30, 35, 40, 45, 50]
xnew = np.linspace(0, 50, 100)
spl_A = make_interp_spline(epochList, listA, k=3)
plt.figure(figsize=(15,15))
plt.plot(xnew, spl_A(xnew), label='A')
plt.scatter(epochList,listA)
plt.xlabel('Epochs')
plt.xticks(np.arange(min(epochList), max(epochList) 1, 5.0))
plt.ylabel('MAE')
plt.yticks(np.arange(0, 62, 5.0))
del listA[0]
plt.scatter(epochList[listA.index(min(listA)) 1], min(listA), label=F'Best MAE = {min(listA)}', s=200, marker='*', c='black')
plt.legend(loc='upper right', prop={'size': 14})
plt.grid()
plt.show()

uj5u.com熱心網友回復:
你似乎沒有改變listA。從第二張圖中,它看起來像是在interolop用 new繪制舊函式xnew。由于舊圖在末尾是指數的,因此新圖的末尾部分變為指數。我假設您有稍后的“時代”的新“MAE”資料。因此,您必須將這些資料放入listA. 您顯示的錯誤可能是由于您向epochlist添加新值但未向listA.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/387291.html
標籤:Python matplotlib 阴谋 scipy
