สามารถเพิ่มเลเยอร์ที่หนาแน่นไปยังโมเดลตามลำดับโดยใช้วิธีการ 'เพิ่ม' และระบุประเภทของเลเยอร์เป็น 'หนาแน่น' เลเยอร์จะถูกทำให้แบนก่อนแล้วจึงเพิ่มเลเยอร์ เลเยอร์ใหม่นี้จะถูกนำไปใช้กับชุดข้อมูลการฝึกทั้งหมด
อ่านเพิ่มเติม: TensorFlow คืออะไรและ Keras ทำงานร่วมกับ TensorFlow เพื่อสร้าง Neural Networks อย่างไร
เราจะใช้ Keras Sequential API ซึ่งมีประโยชน์ในการสร้างแบบจำลองตามลำดับที่ใช้ในการทำงานกับสแต็กเลเยอร์ธรรมดา โดยที่ทุกเลเยอร์มีอินพุตเทนเซอร์หนึ่งตัวและเอาต์พุตเทนเซอร์หนึ่งรายการ
เรากำลังใช้ Google Colaboratory เพื่อเรียกใช้โค้ดด้านล่าง Google Colab หรือ Colaboratory ช่วยเรียกใช้โค้ด Python บนเบราว์เซอร์และไม่ต้องมีการกำหนดค่าใดๆ และเข้าถึง GPU ได้ฟรี (หน่วยประมวลผลกราฟิก) Colaboratory ถูกสร้างขึ้นบน Jupyter Notebook
print("Adding dense layer on top") model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10)) print("Complete architecture of the model") model.summary()
เครดิตโค้ด:https://www.tensorflow.org/tutorials/images/cnn
ผลลัพธ์
Adding dense layer on top Complete architecture of the model Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_3 (Conv2D) (None, 30, 30, 32) 896 _________________________________________________________________ max_pooling2d_2 (MaxPooling2 (None, 15, 15, 32) 0 _________________________________________________________________ conv2d_4 (Conv2D) (None, 13, 13, 64) 18496 _________________________________________________________________ max_pooling2d_3 (MaxPooling2 (None, 6, 6, 64) 0 _________________________________________________________________ conv2d_5 (Conv2D) (None, 4, 4, 64) 36928 _________________________________________________________________ flatten (Flatten) (None, 1024) 0 _________________________________________________________________ dense (Dense) (None, 64) 65600 _________________________________________________________________ dense_1 (Dense) (None, 10) 650 ================================================================= Total params: 122,570 Trainable params: 122,570 Non-trainable params: 0 _________________________________________________________________
คำอธิบาย
- ในการทำให้โมเดลสมบูรณ์ เทนเซอร์เอาต์พุตสุดท้ายจากฐานที่บิดงอ (ของรูปร่าง (4, 4, 64)) จะถูกป้อนไปยังเลเยอร์หนาแน่นอย่างน้อยหนึ่งชั้นเพื่อทำการจำแนก
- เลเยอร์ที่หนาแน่นจะใช้เวกเตอร์เป็นอินพุต (ซึ่งก็คือ 1D) และเอาต์พุตปัจจุบันคือเมตริกซ์ 3 มิติ
- ถัดไป เอาต์พุต 3D จะถูกทำให้แบนเป็น 1D และมีการเพิ่มเลเยอร์หนาแน่นอย่างน้อยหนึ่งเลเยอร์ที่ด้านบน
- CIFAR มี 10 คลาสเอาต์พุต ดังนั้นจึงเพิ่มเลเยอร์ Dense สุดท้ายที่มี 10 เอาต์พุต
- เอาต์พุต (4, 4, 64) จะถูกทำให้แบนเป็นเวกเตอร์ที่มีรูปร่าง (1024) ก่อนที่จะผ่านสองชั้นหนาแน่น