โดยทั่วไป โครงข่ายประสาทเทียมจะประกอบด้วยชั้นต่างๆ ต่อไปนี้:ชั้น 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)