หน้าแรก การเทรดด้วยระบบ โพสต์

ใช้โมเดล ONNX เพื่อจำแนกตัวเลขที่เขียนด้วยมือใน MetaTrader 5

ไฟล์แนบ
47225.zip (25.17 KB, ดาวน์โหลด 0 ครั้ง)

EA ที่สามารถจำแนกตัวเลขที่เขียนด้วยมือได้

ฐานข้อมูล MNIST ประกอบด้วยภาพจำนวน 60,000 ภาพสำหรับการฝึกอบรมและ 10,000 ภาพสำหรับการทดสอบ ซึ่งภาพเหล่านี้ถูกสร้างขึ้นโดยการ "รีมิกซ์" ชุดข้อมูล NIST ดั้งเดิมที่มีขนาด 20x20 พิกเซล ขาว-ดำ ที่ได้มาจากสำนักงานสำรวจประชากรของสหรัฐฯ และเพิ่มตัวอย่างการทดสอบที่ได้จากนักเรียนมัธยมในอเมริกา ตัวอย่างถูกปรับขนาดให้เป็น 28x28 พิกเซล พร้อมการลดความหยาบของภาพ ซึ่งทำให้เกิดระดับสีเทา

โมเดลการจำแนกตัวเลขที่เขียนด้วยมือที่ฝึกอบรมแล้วคือ mnist.onnx ซึ่งสามารถดาวน์โหลดได้จาก Github ที่ Model Zoo (opset 8) สำหรับผู้ที่สนใจสามารถดาวน์โหลดและลองใช้โมเดลอื่น ๆ ยกเว้นโมเดลที่มี opset 1 ซึ่งไม่ถูกสนับสนุนโดย runtime ONNX ล่าสุด อย่างน่าสนใจคือ เวกเตอร์ผลลัพธ์ไม่ได้ถูกประมวลผลด้วยฟังก์ชัน Softmax ตามที่มักจะทำในโมเดลการจำแนกประเภท แต่นี่ไม่ใช่ปัญหาเพราะเราสามารถทำสิ่งนี้ได้เองอย่างง่ายดาย

int PredictNumber(void)
  {
    static matrixf image(28,28);
    static vectorf result(10);

    PrepareMatrix(image);

    if(!OnnxRun(ExtModel,ONNX_DEFAULT,image,result))
      {
        Print("OnnxRun error ",GetLastError());
        return(-1);
      }

    result.Activation(result,AF_SOFTMAX);
    int predict=int(result.ArgMax());
    if(result[predict]< 0.8)
        Print(result);
      Print("value ",predict," predicted with probability ",result[predict]);

    return(predict);
  }


คุณสามารถวาดตัวเลขในกริดพิเศษโดยใช้เมาส์ โดยกดปุ่มซ้ายของเมาส์ไว้ จากนั้นเพื่อจำแนกตัวเลขที่วาดขึ้น ให้กดปุ่ม CLASSIFY




หากความน่าจะเป็นที่ได้จากการจำแนกตัวเลขต่ำกว่า 0.8 เวกเตอร์ผลลัพธ์ที่แสดงความน่าจะเป็นสำหรับแต่ละคลาสจะถูกพิมพ์ลงในบันทึก เช่น ลองจำแนกฟิลด์ข้อมูลที่ว่างเปล่า

[0.095331445,0.10048489,0.10673151,0.10274081,0.087865397,0.11471312,0.094342403,0.094900772,0.10847695,0.09441267]
value 5 predicted with probability 0.11471312493085861
น่าสนใจว่า ความแม่นยำในการจำแนกหมายเลข 9 (9) จะต่ำกว่าจำนวนอื่น ๆ โดยเฉพาะตัวเลขที่มีแนวเอียงไปทางซ้ายจะถูกจำแนกได้แม่นยำมากกว่า


โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)