上次我們已經建立好輸入輸出層和隱藏層,把模型分為20%的訓練集和80%的測試集,並且利用20%的訓練集進行十次訓練了,我們今天要利用這十次的訓練結果來預測另外80%的測試集,有一點需要注意的是,如果你之後要進行其他的模型預測的話,你的訓練集跟測試集不能有交集,不然會干擾電腦的判斷結果。
回歸正題,要怎麼確認預測的結果是否正確呢? 我們要利用到之前一篇提到的顯示結果和模型自帶的標籤(label),如果兩者出來的值相同則代表我們的預測是正確的,不相同則表示錯誤。
程式講解:
def show_images_labels_predictions(images,labels,
predictions,start_id,num=10):
plt.gcf().set_size_inches(12, 14)
if num>25: num=25
for i in range (0, num):
ax=plt.subplot(5,5, 1+i)
ax.imshow(images[start_id], cmap='binary')
if( len(predictions) > 0 ):
title = 'ai = ' + str(predictions[start_id])
title += ('(o)' if predictions[start_id]==
labels[start_id] else ' (x)')
title += '\nlabel = ' + str(labels[start_id])
else :
title = 'label = ' + str(labels[start_id])
ax.set_title(title,fontsize=12)
ax.set_xticks([]);ax.set_yticks([])
start_id+=1
plt.show()
上面這段程式碼跟之前的顯示結果有什麼不同呢? 很明顯可以看到多了一段判斷式,我們就是要用它來判斷預測結果是否正確,if判斷式的條件是如果有預測值才會顯示正確或錯誤,沒有預測值則直接印出標籤,若是有預測值的話再判斷預測值是否等於標籤的值,等於的話在預測值和標籤的位置中間印出o,不同則印出x,如下圖顯示。