1. ภาพรวม
ในห้องทดลองนี้ คุณจะได้เรียนรู้วิธีสร้างตัวแยกประเภท Keras แทนที่จะพยายามหาการผสมผสานชั้นของเครือข่ายประสาทที่สมบูรณ์แบบเพื่อจดจำดอกไม้ เราจะใช้เทคนิคที่เรียกว่าการเรียนรู้แบบโอนเพื่อปรับโมเดลที่ผ่านการฝึกอบรมมาล่วงหน้าที่มีประสิทธิภาพให้เข้ากับชุดข้อมูลของเราก่อน
ห้องปฏิบัติการนี้มีคำอธิบายทางทฤษฎีที่จำเป็นเกี่ยวกับโครงข่ายประสาทและเป็นจุดเริ่มต้นที่ดีสำหรับนักพัฒนาซอฟต์แวร์ซึ่งเรียนรู้เกี่ยวกับการเรียนรู้เชิงลึก
บทแนะนำนี้เป็นส่วนหนึ่งของชุด "Keras ใน TPU" ส่วนที่ 2 คุณดำเนินการตามลำดับต่อไปนี้หรือจะดำเนินการแยกต่างหากก็ได้
- ไปป์ไลน์ข้อมูลความเร็ว TPU: tf.data.Dataset และ TFRecords
- [THIS LAB] โมเดล Keras แรกของคุณที่ใช้การเรียนรู้แบบโอน
- โครงข่ายระบบประสาทเทียมแบบ Convolutional ที่มี Keras และ TPU
- Convnets, การบีบ, Xception พร้อม Keras และ TPU
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างตัวแยกประเภทรูปภาพ Keras ของคุณเองด้วยเลเยอร์ Softmax และ Loss แบบ Cross-Entropy
- เพื่อโกง 😈 โดยใช้การโอนการเรียนรู้แทนการสร้างโมเดลของคุณเอง
ความคิดเห็น
หากพบสิ่งผิดปกติในแท็บทดลองใช้โค้ดนี้ โปรดแจ้งให้เราทราบ คุณสามารถแสดงความคิดเห็นผ่านปัญหาใน GitHub [ลิงก์ความคิดเห็น]
2. คู่มือเริ่มต้นฉบับย่อสำหรับ Google Colaboratory
ห้องทดลองนี้ใช้ Google Collaboratory โดยที่คุณไม่ต้องตั้งค่าใดๆ Colaboratory เป็นแพลตฟอร์มสมุดบันทึกออนไลน์สำหรับวัตถุประสงค์ด้านการศึกษา โดยมีการฝึกอบรม CPU, GPU และ TPU ฟรี
คุณสามารถเปิดสมุดบันทึกตัวอย่างนี้และเรียกใช้เซลล์ 2-3 เซลล์เพื่อทำความคุ้นเคยกับ Colaboratory
เลือกแบ็กเอนด์ TPU
ในเมนู Colab ให้เลือกรันไทม์ > เปลี่ยนประเภทรันไทม์ แล้วเลือก TPU ในโปรแกรมแก้ไขโค้ดนี้ คุณจะใช้ TPU (Tensor Processing Unit) ที่มีประสิทธิภาพซึ่งรองรับการฝึกด้วยฮาร์ดแวร์ที่เร่งความเร็ว การเชื่อมต่อกับรันไทม์จะเกิดขึ้นโดยอัตโนมัติเมื่อเรียกใช้ครั้งแรก หรือคุณจะใช้ปุ่ม "เชื่อมต่อ" ที่มุมขวาบนก็ได้
การดำเนินการของ Notebook
เรียกใช้ทีละเซลล์ด้วยการคลิกที่เซลล์แล้วกด Shift-ENTER นอกจากนี้ คุณยังเรียกใช้ทั้งสมุดบันทึกได้ด้วย รันไทม์ > เรียกใช้ทั้งหมด
สารบัญ
สมุดบันทึกทั้งหมดมีสารบัญ คุณเปิดเมนูได้โดยใช้ลูกศรสีดําทางด้านซ้าย
เซลล์ที่ซ่อนอยู่
บางเซลล์จะแสดงเฉพาะชื่อ ฟีเจอร์นี้เป็นฟีเจอร์สำหรับสมุดบันทึกของ Colab โดยเฉพาะ คุณสามารถดับเบิลคลิกเพื่อดูโค้ดภายในได้ แต่โดยปกติแล้วโค้ดดังกล่าวไม่น่าตื่นเต้นมากนัก โดยทั่วไปจะรองรับหรือแสดงฟังก์ชันภาพ คุณยังต้องเรียกใช้เซลล์เหล่านี้เพื่อให้มีการกำหนดฟังก์ชันภายในเซลล์
การตรวจสอบสิทธิ์
Colab อาจเข้าถึงที่เก็บข้อมูล Google Cloud Storage ส่วนตัวได้หากคุณตรวจสอบสิทธิ์ด้วยบัญชีที่ได้รับอนุญาต ข้อมูลโค้ดด้านบนจะทริกเกอร์กระบวนการตรวจสอบสิทธิ์
3. [INFO] ข้อมูลเบื้องต้นเกี่ยวกับตัวจัดประเภทโครงข่ายประสาทเทียม
สรุป
หากคุณทราบคำศัพท์ทั้งหมดในตัวหนาในย่อหน้าถัดไปแล้ว คุณสามารถย้ายไปยังแบบฝึกหัดถัดไป หากคุณเพิ่งเริ่มต้นเรียนรู้เชิงลึก ก็ยินดีรับฟังเสมอ
สำหรับโมเดลที่สร้างเป็นลำดับของเลเยอร์ Keras มี Sequential API เช่น ตัวจัดประเภทรูปภาพที่ใช้เลเยอร์แบบหนา 3 เลเยอร์สามารถเขียนใน Keras ดังนี้
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=[192, 192, 3]),
tf.keras.layers.Dense(500, activation="relu"),
tf.keras.layers.Dense(50, activation="relu"),
tf.keras.layers.Dense(5, activation='softmax') # classifying into 5 classes
])
# this configures the training of the model. Keras calls it "compiling" the model.
model.compile(
optimizer='adam',
loss= 'categorical_crossentropy',
metrics=['accuracy']) # % of correct answers
# train the model
model.fit(dataset, ... )
โครงข่ายประสาทแบบหนาแน่น
นี่คือโครงข่ายระบบประสาทเทียมที่ง่ายที่สุดในการจัดประเภทรูปภาพ ซึ่งประกอบด้วย "เซลล์ประสาท" ที่เรียงกันเป็นชั้นๆ เลเยอร์แรกจะประมวลผลข้อมูลอินพุตและส่งเอาต์พุตไปยังเลเยอร์อื่นๆ เรียกกันว่า "หนาแน่น" เนื่องจากเซลล์ประสาทแต่ละเซลล์เชื่อมต่อกับเซลล์ประสาททั้งหมดในเลเยอร์ก่อนหน้า
คุณสามารถนำภาพไปไว้ในเครือข่ายดังกล่าวได้โดยการปรับค่า RGB ของพิกเซลทั้งหมดให้เป็นเวกเตอร์แบบยาวและใช้เป็นอินพุต ไม่ใช่เทคนิคที่ดีที่สุดสำหรับการจดจำรูปภาพ แต่เราจะปรับปรุงในภายหลัง
Neurons, activations, RELU
"เซลล์ประสาท" จะคำนวณผลรวมถ่วงน้ำหนักของอินพุตทั้งหมด เพิ่มค่าที่เรียกว่า "อคติ" และป้อนผลลัพธ์ผ่านวิธีการที่เรียกว่า "ฟังก์ชันการเปิดใช้งาน" คุณจะไม่ทราบน้ำหนักและความเอนเอียงดังกล่าวในตอนแรก ระบบจะเริ่มต้นค่าเหล่านี้แบบสุ่มและ "เรียนรู้" โดยการฝึกโครงข่ายระบบประสาทเทียมด้วยข้อมูลจำนวนมากที่ทราบ
ฟังก์ชันการเปิดใช้งานที่ได้รับความนิยมสูงสุดเรียกว่า RELU ซึ่งย่อมาจาก Rectified Linear Unit ฟังก์ชันนี้เป็นฟังก์ชันที่ง่ายมากดังที่เห็นในกราฟด้านบน
การเปิดใช้งาน Softmax
เครือข่ายด้านบนสิ้นสุดด้วยชั้นนิวรอน 5 ชั้น เนื่องจากเราจัดหมวดหมู่ดอกไม้ออกเป็น 5 หมวดหมู่ (กุหลาบ ทิวลิป บัวบก เดซี่ ทานตะวัน) เซลล์ประสาทในชั้นกลางเปิดใช้งานโดยใช้ฟังก์ชันการเปิดใช้งาน RELU แบบดั้งเดิม แต่เราต้องการคํานวณตัวเลขระหว่าง 0 ถึง 1 ในเลเยอร์สุดท้าย ซึ่งแสดงถึงแนวโน้มที่ดอกไม้นี้จะดอกกุหลาบ ดอกทิวลิป และอื่นๆ สำหรับกรณีนี้ เราจะใช้ฟังก์ชันเปิดใช้งานที่ชื่อ "softmax"
การใช้ Softmax ในเวกเตอร์ทําได้โดยนําค่าที่ยกกำลังขององค์ประกอบแต่ละรายการ แล้วนอร์มาไลซ์เวกเตอร์ โดยปกติจะใช้ L1 Norm (ผลรวมของค่าสัมบูรณ์) เพื่อให้ค่าทั้งหมดรวมกันได้ 1 และตีความเป็นความน่าจะเป็นได้
Cross-entropy loss
เมื่อเครือข่ายประสาทของเราสร้างการคาดการณ์จากรูปภาพอินพุตแล้ว เราจําเป็นต้องวัดประสิทธิภาพของผลลัพธ์ที่ได้ ซึ่งก็คือระยะห่างระหว่างสิ่งที่เครือข่ายบอกเรากับคําตอบที่ถูกต้อง ซึ่งมักเรียกว่า "ป้ายกํากับ" โปรดทราบว่าเรามีป้ายกำกับที่ถูกต้องสำหรับรูปภาพทั้งหมดในชุดข้อมูล
ระยะทางใดก็ได้ แต่สำหรับปัญหาการจัดประเภท ระยะทางที่เรียกว่า "ระยะทางแบบ Cross-Entropy" จะมีประสิทธิภาพมากที่สุด เราจะเรียกฟังก์ชันนี้ว่าฟังก์ชัน "ข้อผิดพลาด" หรือ "Loss"
การไล่ระดับสี
"การฝึก" เครือข่ายประสาทเทียมหมายถึงการใช้รูปภาพและป้ายกำกับสำหรับการฝึกเพื่อปรับน้ำหนักและค่าอคติเพื่อลดฟังก์ชันการสูญเสีย Cross-Entropy วิธีการทํางานมีดังนี้
ครอสเอนโทรปีเป็นฟังก์ชันของน้ำหนัก การให้น้ำหนักพิเศษ พิกเซลของรูปภาพที่ใช้ในการฝึก และคลาสที่รู้จัก
หากเราคำนวณอนุพันธ์ย่อยของครอสเอนโทรปีที่เกี่ยวข้องกับน้ำหนักและความลำเอียงทั้งหมด เราได้รับ "การไล่ระดับสี" มาคำนวณสำหรับรูปภาพ ป้ายกำกับ และค่าปัจจุบันของน้ำหนักและอคติที่ระบุ โปรดทราบว่าเราอาจมีน้ำหนักและค่ากําหนดล่วงหน้าหลายล้านรายการ ดังนั้นการคํานวณอนุพันธ์จึงดูเหมือนจะเป็นงานที่หนักมาก โชคดีที่ Tensorflow ดำเนินการแทนเรา คุณสมบัติทางคณิตศาสตร์ของไล่ระดับสีคือชี้ "ขึ้น" เนื่องจากเราต้องการไปยังจุดที่ครอสเอนโทรปีต่ำ เราจึงไปในทิศทางตรงกันข้าม เราจะอัปเดตน้ำหนักและค่ากําหนดด้วยเศษส่วนของอนุพันธ์ จากนั้น เราจะทำสิ่งเดียวกันนี้ซ้ำแล้วซ้ำอีกโดยใช้อิมเมจและป้ายกำกับการฝึกชุดถัดไป ในลูปการฝึก เราหวังว่าค่านี้จะเป็นจุดที่ Cross-Entropy มีค่าต่ำสุด แม้ว่าจะไม่มีการรับประกันว่าค่าต่ำสุดนี้จะเป็นค่าเดียว
แบบมินิแบตช์และโมเมนตัม
คุณสามารถคํานวณการไล่ระดับสีในรูปภาพตัวอย่างเพียงภาพเดียวและอัปเดตน้ำหนักและน้ำหนักค่าต่างๆ ได้ทันที แต่การไล่ระดับสี เช่น รูปภาพ 128 ภาพจะให้การไล่ระดับสีที่แสดงถึงข้อจำกัดที่กำหนดโดยรูปภาพตัวอย่างที่แตกต่างกันได้ดีกว่า และมีแนวโน้มที่จะบรรจบกันในผลที่ได้เร็วกว่า ขนาดของมินิแบตช์จะเป็นพารามิเตอร์ที่ปรับได้
เทคนิคนี้บางครั้งเรียกว่า "การไล่ระดับสีแบบสโตแคติก" มีประโยชน์ในทางปฏิบัติมากกว่าอีกข้อหนึ่ง คือ การทำงานกับกลุ่มแบทช์ยังหมายถึงการทำงานกับเมทริกซ์ขนาดใหญ่ และมักจะเพิ่มประสิทธิภาพใน GPU และ TPU ได้ง่ายกว่า
การบรรจบกันอาจยังค่อนข้างยุ่งเหยิง และสามารถหยุดได้ถ้าเวกเตอร์การไล่ระดับสีเป็นเลข 0 ทั้งหมด หมายความว่าเราพบคะแนนขั้นต่ำแล้วใช่ไหม ไม่ได้เสมอไป องค์ประกอบของไล่ระดับสีอาจเป็น 0 ที่ค่าต่ำสุดหรือสูงสุด เมื่อเวกเตอร์ของเส้นลาดที่มีองค์ประกอบหลายล้านรายการเป็น 0 ทั้งหมด ความน่าจะเป็นที่ 0 ทั้งหมดจะสอดคล้องกับจุดต่ำสุดและไม่มีจุดใดเลยที่สอดคล้องกับจุดสูงสุดนั้นค่อนข้างต่ำ ในมิติข้อมูลที่มีหลายมิติ จุดยอดยอดขั้วค่อนข้างพบได้ทั่วไป และเราไม่ต้องการหยุดอยู่ที่จุดยอดยอดขั้ว
ภาพ: จุดยอด เส้นลาดเป็น 0 แต่ไม่ใช่ค่าต่ำสุดในทุกทิศทาง (การระบุแหล่งที่มาของรูปภาพ วิกิมีเดีย: โดย Nicoguaro - ผลงานของตนเอง, CC BY 3.0)
วิธีแก้ปัญหาคือการเพิ่มแรงกระตุ้นให้กับอัลกอริทึมการเพิ่มประสิทธิภาพเพื่อให้ข้ามจุดยอดได้โดยไม่ต้องหยุด
อภิธานศัพท์
กลุ่มหรือกลุ่มย่อย: การฝึกจะทํากับชุดข้อมูลและป้ายกำกับการฝึกอยู่เสมอ ซึ่งจะช่วยให้อัลกอริทึมบรรจบกัน มิติข้อมูล "กลุ่ม" มักจะเป็นมิติข้อมูลแรกของเทนเซอร์ข้อมูล เช่น เทนเซอร์ที่มีรูปร่าง [100, 192, 192, 3] มีรูปภาพ 100 รูปขนาด 192x192 พิกเซลที่มีค่า 3 ค่าต่อพิกเซล (RGB)
การสูญเสียการครอสเอนโทรปี: ฟังก์ชันการสูญเสียพิเศษที่มักใช้ในตัวแยกประเภท
เลเยอร์แบบหนาแน่น: เลเยอร์ของเซลล์ประสาทที่เซลล์ประสาทแต่ละเซลล์เชื่อมต่อกับเซลล์ประสาททั้งหมดในเลเยอร์ก่อนหน้า
features: อินพุตของโครงข่ายประสาทบางครั้งเรียกว่า "ฟีเจอร์" ศิลปะในการพิจารณาว่าส่วนใดของชุดข้อมูล (หรือการรวมส่วนต่างๆ) ที่จะป้อนลงในโครงข่ายระบบประสาทเทียมเพื่อรับการคาดการณ์ที่ดีเรียกว่า "Feature Engineering"
ป้ายกํากับ: ชื่อเรียกอีกอย่างของ "คลาส" หรือคําตอบที่ถูกต้องในปัญหาการจัดประเภทที่มีการควบคุม
อัตราการเรียนรู้: เศษส่วนของการไล่ระดับสีที่มีการอัปเดตน้ำหนักและน้ำหนักพิเศษในแต่ละการวนซ้ำการฝึก
Logit: เอาต์พุตของชั้นนิวรอนก่อนใช้ฟังก์ชันการเปิดใช้งานเรียกว่า "Logit" คำนี้มาจาก "ฟังก์ชันโลจิสติก" หรือที่รู้จักกันในชื่อ "ฟังก์ชัน sigmoid" ซึ่งเคยเป็นฟังก์ชันเปิดใช้งานที่ได้รับความนิยมสูงสุด "เอาต์พุตระบบประสาทก่อนฟังก์ชันโลจิสติกส์" ถูกย่อเป็น "logits"
loss: ฟังก์ชันข้อผิดพลาดที่เปรียบเทียบเอาต์พุตของโครงข่ายระบบประสาทเทียมกับคำตอบที่ถูกต้อง
เซลล์ประสาท: คำนวณผลรวมถ่วงน้ำหนักของอินพุต จะเพิ่มการให้น้ำหนักพิเศษ และป้อนผลลัพธ์ผ่านฟังก์ชันการเปิดใช้งาน
การเข้ารหัสแบบ One-Hot: คลาส 3 จาก 5 ได้รับการเข้ารหัสเป็นเวกเตอร์ขององค์ประกอบ 5 โดยค่า 0 ทั้งหมดยกเว้นค่าตัวที่ 3 ซึ่งก็คือ 1
relu: หน่วยเชิงเส้นที่แก้ไขแล้ว ฟังก์ชันการเปิดใช้งานยอดนิยมสำหรับเซลล์ประสาท
sigmoid: ฟังก์ชันการเปิดใช้งานอีกรูปแบบหนึ่งที่เคยได้รับความนิยมและยังคงมีประโยชน์ในบางกรณี
softmax: ฟังก์ชันเปิดใช้งานพิเศษที่ทำงานกับเวกเตอร์ เพิ่มความแตกต่างระหว่างส่วนประกอบที่ใหญ่ที่สุดกับองค์ประกอบอื่นๆ ทั้งหมด และยังทำให้เวกเตอร์มีผลรวมเป็น 1 ด้วย เพื่อให้สามารถตีความว่าเป็นเวกเตอร์ของความน่าจะเป็น ใช้เป็นขั้นตอนสุดท้ายในตัวแยกประเภท
tensor: "Tensor" คล้ายกับเมทริกซ์ แต่มีมิติข้อมูลเป็นจำนวนเท่าใดก็ได้ Tensor หนึ่งมิติคือเวกเตอร์ Tensor 2 มิติคือเมทริกซ์ และจากนั้นคุณสามารถมี Tensor ที่มีมิติข้อมูล 3, 4, 5 หรือมากกว่าได้
4. ถ่ายทอดการเรียนรู้
สำหรับปัญหาการจัดประเภทรูปภาพ เลเยอร์ที่หนาแน่นอาจไม่เพียงพอ เราต้องเรียนรู้เกี่ยวกับเลเยอร์คอนโวลูชัน (Convolution) และวิธีการต่างๆ ในการจัดเรียงเลเยอร์นั้น
แต่เราใช้ทางลัดได้เช่นกัน โครงข่ายประสาทแบบ Convolutive ที่ฝึกมาอย่างสมบูรณ์พร้อมให้ดาวน์โหลด คุณสามารถตัดเลเยอร์สุดท้ายซึ่งเป็นส่วนหัวการแยกประเภท Softmax ออก แล้วแทนที่ด้วยเลเยอร์ของคุณเองได้ น้ำหนักและค่ากําหนดทั้งหมดที่ผ่านการฝึกจะยังคงเหมือนเดิม คุณจะฝึกเฉพาะเลเยอร์ Softmax ที่เพิ่มเข้ามาเท่านั้น เทคนิคนี้เรียกว่าการเรียนรู้แบบโอน และน่าทึ่งตรงที่เทคนิคนี้ได้ผลตราบใดที่ชุดข้อมูลที่ใช้ฝึกอบรมเครือข่ายประสาทล่วงหน้า "ใกล้เคียงมากพอ" กับชุดข้อมูลของคุณ
การลงมือปฏิบัติ
โปรดเปิดสมุดบันทึกต่อไปนี้ เรียกใช้เซลล์ (Shift-ENTER) และทำตามคำแนะนำทุกตำแหน่งที่เห็นป้ายกำกับ "ต้องดำเนินการ"
Keras Flowers transfer learning (playground).ipynb
ข้อมูลเพิ่มเติม
การเรียนรู้แบบโอนช่วยให้คุณได้รับประโยชน์ทั้งจากสถาปัตยกรรมโครงข่ายประสาทแบบ Convolutive ขั้นสูงที่นักวิจัยชั้นนําพัฒนาขึ้น และจากการฝึกล่วงหน้าในชุดข้อมูลรูปภาพขนาดใหญ่ ในกรณีของเรา เราจะถ่ายทอดการเรียนรู้จากเครือข่ายที่ได้รับการฝึกอบรมบน ImageNet ซึ่งเป็นฐานข้อมูลของรูปภาพที่มีพืชและฉากกลางแจ้งมากมาย ซึ่งอยู่ใกล้กับดอกไม้
ภาพ: โครงข่ายระบบประสาทเทียมแบบ Convolutional แบบซับซ้อน ซึ่งได้รับการฝึกแล้ว ให้เป็นกล่องดำ ฝึกเฉพาะหัวการจัดประเภทอีกครั้ง นี่คือการโอนการเรียนรู้ เราจะดูว่าการจัดเรียงเลเยอร์คอนโวลูชัน (Convolutional) ที่ซับซ้อนเหล่านี้ทำงานอย่างไรในภายหลัง ส่วนตอนนี้ปัญหามันเป็นของคนอื่น
การเรียนรู้แบบโอนใน Keras
ใน Keras คุณสามารถสร้างอินสแตนซ์โมเดลก่อนการฝึกจากคอลเล็กชัน tf.keras.applications.*
เช่น MobileNet V2 เป็นสถาปัตยกรรม ConvNet ที่ดีมากซึ่งมีขนาดไม่ใหญ่จนเกินไป เมื่อเลือก include_top=False
คุณจะได้รับโมเดลที่ฝึกล่วงหน้าโดยไม่มีเลเยอร์ Softmax ขั้นสุดท้ายของโมเดล คุณจึงเพิ่มโมเดลของตัวเองได้
pretrained_model = tf.keras.applications.MobileNetV2(input_shape=[*IMAGE_SIZE, 3], include_top=False)
pretrained_model.trainable = False
model = tf.keras.Sequential([
pretrained_model,
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(5, activation='softmax')
])
และสังเกตการตั้งค่า pretrained_model.trainable = False
ด้วย ซึ่งจะตรึงน้ำหนักและความลำเอียงของโมเดลก่อนการฝึกเพื่อให้คุณฝึกเฉพาะเลเยอร์ Softmax ได้ ซึ่งโดยทั่วไปจะใช้น้ำหนักค่อนข้างน้อย และทำได้อย่างรวดเร็วและไม่จำเป็นต้องใช้ชุดข้อมูลขนาดใหญ่มาก อย่างไรก็ตาม หากคุณมีข้อมูลจำนวนมาก การโอนการเรียนรู้จะทำงานได้ดีขึ้นด้วย pretrained_model.trainable = True
จากนั้นน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้าจะให้ค่าเริ่มต้นที่ยอดเยี่ยมและยังคงปรับได้ด้วยการเทรนเพื่อให้เหมาะกับปัญหาของคุณมากขึ้น
สุดท้าย ให้สังเกตเลเยอร์ Flatten()
ที่แทรกไว้ก่อนเลเยอร์ Softmax แบบหนาแน่น เลเยอร์ที่หนาแน่นจะทำงานกับเวกเตอร์ข้อมูลราบ แต่เราไม่รู้ว่าโมเดลที่ฝึกไว้แล้วล่วงหน้าจะแสดงผลหรือไม่ เราจึงต้องปรับให้แบนราบ ในบทถัดไป เราจะอธิบายรูปแบบข้อมูลที่ได้จากเลเยอร์คอนโวลูชัน (Convolutional) ในบทต่อไป
คุณควรได้รับผลลัพธ์ที่แม่นยำเกือบ 75% ด้วยแนวทางนี้
วิธีแก้ปัญหา
โน้ตบุ๊กโซลูชันมีดังนี้ คุณสามารถใช้รหัสผ่านนี้ได้หากติดขัด
Keras Flowers transfer learning (solution).ipynb
สิ่งที่เราได้พูดถึง
- 🤔 วิธีเขียนตัวแยกประเภทใน Keras
- 🤓 กำหนดค่าด้วยเลเยอร์สุดท้ายแบบ Softmax และ Loss แบบ Cross-Entropy
- 😈 การเรียนรู้แบบโอน
- 🤔 ฝึกโมเดลแรก
- 🧐 ติดตามการสูญเสียและความแม่นยำระหว่างการฝึก
โปรดสละเวลาสักครู่เพื่อทบทวนรายการตรวจสอบนี้ในใจ
5. ยินดีด้วย
ตอนนี้คุณสร้างโมเดล Keras ได้แล้ว โปรดไปที่ห้องทดลองถัดไปเพื่อดูวิธีประกอบเลเยอร์ Conv
- ไปป์ไลน์ข้อมูลความเร็ว TPU: tf.data.Dataset และ TFRecords
- [THIS LAB] โมเดล Keras แรกของคุณที่มีการเรียนรู้แบบโอน
- โครงข่ายระบบประสาทเทียมแบบ Convolution กับ Keras และ TPU
- Convnets, การบีบ, Xception พร้อม Keras และ TPU
TPU ในทางปฏิบัติ
TPU และ GPU พร้อมให้บริการใน Cloud AI Platform
สุดท้ายนี้ เราให้ความสำคัญกับความคิดเห็น โปรดแจ้งให้เราทราบหากพบสิ่งผิดปกติในห้องทดลองนี้หรือคิดว่าควรปรับปรุง คุณแสดงความคิดเห็นได้ผ่านปัญหาเกี่ยวกับ GitHub [ feedback link]
|