Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Tensorflow สามารถใช้เพื่อเพิ่มเลเยอร์หนาแน่นด้านบนโดยใช้ Python ได้อย่างไร


สามารถเพิ่มเลเยอร์ที่หนาแน่นไปยังโมเดลตามลำดับโดยใช้วิธีการ 'เพิ่ม' และระบุประเภทของเลเยอร์เป็น 'หนาแน่น' เลเยอร์จะถูกทำให้แบนก่อนแล้วจึงเพิ่มเลเยอร์ เลเยอร์ใหม่นี้จะถูกนำไปใช้กับชุดข้อมูลการฝึกทั้งหมด

อ่านเพิ่มเติม: 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) ก่อนที่จะผ่านสองชั้นหนาแน่น