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

จะสร้างตัวเข้ารหัสอัตโนมัติโดยใช้ตัวเข้ารหัสและตัวถอดรหัสโดยใช้ Python ได้อย่างไร


Tensorflow คือเฟรมเวิร์กแมชชีนเลิร์นนิงที่ให้บริการโดย Google เป็นเฟรมเวิร์กโอเพนซอร์สที่ใช้ร่วมกับ Python เพื่อใช้อัลกอริทึม แอปพลิเคชันการเรียนรู้เชิงลึก และอื่นๆ อีกมากมาย ใช้ในการวิจัยและเพื่อการผลิต

แพ็คเกจ 'tensorflow' สามารถติดตั้งบน Windows ได้โดยใช้บรรทัดโค้ดด้านล่าง -

pip install tensorflow

Tensor เป็นโครงสร้างข้อมูลที่ใช้ใน TensorFlow ช่วยเชื่อมต่อขอบในแผนภาพการไหล แผนภาพการไหลนี้เรียกว่า 'กราฟการไหลของข้อมูล' เทนเซอร์เป็นเพียงอาร์เรย์หลายมิติหรือรายการ

Keras ได้รับการพัฒนาโดยเป็นส่วนหนึ่งของการวิจัยสำหรับโครงการ ONEIROS (ระบบปฏิบัติการหุ่นยนต์อัจฉริยะ Neuro-Electronic ปลายเปิด) Keras เป็น API การเรียนรู้เชิงลึกซึ่งเขียนด้วยภาษา Python เป็น API ระดับสูงที่มีอินเทอร์เฟซที่มีประสิทธิภาพซึ่งช่วยแก้ปัญหาการเรียนรู้ของเครื่อง มันทำงานบนเฟรมเวิร์ก Tensorflow มันถูกสร้างขึ้นเพื่อช่วยทดลองในลักษณะที่รวดเร็ว โดยนำเสนอสิ่งที่เป็นนามธรรมและการสร้างบล็อคที่จำเป็นต่อการพัฒนาและการห่อหุ้มโซลูชันแมชชีนเลิร์นนิง

Keras มีอยู่แล้วในแพ็คเกจ Tensorflow สามารถเข้าถึงได้โดยใช้รหัสบรรทัดด้านล่าง

import tensorflow
from tensorflow import keras

Keras functional API ช่วยสร้างโมเดลที่มีความยืดหยุ่นมากกว่าเมื่อเปรียบเทียบกับโมเดลที่สร้างโดยใช้ Sequential API API ที่ใช้งานได้สามารถทำงานกับโมเดลที่มีโทโพโลยีที่ไม่ใช่เชิงเส้น สามารถแชร์เลเยอร์และทำงานกับอินพุตและเอาต์พุตได้หลายรายการ โมเดลการเรียนรู้เชิงลึกมักจะเป็นกราฟ acyclic แบบกำกับทิศทาง (DAG) ที่มีหลายเลเยอร์ API การทำงานช่วยสร้างกราฟของเลเยอร์

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

ตัวอย่าง

encoder_input = keras.Input(shape=(28, 28, 1), name="img")
print("Adding layers to the model")
x = layers.Conv2D(16, 3, activation="relu")(encoder_input)
x = layers.Conv2D(32, 3, activation="relu")(x)
x = layers.MaxPooling2D(3)(x)
x = layers.Conv2D(32, 3, activation="relu")(x)
x = layers.Conv2D(16, 3, activation="relu")(x)
print("Performing global max pooling")
encoder_output = layers.GlobalMaxPooling2D()(x)
print("Creating a model using the layers")
encoder = keras.Model(encoder_input, encoder_output, name="encoder")
print("More information about the model")
encoder.summary()

print("Reshaping the layers in the model")
x = layers.Reshape((4, 4, 1))(encoder_output)
x = layers.Conv2DTranspose(16, 3, activation="relu")(x)
x = layers.Conv2DTranspose(32, 3, activation="relu")(x)
x = layers.UpSampling2D(3)(x)
x = layers.Conv2DTranspose(16, 3, activation="relu")(x)
decoder_output = layers.Conv2DTranspose(1, 3, activation="relu")(x)

autoencoder = keras.Model(encoder_input, decoder_output, name="autoencoder")
print("More information about the autoencoder")
autoencoder.summary()

เครดิตโค้ด – https://www.tensorflow.org/guide/keras/functional

ผลลัพธ์

Adding layers to the model
Performing global max pooling
Creating a model using the layers
More information about the model
Model: "encoder"
_________________________________________________________________
Layer (type)                Output Shape             Param #
=================================================================
img (InputLayer)            [(None, 28, 28, 1)]       0
_________________________________________________________________
conv2d (Conv2D)             (None, 26, 26, 16)       160
_________________________________________________________________
conv2d_1 (Conv2D)           (None, 24, 24, 32)       4640
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 8, 8, 32)          0
_________________________________________________________________
conv2d_2 (Conv2D)             (None, 6, 6, 32)       9248
_________________________________________________________________
conv2d_3 (Conv2D)             (None, 4, 4, 16)       4624
_________________________________________________________________
global_max_pooling2d          (Global (None, 16)       0
=================================================================
Total params: 18,672
Trainable params: 18,672
Non-trainable params: 0
_________________________________________________________________
Reshaping the layers in the model
More information about the autoencoder
Model: "autoencoder"
_________________________________________________________________
Layer (type)                Output Shape          Param #
=================================================================
img (InputLayer)            [(None, 28, 28, 1)]    0
_________________________________________________________________
conv2d (Conv2D)             (None, 26, 26, 16)    160
_________________________________________________________________
conv2d_1 (Conv2D)           (None, 24, 24, 32)    4640
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 8, 8, 32)       0
_________________________________________________________________
conv2d_2 (Conv2D)          (None, 6, 6, 32)       9248
_________________________________________________________________
conv2d_3 (Conv2D)          (None, 4, 4, 16)       4624
_________________________________________________________________
global_max_pooling2d       (Global (None, 16)       0
_________________________________________________________________
reshape (Reshape)          (None, 4, 4, 1)          0
_________________________________________________________________
conv2d_transpose (Conv2DTran (None, 6, 6, 16)       160
_________________________________________________________________
conv2d_transpose_1 (Conv2DTr (None, 8, 8, 32)       4640
_________________________________________________________________
up_sampling2d (UpSampling2D) (None, 24, 24, 32)       0
_________________________________________________________________
conv2d_transpose_2 (Conv2DTr (None, 26, 26, 16)       4624
_________________________________________________________________
conv2d_transpose_3 (Conv2DTr (None, 28, 28, 1)       145
=================================================================
Total params: 28,241
Trainable params: 28,241
Non-trainable params: 0
_________________________________________________________________

คำอธิบาย

  • มีการเพิ่มเลเยอร์ลงในโมเดล

  • ดำเนินการรวมยอดสูงสุดทั่วโลกในเลเยอร์เหล่านี้

  • โมเดลถูกสร้างขึ้นโดยใช้เลเยอร์

  • ข้อมูลเพิ่มเติมเกี่ยวกับโมเดลสามารถแสดงได้โดยใช้วิธีการ "สรุป"

  • เมื่อใช้ API การทำงาน โมเดลจะถูกสร้างขึ้นหลังจากระบุอินพุตและเอาต์พุตสำหรับกราฟของเลเยอร์

  • ซึ่งบ่งชี้ว่ากราฟเดียวสามารถใช้สร้างแบบจำลองได้หลายแบบ

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