Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Mô hình Keras có thể được coi như một lớp và gọi như một lớp trong Python? Có, minh họa

TensorFlow framework ML của Google. Keras API deep learning Python trên TensorFlow. Functional API linh hoạt, hỗ trợ mô hình lồng nhau.

Sử dụng Google Colab. Code minh họa việc coi mô hình Keras như một lớp: xây dựng encoder, decoder, sau đó chuỗi thành autoencoder:

Ví dụ

encoder_input = keras.Input(shape=(28, 28, 1), name="original_img")
print("Thêm lớp vào mô hình")
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("Thực hiện global max pooling")
encoder_output = layers.GlobalMaxPooling2D()(x)
print("Tạo mô hình encoder")
encoder = keras.Model(encoder_input, encoder_output, name="encoder")
print("Thông tin encoder")
encoder.summary()

decoder_input = keras.Input(shape=(16,), name="encoded_img")
print("Reshape các lớp")
x = layers.Reshape((4, 4, 1))(decoder_input)
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)
print("Tạo mô hình decoder")
decoder = keras.Model(decoder_input, decoder_output, name="decoder")
print("Thông tin decoder")
decoder.summary()

autoencoder_input = keras.Input(shape=(28, 28, 1), name="img")
encoded_img = encoder(autoencoder_input)
decoded_img = decoder(encoded_img)
autoencoder = keras.Model(autoencoder_input, decoded_img, name="autoencoder")
print("Thông tin autoencoder")
autoencoder.summary()

Nguồn: TensorFlow Guide

Đầu ra

... (tóm tắt cấu trúc encoder, decoder, autoencoder với số lượng tham số) ...

Giải thích

  • Bất kỳ mô hình nào cũng có thể được coi như một lớp bằng cách gọi nó trên đầu vào/đầu ra của lớp khác.
  • Khi gọi mô hình, kiến trúc và trọng số đều được tái sử dụng.
  • Autoencoder được tạo bằng cách chuỗi encoder và decoder qua hai lần gọi.