圖像識別實戰(五)----模型校驗&預測

圖像識別實戰(五)----模型校驗&預測

前面我們已經完成了數據的處理,模型的建立。萬事俱備,加油!

之前我們將數據劃分爲,訓練集和測試集,已經使用過訓練集進行訓練數據了。

First,來用測試集測試一下模型的準確率吧!

模型訓練

with fluid.dygraph.guard():
    accs = []
    model_dict, _ = fluid.load_dygraph('MyDNN')
    model = MyDNN()
    model.load_dict(model_dict) #加載模型參數
    model.eval() #評估模式
    for batch_id,data in enumerate(test_reader()):#測試集
        images=np.array([x[0].reshape(3,100,100) for x in data],np.float32)
        labels = np.array([x[1] for x in data]).astype('int64')
        labels = labels[:, np.newaxis]

        image=fluid.dygraph.to_variable(images)
        label=fluid.dygraph.to_variable(labels)
        
        predict=model(image)       
        acc=fluid.layers.accuracy(predict,label)
        accs.append(acc.numpy()[0])
        avg_acc = np.mean(accs)
    print(avg_acc)
Attention:

一定要記得

model.eval() 

將模型切換到評估模式,切換到評估模式,模型不會再訓練,參數不會再改變。

其他的和用動態圖訓練一樣,走一遍

預測

讀取預測圖像,進行預測

def load_image(path):
    img = Image.open(path)
    img = img.resize((100, 100), Image.ANTIALIAS)
    img = np.array(img).astype('float32')
    img = img.transpose((2, 0, 1))
    img = img/255.0
    print(img.shape)
    return img

構建預測動態圖過程

with fluid.dygraph.guard():
    infer_path = '手勢.JPG'
    model=MyDNN()#模型實例化
    model_dict,_=fluid.load_dygraph('MyDNN')
    model.load_dict(model_dict)#加載模型參數
    model.eval()#評估模式
    infer_img = load_image(infer_path)
    infer_img=np.array(infer_img).astype('float32')
    infer_img=infer_img[np.newaxis,:, : ,:]
    infer_img = fluid.dygraph.to_variable(infer_img)
    result=model(infer_img)
    display(Image.open('手勢.JPG'))
    print(np.argmax(result.numpy()))

最後給大家貼下我運行的結果把~

20200521094732004

。。。。

沒錯我的模型智能性不高,模型沒有訓練好

那麼,如果遇見這種情況又不想破壞模型本身,應該怎麼調優呢?

下面我將介紹幾個簡單調優方法:

  • 優化器,學習率調整

    opt=fluid.optimizer.SGDOptimizer(learning_rate=0.005,
    								parameter_list=model.parameters())
    

    學習率一般可以選擇0.001,不過可以根據實際情況進行調整(怎樣acc高,怎樣來),

    優化器,可以點擊進行學習

  • 迭代次數

    epochs_num=20
    

    20-50-100,都可以驚醒嘗試。

All in all,所有的代碼都是你編寫的,如果沒有明確提出不可以修改的地方都是可以隨意修改的,如果出錯運行不了大不了再拷貝一份,重新來過。

同時你也可以修改一下,神經網絡的結構,嘗試一下能不能提高acc,降低loss。

隨便改!大膽一點你就是acc最高的。

明確提出不可以修改的地方都是可以隨意修改的,如果出錯運行不了大不了再拷貝一份,重新來過。

同時你也可以修改一下,神經網絡的結構,嘗試一下能不能提高acc,降低loss。

隨便改!大膽一點你就是acc最高的。

ps:如果沒有預測的圖片,可以再訓練集或測試機中隨便找一張就行。自己拍一張,改下像素也是不錯的選擇偶~

如果想了解圖像識別實戰的全過程,請務必點擊博主名字,進入主頁查看全部。
別忘了留下,你的點贊、評論和關注偶~

Name:un_lock

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章