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

Tensorflow จะใช้เพื่อสร้างฐาน convolutional โดยใช้ Python ได้อย่างไร


โดยทั่วไป โครงข่ายประสาทเทียมจะประกอบด้วยชั้นต่างๆ ต่อไปนี้:ชั้น Convolutional, ชั้นรวม และชั้นหนาแน่น

อ่านเพิ่มเติม: TensorFlow คืออะไรและ Keras ทำงานร่วมกับ TensorFlow เพื่อสร้าง Neural Networks อย่างไร

มีการใช้โครงข่ายประสาทเทียมเพื่อสร้างผลลัพธ์ที่ยอดเยี่ยมสำหรับปัญหาบางประเภท เช่น การจดจำภาพ สามารถสร้างได้โดยใช้เมธอด 'Sequential' ซึ่งมีอยู่ในคลาส 'models' คุณสามารถเพิ่มเลเยอร์ลงในเครือข่ายที่บิดเบี้ยวนี้ได้โดยใช้วิธีการ "เพิ่ม"

เราจะใช้ Keras Sequential API ซึ่งมีประโยชน์ในการสร้างแบบจำลองตามลำดับที่ใช้ในการทำงานกับสแต็กเลเยอร์ธรรมดา โดยที่ทุกเลเยอร์มีอินพุตเทนเซอร์หนึ่งตัวและเอาต์พุตเทนเซอร์หนึ่งรายการ

เรากำลังใช้ Google Colaboratory เพื่อเรียกใช้โค้ดด้านล่าง Google Colab หรือ Colaboratory ช่วยเรียกใช้โค้ด Python บนเบราว์เซอร์และไม่ต้องมีการกำหนดค่าใดๆ และเข้าถึง GPU ได้ฟรี (หน่วยประมวลผลกราฟิก) Colaboratory ถูกสร้างขึ้นบน Jupyter Notebook

print("Creating the convolutional base")
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
print("Description of arhcitecture is")
model.summary()

เครดิตโค้ด:https://www.tensorflow.org/tutorials/images/cnn

ผลลัพธ์

Creating the convolutional base
Description of arhcitecture is
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #  
=================================================================
conv2d (Conv2D)              (None, 30, 30, 32)        896      
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 15, 15, 32)        0        
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 13, 13, 64)        18496    
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64)          0        
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 4, 4, 64)          36928    
=================================================================
Total params: 56,320
Trainable params: 56,320
Non-trainable params: 0

คำอธิบาย

  • บรรทัดด้านบนช่วยกำหนดฐานบิดโดยใช้รูปแบบทั่วไป

  • รูปแบบนี้เป็นสแต็คของเลเยอร์ Conv2D และ MaxPooling2D

  • เมื่อป้อนข้อมูลซึ่งเป็น CNN จะถ่ายเทนเซอร์ของรูปร่าง (image_height, image_width, color_channels)

  • CNN ได้รับการกำหนดค่าให้ประมวลผลอินพุตของรูปร่าง (32, 32, 3) ซึ่งเป็นรูปแบบของภาพ CIFAR

  • ซึ่งสามารถทำได้โดยส่งอาร์กิวเมนต์ input_shape ไปยังเลเยอร์แรกของเรา

  • ผลลัพธ์ของทุกเลเยอร์ Conv2D และ MaxPooling2D คือเทนเซอร์ของรูปร่าง 3 มิติ (ความสูง ความกว้าง ช่อง)

  • ขนาดความกว้างและความสูงจะหดตัวเมื่อเครือข่ายลึกลงไป

  • จำนวนช่องสัญญาณเอาต์พุตสำหรับทุกเลเยอร์ Conv2D ถูกควบคุมโดยอาร์กิวเมนต์แรก (เช่น 32 หรือ 64)