TensorFlow มีข้อเสนออะไรเพิ่มเติมสำหรับ keras?


16

ฉันทราบว่า keras ทำหน้าที่เป็นอินเทอร์เฟซระดับสูงเพื่อ TensorFlow

แต่สำหรับฉันแล้ว keras สามารถทำหน้าที่ได้หลายอย่างด้วยตัวเอง (การป้อนข้อมูลการสร้างแบบจำลองการฝึกอบรมการประเมินผล)

นอกจากนี้ฟังก์ชันการทำงานบางอย่างของ TensorFlow สามารถส่งโดยตรงไปยัง keras (เช่นเป็นไปได้ที่จะใช้ฟังก์ชัน tf metric หรือ loss เป็น keras)

คำถามของฉันคืออะไร TensorFlow ข้อเสนอที่ไม่สามารถทำซ้ำใน keras?

คำตอบ:


15

กรอบการเรียนรู้ลึกดำเนินการใน 2 ระดับของสิ่งที่เป็นนามธรรม:

  • ระดับล่าง : นี่คือตำแหน่งที่เฟรมเวิร์กเช่น Tensorflow, MXNet, Theano และ PyTorch นั่ง นี่คือระดับที่การดำเนินการทางคณิตศาสตร์เช่นการคูณเมทริกซ์เมทริกซ์ทั่วไปและการพื้นฐานของโครงข่ายใยประสาทเทียมเช่นการดำเนินการ Convolutional
  • ระดับที่สูงขึ้น : นี่คือที่ที่เฟรมเวิร์กเหมือน Keras นั่ง ในระดับนี้ระดับพื้นฐานดั้งเดิมจะใช้ในการสร้างโครงข่ายประสาทเทียมเช่นเลเยอร์และแบบจำลอง โดยทั่วไปในระดับนี้ API ที่เป็นประโยชน์อื่น ๆ เช่นการประหยัดรูปแบบและการฝึกอบรมรูปแบบก็จะถูกนำมาใช้เช่นกัน

คุณไม่สามารถเปรียบเทียบ Keras และ TensorFlow ได้เนื่องจากมันอยู่ในระดับที่เป็นนามธรรม ฉันต้องการใช้โอกาสนี้เพื่อแบ่งปันประสบการณ์การใช้ Keras ด้วย:

  • ฉันไม่ยอมรับว่า Keras มีประโยชน์สำหรับการเรียนรู้ขั้นพื้นฐานขั้นพื้นฐานเท่านั้น Keras เป็น API ที่เขียนอย่างสวยงาม ลักษณะการทำงานของ API ช่วยให้คุณสมบูรณ์และออกนอกเส้นทางของคุณสำหรับแอปพลิเคชันที่แปลกใหม่มากขึ้น Keras ไม่ได้บล็อกการเข้าถึงเฟรมเวิร์กระดับล่าง
  • Keras ส่งผลให้สามารถอ่านและรวบรัดรหัสได้มากขึ้น
  • Keras model Serialization / Deserialization API, callback และ data streaming โดยใช้ Python generators นั้นมีความเป็นผู้ใหญ่มาก
  • Keras ได้รับการประกาศให้เป็นทางการในระดับสูงอย่างเป็นทางการสำหรับ TensorFlow

9

หากคุณใช้ TensorFlow เป็นแบ็กเอนด์ของคุณเป็น keras พวกเขาแบ่งปันฟังก์ชั่นเดียวกันมากกว่าหรือน้อยกว่า ผ่านkeras.backendฟังก์ชั่นการเข้าถึง TensorFlow ในขณะที่ผ่านtf.kerasการเข้าถึง API ของ keras ผ่าน TensorFlow

เนื่องจากเป็นกรณีนี้ฉันขอแนะนำให้คุณติดกับ keras และหากคุณพบบางสิ่งที่ขาดหายไป (เช่นฟังก์ชั่นการวัดหรือการสูญเสีย) คุณสามารถนำเข้ามันผ่าน TensorFlow


5

Keras อย่างที่คุณบอกว่ามีฟังก์ชั่นทั้งหมด แต่นอกกรอบมันจะทำงานบน CPU เท่านั้น ด้วยการเสียบแบ็กเอนด์เช่น TensorFlow หรือ CNTK (ที่ฉันชอบเป็นการส่วนตัว) คุณจะปลดล็อกพลังของ GPU ซึ่งสามารถเร่งภาระงาน ML ได้อย่างมหาศาลโดยเฉพาะอย่างยิ่งภาระงาน DL หากคุณไม่มี GPU แบบแยกคุณจะได้รับประโยชน์น้อยที่สุด

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


5

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

อย่างไรก็ตามเมื่อไม่นานมานี้ฉันได้อ่านว่า Keras และ TensorFlow จะรวมตัวกันมากขึ้นซึ่งจะทำให้ชีวิตของคุณง่ายขึ้นมาก

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


5

ผู้เริ่มต้นทุกคนมีแบบสอบถามนี้ ดูเหมือนว่า Keras จะแก้ปัญหาฟังก์ชั่นพื้นฐานเช่นการป้อนข้อมูลการสร้างแบบจำลองการฝึกอบรมการประเมินผลในโค้ดที่น้อยลง

แต่เมื่อคุณเริ่มพัฒนาโมเดล ML ตั้งแต่เริ่มต้นคุณจะรู้ว่าคุณสามารถตั้งโปรแกรมคณิตศาสตร์จำนวนมากใน NN และไลบรารีเทนเซอร์โฟลว์มีฟังก์ชันและการควบคุมมากมายที่ทำให้แนวคิดเหล่านั้นเป็นจริงได้ มุมมองทางคณิตศาสตร์ของการเรียนรู้สามารถมองเห็นได้ง่ายและทำโดยใช้ NN ทำโดยใช้ TF

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.