ข้อไหนดีกว่าเพื่อความถูกต้องหรือเหมือนกัน แน่นอนถ้าคุณใช้ categorical_crossentropy คุณใช้การเข้ารหัสแบบร้อนและหากคุณใช้ sparse_categorical_crossentropy คุณจะเข้ารหัสเป็นจำนวนเต็มปกติ นอกจากนี้เมื่อใดจะดีกว่าอีกอัน
ข้อไหนดีกว่าเพื่อความถูกต้องหรือเหมือนกัน แน่นอนถ้าคุณใช้ categorical_crossentropy คุณใช้การเข้ารหัสแบบร้อนและหากคุณใช้ sparse_categorical_crossentropy คุณจะเข้ารหัสเป็นจำนวนเต็มปกติ นอกจากนี้เมื่อใดจะดีกว่าอีกอัน
คำตอบ:
ใช้ crossentropy เด็ดขาดหมวดหมู่เมื่อชั้นเรียนของคุณเป็นพิเศษร่วมกัน (เช่นเมื่อแต่ละตัวอย่างเป็นของชั้นหนึ่งเท่านั้น) และหมวดหมู่ crossentropy เมื่อตัวอย่างหนึ่งสามารถมีหลายชั้นเรียนหรือฉลากมีความน่าจะเป็นนุ่ม (เช่น [0.5, 0.3, 0.2])
สูตรสำหรับ crossentropy เด็ดขาด (S - ตัวอย่าง, C - classess, - ตัวอย่างเป็นคลาส c) คือ:
สำหรับกรณีที่คลาสมีเอกสิทธิ์คุณไม่จำเป็นต้องหาผลรวมสำหรับแต่ละตัวอย่างเท่านั้นค่าที่ไม่เป็นศูนย์คือแค่สำหรับคลาสจริง c
ช่วยให้ประหยัดเวลาและหน่วยความจำ พิจารณากรณีของ 10,000 คลาสเมื่อพวกเขาเป็นเอกสิทธิ์เฉพาะบุคคล - เพียง 1 ล็อกแทนการรวม 10,000 สำหรับแต่ละตัวอย่างเพียงหนึ่งจำนวนเต็มแทน 10000 ลอย
สูตรจะเหมือนกันทั้งสองกรณีดังนั้นจึงไม่มีผลกระทบต่อความแม่นยำ
o1,o2,o3
และแต่ละอันมี167,11,7
คลาสตามลำดับ ฉันได้อ่านคำตอบของคุณว่ามันจะไม่สร้างความแตกต่าง แต่จะมีความแตกต่างถ้าฉันใช้sparse__
หรือไม่ ฉันสามารถไปสำหรับcategorical
2 คนสุดท้ายและsparse
สำหรับคนแรกที่มี 167 คลาสในชั้นแรกได้หรือไม่?
คำตอบสั้น ๆ
หากเป้าหมายของคุณได้รับการเข้ารหัสร้อนแรงให้ใช้ categorical_crossentropy ตัวอย่างการเข้ารหัสแบบร้อนแรง:
[1,0,0]
[0,1,0]
[0,0,1]
แต่ถ้าเป้าหมายของคุณเป็นจำนวนเต็มให้ใช้ sparse_categorical_crossentropy ตัวอย่างของการเข้ารหัสจำนวนเต็ม (เพื่อความสมบูรณ์):
1
2
3
sparse_categorical_crossentropy
หรือไม่ และการfrom_logits
โต้แย้งหมายถึงอะไร