Keras - การเรียนรู้เชิงลึก
Keras เป็นโครงร่างที่สมบูรณ์เพื่อสร้างโครงข่ายประสาทเทียมทุกประเภท Keras เป็นนวัตกรรมใหม่และง่ายต่อการเรียนรู้ สนับสนุนเครือข่ายประสาทเทียมอย่างง่ายไปจนถึงแบบจำลองเครือข่ายประสาทเทียมที่มีขนาดใหญ่และซับซ้อน ให้เราเข้าใจสถาปัตยกรรมของ Keras framework และวิธีที่ Keras ช่วยในการเรียนรู้เชิงลึกในบทนี้
สถาปัตยกรรมของ Keras
Keras API สามารถแบ่งออกเป็นสามประเภทหลัก -
- Model
- Layer
- โมดูลหลัก
ใน Keras ทุก ANN จะแสดงด้วย Keras Models. ในทางกลับกัน Keras Model ทุกตัวเป็นองค์ประกอบของKeras Layers และแสดงถึงเลเยอร์ ANN เช่นอินพุต, เลเยอร์ที่ซ่อนอยู่, เลเยอร์เอาต์พุต, เลเยอร์คอนโวลูชั่น, เลเยอร์พูลเป็นต้น, โมเดล Keras และการเข้าถึงเลเยอร์ Keras modules สำหรับฟังก์ชันการเปิดใช้งานฟังก์ชันการสูญเสียฟังก์ชันการทำให้เป็นมาตรฐาน ฯลฯ การใช้โมเดล Keras, Keras Layer และโมดูล Keras อัลกอริทึม ANN ใด ๆ (CNN, RNN ฯลฯ ) สามารถแสดงได้อย่างเรียบง่ายและมีประสิทธิภาพ
แผนภาพต่อไปนี้แสดงถึงความสัมพันธ์ระหว่างโมเดลเลเยอร์และโมดูลแกน -
ให้เราดูภาพรวมของโมเดล Keras เลเยอร์ Keras และโมดูล Keras
รุ่น
Keras Models มีสองประเภทดังที่กล่าวไว้ด้านล่าง -
Sequential Model- แบบจำลองลำดับโดยพื้นฐานแล้วเป็นองค์ประกอบเชิงเส้นของ Keras Layers แบบจำลองต่อเนื่องเป็นเรื่องง่ายน้อยที่สุดและมีความสามารถในการแสดงโครงข่ายประสาทเทียมที่มีอยู่เกือบทั้งหมด
แบบจำลองตามลำดับอย่างง่ายมีดังนี้ -
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,)))
ที่ไหน
Line 1 การนำเข้า Sequential โมเดลจากโมเดล Keras
Line 2 การนำเข้า Dense เลเยอร์และ Activation โมดูล
Line 4 สร้างแบบจำลองตามลำดับใหม่โดยใช้ Sequential API
Line 5 เพิ่มเลเยอร์หนาแน่น (Dense API) ด้วย relu การเปิดใช้งาน (โดยใช้โมดูลการเปิดใช้งาน)
Sequential แบบจำลองเปิดเผย Modelคลาสเพื่อสร้างโมเดลที่กำหนดเองด้วย เราสามารถใช้แนวคิดการแบ่งประเภทย่อยเพื่อสร้างแบบจำลองที่ซับซ้อนของเราเอง
Functional API - Functional API โดยพื้นฐานแล้วจะใช้เพื่อสร้างแบบจำลองที่ซับซ้อน
ชั้น
เลเยอร์ Keras แต่ละชั้นในแบบจำลอง Keras แสดงถึงเลเยอร์ที่เกี่ยวข้อง (ชั้นอินพุตชั้นที่ซ่อนอยู่และชั้นเอาต์พุต) ในแบบจำลองเครือข่ายประสาทเทียมที่เสนอจริง Keras มีเลเยอร์ที่สร้างไว้ล่วงหน้าจำนวนมากเพื่อให้สามารถสร้างเครือข่ายประสาทเทียมที่ซับซ้อนได้อย่างง่ายดาย เลเยอร์ Keras ที่สำคัญบางส่วนมีการระบุไว้ด้านล่าง
- เลเยอร์หลัก
- เลเยอร์ Convolution
- การรวมเลเยอร์
- เลเยอร์ที่เกิดซ้ำ
รหัส python อย่างง่ายเพื่อแสดงรูปแบบเครือข่ายประสาทโดยใช้ sequential โมเดลมีดังนี้ -
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,)))
model.add(Dropout(0.2))
model.add(Dense(512, activation = 'relu')) model.add(Dropout(0.2))
model.add(Dense(num_classes, activation = 'softmax'))
ที่ไหน
Line 1 การนำเข้า Sequential โมเดลจากโมเดล Keras
Line 2 การนำเข้า Dense เลเยอร์และ Activation โมดูล
Line 4 สร้างแบบจำลองตามลำดับใหม่โดยใช้ Sequential API
Line 5 เพิ่มเลเยอร์หนาแน่น (Dense API) ด้วย relu การเปิดใช้งาน (โดยใช้โมดูลการเปิดใช้งาน)
Line 6 เพิ่มเลเยอร์กลางคัน (Dropout API) เพื่อจัดการกับความเหมาะสมมากเกินไป
Line 7 เพิ่มเลเยอร์หนาแน่น (Dense API) ด้วย relu การเปิดใช้งาน (โดยใช้โมดูลการเปิดใช้งาน)
Line 8 เพิ่มเลเยอร์กลางคัน (Dropout API) อีกชั้นเพื่อจัดการกับความเหมาะสมที่มากเกินไป
Line 9 เพิ่มเลเยอร์หนาแน่นขั้นสุดท้าย (Dense API) ด้วย softmax การเปิดใช้งาน (โดยใช้โมดูลการเปิดใช้งาน)
Keras ยังมีตัวเลือกในการสร้างเลเยอร์ที่กำหนดเอง สามารถสร้างเลเยอร์ที่กำหนดเองได้โดยการแบ่งประเภทย่อยของไฟล์Keras.Layer คลาสและคล้ายกับโมเดล Keras ย่อย
โมดูลหลัก
Keras ยังมีฟังก์ชันที่เกี่ยวข้องกับโครงข่ายประสาทเทียมในตัวมากมายเพื่อสร้างโมเดล Keras และเลเยอร์ Keras อย่างถูกต้อง บางส่วนของฟังก์ชั่นมีดังนี้ -
Activations module - ฟังก์ชันการเปิดใช้งานเป็นแนวคิดที่สำคัญใน ANN และโมดูลการเปิดใช้งานมีฟังก์ชันการเปิดใช้งานมากมายเช่น softmax, relu ฯลฯ
Loss module - โมดูลการสูญเสียมีฟังก์ชันการสูญเสียเช่น mean_squared_error, mean_absolute_error, poisson เป็นต้น
Optimizer module - โมดูลเครื่องมือเพิ่มประสิทธิภาพให้ฟังก์ชันเครื่องมือเพิ่มประสิทธิภาพเช่น adam, sgd ฯลฯ
Regularizers - โมดูล Regularizer มีฟังก์ชันต่างๆเช่น L1 regularizer, L2 regularizer เป็นต้น
ให้เราเรียนรู้โมดูล Keras โดยละเอียดในบทต่อไป