Tensorflow là một khuôn khổ học máy được cung cấp bởi Google. Nó là một khung công tác mã nguồn mở được sử dụng kết hợp với Python để triển khai các thuật toán, ứng dụng học sâu và hơn thế nữa. Nó được sử dụng trong nghiên cứu và cho mục đích sản xuất.
Keras được phát triển như một phần nghiên cứu của dự án ONEIROS (Hệ điều hành Robot thông minh điện tử thần kinh mở). Keras là một API học sâu, được viết bằng Python. Đây là một API cấp cao có giao diện hiệu quả giúp giải quyết các vấn đề về máy học. Nó chạy trên khuôn khổ Tensorflow. Nó được xây dựng để giúp thử nghiệm một cách nhanh chóng. Nó cung cấp các khối xây dựng và trừu tượng thiết yếu cần thiết trong việc phát triển và đóng gói các giải pháp học máy.
Nó có khả năng mở rộng cao và đi kèm với các khả năng đa nền tảng. Điều này có nghĩa là Keras có thể chạy trên TPU hoặc các cụm GPU. Các mô hình Keras cũng có thể được xuất để chạy trong trình duyệt web hoặc điện thoại di động.
Keras đã có trong gói Tensorflow. Nó có thể được truy cập bằng cách sử dụng dòng mã dưới đây.
import tensorflow from tensorflow import keras
Có, một mô hình Keras chỉ được coi như một lớp và được gọi bằng Python. API chức năng Keras giúp tạo các mô hình linh hoạt hơn so với các mô hình được tạo bằng API tuần tự. API chức năng có thể hoạt động với các mô hình có cấu trúc liên kết phi tuyến tính, có thể chia sẻ các lớp và hoạt động với nhiều đầu vào và đầu ra. Mô hình học sâu thường là một đồ thị xoay chiều có hướng (DAG) chứa nhiều lớp. API chức năng giúp xây dựng biểu đồ của các lớp.
Chúng tôi đang sử dụng Google Colaboratory để chạy đoạn mã dưới đây. Google Colab hoặc Colaboratory giúp chạy mã Python qua trình duyệt và không yêu cầu cấu hình cũng như quyền truy cập miễn phí vào GPU (Đơn vị xử lý đồ họa). Colaboratory đã được xây dựng trên Jupyter Notebook. Sau đây là đoạn mã để coi mô hình Keras như một lớp và được gọi bằng Python -
Ví dụ
Encoder_input = keras.Input(shape=(28, 28, 1), name=”original_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 golbal 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() decoder_input = keras.Input(shape=(16,), name="encoded_img") print("Reshaping the layers in the model") 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("Creating a model using the layers") decoder = keras.Model(decoder_input, decoder_output, name="decoder") print("More information about the model") 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("More information about the model") autoencoder.summary()
Tín dụng mã - https://www.tensorflow.org/guide/keras/f Chức năng
Đầu ra
original_img (InputLayer) [(None, 28, 28, 1)] 0 _________________________________________________________________ conv2d_28 (Conv2D) (None, 26, 26, 16) 160 _________________________________________________________________ conv2d_29 (Conv2D) (None, 24, 24, 32) 4640 _________________________________________________________________ max_pooling2d_7 (MaxPooling2 (None, 8, 8, 32) 0 _________________________________________________________________ conv2d_30 (Conv2D) (None, 6, 6, 32) 9248 _________________________________________________________________ conv2d_31 (Conv2D) (None, 4, 4, 16) 4624 _________________________________________________________________ global_max_pooling2d_3 (Glob (None, 16) 0 ================================================================= Total params: 18,672 Trainable params: 18,672 Non-trainable params: 0 _________________________________________________________________ Reshaping the layers in the model Creating a model using the layers More information about the model Model: "decoder" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= encoded_img (InputLayer) [(None, 16)] 0 _________________________________________________________________ reshape_1 (Reshape) (None, 4, 4, 1) 0 _________________________________________________________________ conv2d_transpose_4 (Conv2DTr (None, 6, 6, 16) 160 _________________________________________________________________ conv2d_transpose_5 (Conv2DTr (None, 8, 8, 32) 4640 _________________________________________________________________ up_sampling2d_1 (UpSampling2 (None, 24, 24, 32) 0 _________________________________________________________________ conv2d_transpose_6 (Conv2DTr (None, 26, 26, 16) 4624 _________________________________________________________________ conv2d_transpose_7 (Conv2DTr (None, 28, 28, 1) 145 ================================================================= Total params: 9,569 Trainable params: 9,569 Non-trainable params: 0 _________________________________________________________________ More information about the model Model: "autoencoder" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= img (InputLayer) [(None, 28, 28, 1)] 0 _________________________________________________________________ encoder (Functional) (None, 16) 18672 _________________________________________________________________ decoder (Functional) (None, 28, 28, 1) 9569 ================================================================= Total params: 28,241 Trainable params: 28,241 Non-trainable params: 0 _________________________________________________________________
Giải thích
-
Bất kỳ mô hình nào cũng có thể được coi là một lớp bằng cách gọi nó trên một "đầu vào" hoặc đầu ra của một lớp khác.
-
Khi mô hình được gọi, kiến trúc đang được sử dụng lại.
-
Ngoài ra, các quả cân cũng đang được tái sử dụng.
-
Mô hình tự động mã hóa có thể được tạo bằng cách sử dụng mô hình bộ mã hóa, một mô hình bộ giải mã.
-
Hai mô hình này được liên kết với nhau thành hai lệnh gọi để lấy mô hình tự động mã hóa.