การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

ไม่กี่เดือนที่ผ่านมา เพื่อนร่วมงานของเราจาก Google ค่าใช้จ่าย บน Kaggle การแข่งขันเพื่อสร้างลักษณนามสำหรับภาพที่ได้รับในความรู้สึกโลดโผน игре “วาดเร็วเข้า!” ทีมซึ่งรวมถึง Roman Vlasov ผู้พัฒนา Yandex ได้อันดับที่สี่ในการแข่งขัน ในการฝึกอบรมแมชชีนเลิร์นนิงในเดือนมกราคม Roman ได้แชร์แนวคิดของทีม การใช้งานตัวแยกประเภทขั้นสุดท้าย และแนวทางปฏิบัติที่น่าสนใจของฝ่ายตรงข้าม


- สวัสดีทุกคน! ฉันชื่อ Roma Vlasov วันนี้ฉันจะเล่าให้คุณฟังเกี่ยวกับ Quick, Draw! ความท้าทายในการจดจำ Doodle

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

ในทีมของเรามีห้าคน ฉันเข้าร่วมก่อนถึงเส้นตายการควบรวมกิจการ เราโชคไม่ดี เราถูกเขย่าเล็กน้อย แต่เราถูกเขย่าจากตำแหน่งเงิน และพวกเขาก็ถูกเขย่าจากตำแหน่งทองคำ และเราก็ได้อันดับที่สี่อันทรงเกียรติ

(ในระหว่างการแข่งขัน ทีมต่างๆ สังเกตตัวเองในการจัดอันดับซึ่งสร้างขึ้นจากผลลัพธ์ที่แสดงบนส่วนหนึ่งของชุดข้อมูลที่เสนอ ในทางกลับกัน การจัดอันดับสุดท้ายก็ถูกสร้างขึ้นที่อีกส่วนหนึ่งของชุดข้อมูล ซึ่งทำได้ดังนี้ ว่าผู้เข้าร่วมการแข่งขันไม่ได้ปรับอัลกอริธึมเป็นข้อมูลเฉพาะ ดังนั้น ในรอบชิงชนะเลิศเมื่อสลับระหว่างเรตติ้ง ตำแหน่งจะสั่นเล็กน้อย (จากภาษาอังกฤษสั่น - เพื่อผสม): สำหรับข้อมูลอื่นผลลัพธ์อาจกลายเป็นว่า ให้แตกต่างออกไป ทีมของ โรมัน ขึ้นอันดับหนึ่งใน XNUMX อันดับแรก ในกรณีนี้ XNUMX อันดับแรกคือ เงิน โซนเรตติ้งการเงิน เนื่องจากมีเพียง XNUMX อันดับแรกเท่านั้นที่ได้รับรางวัลเงินสด หลังจากเขย่าแล้ว ทีมก็เข้ามาแล้ว อันดับที่สี่ เช่นเดียวกัน อีกทีมแพ้ตำแหน่งทอง - เอ็ด)

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

การแข่งขันก็มีความสำคัญเช่นกันโดยที่ Evgeniy Babakhnin ได้รับปรมาจารย์, Ivan Sosin ได้รับปรมาจารย์, Roman Soloviev ยังคงเป็นปรมาจารย์, Alex Parinov ได้รับปรมาจารย์, ฉันกลายเป็นผู้เชี่ยวชาญและตอนนี้ฉันก็เป็นปรมาจารย์แล้ว

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

Quick Draw คืออะไร? นี่คือบริการจาก Google Google มีเป้าหมายในการเผยแพร่ AI และด้วยบริการนี้ต้องการแสดงให้เห็นว่าโครงข่ายประสาทเทียมทำงานอย่างไร คุณไปที่นั่นคลิก Let's Draw แล้วหน้าใหม่จะปรากฏขึ้นตามที่คุณบอก: วาดซิกแซก คุณมีเวลา 20 วินาทีในการทำเช่นนี้ คุณกำลังพยายามวาดซิกแซกใน 20 วินาที อย่างเช่นที่นี่ เป็นต้น หากคุณทำสำเร็จ เครือข่ายจะบอกว่ามันเป็นซิกแซกและคุณก็เดินหน้าต่อไป มีเพียงหกภาพดังกล่าว

หากเครือข่ายของ Google ล้มเหลวในการจดจำสิ่งที่คุณวาด จะมีการทำเครื่องหมายกากบาทให้กับงาน หลังจากนั้นฉันจะบอกคุณว่ามันจะมีความหมายอย่างไรในอนาคตว่าเครือข่ายจะยอมรับภาพวาดหรือไม่

บริการนี้รวบรวมผู้ใช้จำนวนมาก และรูปภาพทั้งหมดที่ผู้ใช้วาดจะถูกบันทึกไว้

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

เรารวบรวมภาพได้เกือบ 50 ล้านภาพ จากนี้ จึงมีการกำหนดวันฝึกซ้อมและทดสอบสำหรับการแข่งขันของเรา อย่างไรก็ตาม จำนวนข้อมูลในการทดสอบและจำนวนคลาสจะถูกเน้นด้วยตัวหนาด้วยเหตุผล ฉันจะบอกคุณเกี่ยวกับพวกเขาในภายหลัง

รูปแบบข้อมูลมีดังนี้ สิ่งเหล่านี้ไม่ได้เป็นเพียงภาพ RGB แต่หากพูดโดยคร่าวๆ จะเป็นบันทึกของทุกสิ่งที่ผู้ใช้ทำ Word คือเป้าหมายของเรา รหัสประเทศคือที่มาของผู้เขียนดูเดิล การประทับเวลาคือเวลา ป้ายกำกับที่รู้จักจะแสดงเพียงว่าเครือข่ายรู้จักรูปภาพจาก Google หรือไม่ และการวาดนั้นเป็นลำดับ การประมาณเส้นโค้งที่ผู้ใช้วาดด้วยจุด และการกำหนดเวลา นี่คือเวลาตั้งแต่เริ่มวาดภาพ

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

ข้อมูลถูกนำเสนอในสองรูปแบบ นี่คือรูปแบบแรก และรูปแบบที่สองเป็นแบบง่ายขึ้น พวกเขาตัดเวลาออกจากที่นั่นและประมาณชุดคะแนนนี้ด้วยชุดคะแนนที่เล็กกว่า พวกเขาใช้สำหรับสิ่งนี้ อัลกอริธึมดักลาส-เพกเกอร์. คุณมีชุดจุดจำนวนมากที่ประมาณเส้นตรง แต่จริงๆ แล้ว คุณสามารถประมาณเส้นนี้ได้ด้วยจุดเพียงสองจุด นี่คือแนวคิดของอัลกอริทึม

ข้อมูลถูกกระจายดังนี้ ทุกอย่างมีความสม่ำเสมอ แต่มีความผิดปกติอยู่บ้าง เมื่อเราแก้ไขปัญหาเราไม่ได้มองมัน สิ่งสำคัญคือไม่มีคลาสใดที่มีน้อยจริงๆ เราไม่จำเป็นต้องทำการสุ่มตัวอย่างแบบถ่วงน้ำหนักและการสุ่มตัวอย่างข้อมูลมากเกินไป

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

รูปภาพมีลักษณะอย่างไร? นี่คือคลาส "เครื่องบิน" และตัวอย่างจากคลาสนี้ซึ่งมีป้ายกำกับที่รู้จักและไม่รู้จัก อัตราส่วนของพวกเขาอยู่ที่ประมาณ 1 ต่อ 9 อย่างที่คุณเห็น ข้อมูลค่อนข้างมีสัญญาณรบกวน ฉันเดาว่ามันเป็นเครื่องบิน หากมองว่าไม่เป็นที่รู้จัก ส่วนใหญ่แล้วเป็นเพียงเสียงรบกวนเท่านั้น มีคนพยายามเขียนคำว่า "เครื่องบิน" แต่ดูเหมือนเป็นภาษาฝรั่งเศส

ผู้เข้าร่วมส่วนใหญ่เพียงแค่ใช้กริด ดึงข้อมูลจากลำดับของเส้นนี้เป็นภาพ RGB แล้วโยนลงในเครือข่าย ฉันวาดด้วยวิธีเดียวกันโดยประมาณ: ฉันเอาจานสี วาดบรรทัดแรกด้วยสีเดียว ซึ่งอยู่ที่จุดเริ่มต้นของจานสีนี้ บรรทัดสุดท้ายกับอีกสีหนึ่ง ซึ่งอยู่ท้ายจานสี และระหว่างพวกเขา ฉันสอดแทรกทุกที่โดยใช้พาเล็ตนี้ อย่างไรก็ตาม สิ่งนี้ให้ผลลัพธ์ที่ดีกว่าถ้าคุณวาดเหมือนในสไลด์แรก - แค่เป็นสีดำ

สมาชิกในทีมคนอื่นๆ เช่น Ivan Sosin พยายามใช้วิธีการวาดภาพที่แตกต่างออกไปเล็กน้อย ช่องหนึ่งเขาวาดภาพสีเทา ส่วนอีกช่องหนึ่งเขาวาดแต่ละจังหวะโดยมีการไล่ระดับสีตั้งแต่ต้นจนจบจาก 32 ถึง 255 และช่องที่สามเขาวาดการไล่ระดับสีเหนือทุกจังหวะตั้งแต่ 32 ถึง 255

สิ่งที่น่าสนใจอีกอย่างคือ Alex Parinov อัปโหลดข้อมูลไปยังเครือข่ายโดยใช้รหัสประเทศ

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

ตัวชี้วัดที่ใช้ในการแข่งขันคือ Mean Average Precision สาระสำคัญของตัวชี้วัดนี้สำหรับการแข่งขันคืออะไร? คุณสามารถให้คำทำนายได้สามคำ และหากไม่มีคำทำนายที่ถูกต้องในสามคำนี้ คุณจะได้ 0 หากมีคำทำนายที่ถูกต้อง ลำดับจะถูกนำมาพิจารณาด้วย และผลลัพธ์เป้าหมายจะนับเป็น 1 หารตามลำดับการทำนายของคุณ ตัวอย่างเช่น คุณสร้างตัวทำนายสามตัว และตัวทำนายที่ถูกต้องคือตัวแรก จากนั้นคุณหาร 1 ด้วย 1 แล้วได้ 1 หากตัวทำนายถูกต้องและลำดับของมันคือ 2 แล้วหาร 1 ด้วย 2 คุณจะได้ 0,5 อืม ฯลฯ

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

ด้วยการประมวลผลข้อมูลล่วงหน้า - วิธีการวาดภาพและอื่น ๆ - เราได้ตัดสินใจเพียงเล็กน้อย เราใช้สถาปัตยกรรมอะไร? เราพยายามใช้สถาปัตยกรรมไขมันเช่น PNASNet, SENet และสถาปัตยกรรมคลาสสิกอยู่แล้วเช่น SE-Res-NeXt พวกเขากำลังเข้าสู่การแข่งขันใหม่มากขึ้น นอกจากนี้ยังมี ResNet และ DenseNet

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

เราสอนเรื่องนี้อย่างไร? โมเดลทั้งหมดที่เราถ่ายได้รับการฝึกอบรมล่วงหน้าบนอิมเมจเน็ต แม้ว่าจะมีข้อมูลจำนวนมากถึง 50 ล้านภาพ แต่ถึงกระนั้น หากคุณใช้เครือข่ายที่ได้รับการฝึกอบรมล่วงหน้าบน imagenet มันจะแสดงผลลัพธ์ที่ดีกว่าการฝึกฝนตั้งแต่เริ่มต้น

เราใช้เทคนิคการสอนอะไรบ้าง? นี่คือ Cosing Annealing ด้วยการรีสตาร์ทแบบวอร์ม ซึ่งฉันจะพูดถึงในภายหลัง นี่เป็นเทคนิคที่ฉันใช้ในการแข่งขันล่าสุดเกือบทั้งหมด และด้วยเทคนิคเหล่านี้ พบว่าสามารถฝึกกริดได้ค่อนข้างดีเพื่อให้ได้ขั้นต่ำที่ดี

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

ถัดไป ลดอัตราการเรียนรู้บนที่ราบสูง คุณเริ่มฝึกฝนเครือข่าย กำหนดอัตราการเรียนรู้ที่แน่นอน สอนมันต่อไป และการสูญเสียของคุณจะค่อยๆ มาบรรจบกันเป็นค่าที่แน่นอน คุณตรวจสอบสิ่งนี้เป็นเวลาสิบยุคแล้วที่การสูญเสียไม่มีการเปลี่ยนแปลงเลย คุณลดอัตราการเรียนรู้ลงด้วยค่าบางอย่างและเรียนรู้ต่อไป มันลดลงเล็กน้อยอีกครั้ง มาบรรจบกันที่ระดับต่ำสุด และคุณจะลดอัตราการเรียนรู้ลงอีกครั้ง ไปเรื่อยๆ จนกระทั่งเครือข่ายของคุณมาบรรจบกันในที่สุด

ต่อไปเป็นเทคนิคที่น่าสนใจ ไม่เสื่อม อัตราการเรียนรู้ เพิ่มขนาดแบทช์ มีบทความชื่อเดียวกัน เมื่อคุณฝึกเครือข่าย คุณไม่จำเป็นต้องลดอัตราการเรียนรู้ คุณสามารถเพิ่มขนาดแบทช์ได้

เทคนิคนี้ถูกใช้โดย Alex Parinov เขาเริ่มต้นด้วยชุดที่เท่ากับ 408 และเมื่อเครือข่ายของเขาถึงจุดสูง เขาก็เพิ่มขนาดชุดเป็นสองเท่า ฯลฯ

อันที่จริง ฉันจำไม่ได้ว่าขนาดชุดของเขาถึงมูลค่าเท่าใด แต่สิ่งที่น่าสนใจคือ มีทีมใน Kaggle ที่ใช้เทคนิคเดียวกัน ขนาดชุดของพวกเขาคือประมาณ 10000 อย่างไรก็ตาม กรอบงานสมัยใหม่สำหรับการเรียนรู้เชิงลึก เช่น ตัวอย่างเช่น PyTorch ช่วยให้คุณทำสิ่งนี้ได้อย่างง่ายดาย คุณสร้างแบทช์ของคุณและส่งไปยังเครือข่ายไม่ใช่อย่างที่เป็นอยู่ทั้งหมด แต่แบ่งออกเป็นชิ้น ๆ เพื่อให้พอดีกับการ์ดวิดีโอของคุณ คำนวณการไล่ระดับสี และหลังจากที่คุณคำนวณการไล่ระดับสีสำหรับทั้งแบทช์แล้ว ให้อัปเดต น้ำหนัก

อย่างไรก็ตาม การแข่งขันครั้งนี้ยังคงรวมขนาดกลุ่มใหญ่ไว้ เนื่องจากข้อมูลค่อนข้างรบกวน และขนาดกลุ่มใหญ่ช่วยให้คุณประมาณค่าการไล่ระดับสีได้แม่นยำยิ่งขึ้น

นอกจากนี้ยังใช้การติดฉลากหลอกซึ่งส่วนใหญ่ใช้โดย Roman Soloviev เขาสุ่มตัวอย่างข้อมูลจากการทดสอบประมาณครึ่งหนึ่งเป็นชุด และฝึกกริดในชุดดังกล่าว

ขนาดของรูปภาพมีความสำคัญ แต่ความจริงก็คือคุณมีข้อมูลจำนวนมาก คุณต้องฝึกฝนเป็นเวลานาน และหากขนาดรูปภาพของคุณค่อนข้างใหญ่ คุณจะฝึกฝนเป็นเวลานานมาก แต่สิ่งนี้ไม่ได้เพิ่มคุณภาพของตัวแยกประเภทสุดท้ายของคุณมากนัก ดังนั้นจึงคุ้มค่าที่จะใช้การแลกเปลี่ยนบางอย่าง และเราลองใช้เฉพาะรูปภาพที่มีขนาดไม่ใหญ่มากเท่านั้น

เรียนรู้ทั้งหมดได้อย่างไร? ขั้นแรก ถ่ายภาพขนาดเล็ก มีหลายยุคสมัย ซึ่งใช้เวลาค่อนข้างมาก จากนั้นให้ภาพขนาดใหญ่เครือข่ายได้รับการฝึกอบรมและมากยิ่งขึ้นเพื่อไม่ให้ฝึกอบรมตั้งแต่เริ่มต้นและไม่เสียเวลามากนัก

เกี่ยวกับเครื่องมือเพิ่มประสิทธิภาพ เราใช้ SGD และอดัม ด้วยวิธีนี้เป็นไปได้ที่จะได้รับโมเดลเดียวซึ่งให้ความเร็ว 0,941-0,946 บนกระดานผู้นำสาธารณะซึ่งค่อนข้างดี

หากคุณประกอบโมเดลด้วยวิธีใดวิธีหนึ่ง คุณจะได้ประมาณ 0,951 หากใช้อีกหนึ่งเทคนิค คุณจะได้คะแนนสุดท้าย 0,954 บนกระดานสาธารณะเหมือนกับที่เราได้รับ แต่จะเพิ่มเติมในภายหลัง ต่อไป ฉันจะบอกคุณว่าเราประกอบโมเดลเหล่านี้ได้อย่างไร และวิธีที่เราจัดการเพื่อให้ได้ความเร็วสุดท้ายดังกล่าว

ต่อไป ฉันอยากจะพูดเกี่ยวกับ Cosing Annealing ด้วยการรีสตาร์ทแบบวอร์ม หรือ Stochastic Gradient Descent ด้วยการรีสตาร์ทแบบวอร์ม โดยหลักการแล้ว คุณสามารถใช้เครื่องมือเพิ่มประสิทธิภาพใดๆ ก็ได้ แต่ประเด็นก็คือ: หากคุณเพิ่งฝึกเครือข่ายเดียวและค่อย ๆ มาบรรจบกันจนเหลือน้อยที่สุด ทุกอย่างก็โอเค คุณจะได้เครือข่ายเดียว มันทำผิดพลาดบางอย่าง แต่คุณ สามารถฝึกให้แตกต่างออกไปเล็กน้อย คุณจะกำหนดอัตราการเรียนรู้เริ่มต้นไว้บางส่วน และค่อยๆ ลดลงตามสูตรนี้ คุณลดระดับลง เครือข่ายของคุณมาถึงระดับต่ำสุด จากนั้นคุณบันทึกน้ำหนัก และตั้งค่าอัตราการเรียนรู้ที่เริ่มต้นการฝึกอบรมอีกครั้ง ซึ่งจะสูงขึ้นจากขั้นต่ำนี้ และลดอัตราการเรียนรู้ของคุณอีกครั้ง

ดังนั้น คุณสามารถไปที่จุดต่ำสุดได้หลายจุดในคราวเดียว ซึ่งการขาดทุนของคุณจะเป็นบวกหรือลบเท่าๆ กัน แต่ความจริงก็คือเครือข่ายที่มีน้ำหนักเหล่านี้จะให้ข้อผิดพลาดที่แตกต่างกันในวันที่ของคุณ โดยเฉลี่ยแล้วคุณจะได้ค่าประมาณบางอย่างและความเร็วของคุณจะสูงขึ้น

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

เกี่ยวกับวิธีที่เราประกอบแบบจำลองของเรา ในช่วงเริ่มต้นของการนำเสนอ ฉันบอกว่าให้ใส่ใจกับปริมาณข้อมูลในการทดสอบและจำนวนชั้นเรียน หากคุณบวก 1 เข้ากับจำนวนเป้าหมายในชุดทดสอบและหารด้วยจำนวนคลาส คุณจะได้หมายเลข 330 และสิ่งนี้เขียนไว้ในฟอรัม - ว่าคลาสในการทดสอบมีความสมดุล นี้ก็สามารถใช้ได้

จากข้อมูลนี้ Roman Soloviev จึงได้หน่วยเมตริกขึ้นมา เราเรียกมันว่าคะแนนพร็อกซี ซึ่งมีความสัมพันธ์ค่อนข้างดีกับกระดานผู้นำ ประเด็นคือ: คุณทำการทำนาย เลือก 1 อันดับแรกของตัวทำนายของคุณ และนับจำนวนออบเจ็กต์สำหรับแต่ละคลาส ถัดไป ลบ 330 จากแต่ละค่าและเพิ่มค่าสัมบูรณ์ที่ได้

ได้รับค่าต่อไปนี้ สิ่งนี้ช่วยให้เราไม่สร้างกระดานผู้นำที่เจาะจง แต่ช่วยตรวจสอบภายในเครื่องและเลือกค่าสัมประสิทธิ์สำหรับวงดนตรีของเรา

ด้วยวงดนตรีคุณจะได้รับความเร็วเช่นนี้ ฉันจะทำอะไรได้อีก? สมมติว่าคุณใช้ข้อมูลที่คลาสในการทดสอบของคุณมีความสมดุล

ความสมดุลก็แตกต่างกัน ตัวอย่างของหนึ่งในนั้น — สมดุลจากพวกที่ได้อันดับหนึ่ง

เราทำอะไร? การทรงตัวของเรานั้นค่อนข้างง่าย Evgeny Babakhnin แนะนำ ขั้นแรก เราจัดเรียงการทำนายของเราตาม 1 อันดับแรก และเลือกผู้สมัครจากพวกเขา - เพื่อให้จำนวนคลาสไม่เกิน 330 แต่สำหรับบางคลาส คุณจะจบลงด้วยตัวทำนายน้อยกว่า 330 ตัว เอาล่ะ มาเรียงลำดับตาม 2 อันดับแรกและ 3 อันดับแรกด้วย และเราจะคัดเลือกผู้สมัครด้วย

การทรงตัวของเราแตกต่างจากการทรงตัวครั้งแรกอย่างไร? พวกเขาใช้วิธีการวนซ้ำ โดยเลือกคลาสที่ได้รับความนิยมมากที่สุดและลดความน่าจะเป็นของคลาสนั้นลงเล็กน้อยจนกระทั่งคลาสนั้นไม่ได้รับความนิยมมากที่สุดอีกต่อไป เราเรียนวิชาที่ได้รับความนิยมมากที่สุดรองลงมา ดังนั้นพวกเขาจึงลดพวกมันลงเรื่อยๆ จนกว่าจำนวนคลาสทั้งหมดจะเท่ากัน

ทุกคนใช้วิธีบวกหรือลบวิธีเดียวในการฝึกเครือข่าย แต่ไม่ใช่ทุกคนที่ใช้การปรับสมดุล เมื่อใช้การปรับสมดุล คุณสามารถไปสู่ทองคำ และถ้าคุณโชคดี ก็สามารถไปสู่เงินได้

จะประมวลผลวันที่ล่วงหน้าได้อย่างไร? ทุกคนประมวลผลวันที่ล่วงหน้าในลักษณะเดียวกัน - สร้างคุณสมบัติที่ทำด้วยมือ พยายามเข้ารหัสการกำหนดเวลาด้วยสีเส้นขีดที่แตกต่างกัน ฯลฯ Alexey Nozdrin-Plotnitsky ซึ่งได้อันดับที่ 8 พูดถึงเรื่องนี้

การจำแนกภาพวาดที่เขียนด้วยลายมือ รายงานใน Yandex

เขาทำมันแตกต่างออกไป เขาบอกว่าคุณสมบัติที่สร้างขึ้นเองทั้งหมดของคุณใช้งานไม่ได้ คุณไม่จำเป็นต้องทำเช่นนั้น เครือข่ายของคุณควรเรียนรู้ทั้งหมดนี้ด้วยตัวเอง แต่เขากลับมาพร้อมกับโมดูลการเรียนรู้ที่ประมวลผลข้อมูลของคุณล่วงหน้า เขาโยนข้อมูลต้นฉบับลงไปโดยไม่ต้องประมวลผลล่วงหน้า - พิกัดจุดและเวลา

จากนั้นเขาก็นำความแตกต่างตามพิกัด และเฉลี่ยทั้งหมดตามจังหวะเวลา และเขาได้เมทริกซ์ที่ค่อนข้างยาวขึ้นมา เขาใช้การบิดแบบ 1D หลายครั้งเพื่อให้ได้เมทริกซ์ขนาด 64xn โดยที่ n คือจำนวนคะแนนทั้งหมด และ 64 ถูกสร้างขึ้นเพื่อป้อนเมทริกซ์ผลลัพธ์ไปยังเลเยอร์ของเครือข่ายแบบบิดใด ๆ ซึ่งยอมรับจำนวนช่องสัญญาณ - 64. เขาได้รับเมทริกซ์ 64xn จากนั้นจึงจำเป็นต้องสร้างเทนเซอร์ขนาดบางขนาดเพื่อให้จำนวนช่องสัญญาณเท่ากับ 64 เขาทำให้จุด X, Y ทั้งหมดเป็นมาตรฐานในช่วงตั้งแต่ 0 ถึง 32 เพื่อสร้าง เทนเซอร์ขนาด 32x32 ฉันไม่รู้ว่าทำไมเขาถึงต้องการ 32x32 มันก็เกิดขึ้นแบบนั้น และที่พิกัดนี้ เขาวางส่วนของเมทริกซ์ขนาด 64xn นี้ไว้ ดังนั้นมันจึงลงเอยด้วยเทนเซอร์ขนาด 32x32x64 ที่คุณสามารถนำไปใส่ในโครงข่ายประสาทเทียมแบบบิดเพิ่มเติมได้ นั่นคือทั้งหมดที่ฉันอยากจะพูด

ที่มา: will.com

เพิ่มความคิดเห็น