- Bài 1: Giới thiệu
- Bài 2: Cài đặt
- Bài 3: Cấu hình backend
- Bài 4: Tổng quan về Deep learning
- Bài 5: Deep learning
- Bài 6: Mô đun
- Bài 7: Layers (phần 1)
- Bài 8: Layers (Phần 2)
- Bài 9: Tuỳ chỉnh Layer
- Bài 10: Models
- Bài 11: Tổng hợp Model (Phần 1)
- Bài 12: Tổng hợp Model (Phần 2)
- Bài 13: Đánh giá và dự đoán mô hình
- Bài 14: Convolution Neural Network
- Bài 15: Dự đoán hồi quy sử dụng MPL
- Bài 16: Dự đoán chuỗi thời gian bằng LSTM RNN
- Bài 17: Ứng dụng
- Bài 18: Dự đoán thời gian thực với mô hình ResNet
- Bài 19: Pre-Trained Models
Bài 10: Models - Keras cơ bản
Đăng bởi: Admin | Lượt xem: 3088 | Chuyên mục: AI
Như ta đã tìm hiểu trong các bài trước, mô hình Keras đại diện cho mô hình mạng nơron thực tế. Keras cung cấp hai chế độ để tạo mô hình, API tuần tự đơn giản và dễ sử dụng cũng như API chức năng linh hoạt và nâng cao hơn. Bây giờ ta hãy học cách tạo mô hình bằng cách sử dụng cả API tuần tự và hàm trong chương này.
1. Sequential :
Ý tưởng cốt lõi của Sequential API chỉ đơn giản là sắp xếp các lớp Keras theo thứ tự tuần tự và vì vậy, nó được gọi là Sequential API. Hầu hết ANN cũng có các lớp theo thứ tự tuần tự và dữ liệu chảy từ lớp này sang lớp khác theo thứ tự nhất định cho đến khi dữ liệu cuối cùng đến lớp đầu ra.
Mô hình ANN có thể được tạo bằng cách chỉ cần gọi API Sequential () như sau :
from keras.models import Sequential
model = Sequential()
a. Thêm layers:
Để thêm layer, chỉ cần tạo một lớp bằng API lớp Keras và sau đó chuyển layer qua hàm add () như sau :
from keras.models import Sequential
model = Sequential()
input_layer = Dense(32, input_shape=(8,)) model.add(input_layer)
hidden_layer = Dense(64, activation='relu'); model.add(hidden_layer)
output_layer = Dense(8)
model.add(output_layer)
Ở đây, ta đã tạo một input, một hiden và một output.
b. Truy câp model
Keras cung cấp một số phương pháp để lấy thông tin mô hình như các layer, dữ liệu đầu vào và dữ liệu đầu ra như sau :
- model.layers - Trả về tất cả các lớp của mô hình dưới dạng danh sách.
>>> layers = model.layers
>>> layers
[
<keras.layers.core.Dense object at 0x000002C8C888B8D0>,
<keras.layers.core.Dense object at 0x000002C8C888B7B8>
<keras.layers.core.Dense object at 0x 000002C8C888B898>
]
- model.inputs - Trả về tất cả các tensors đầu vào của mô hình dưới dạng danh sách.
>>> inputs = model.inputs
>>> inputs
[<tf.Tensor 'dense_13_input:0' shape=(?, 8) dtype=float32>]
- model.outputs - Trả về tất cả các tensors đầu ra của mô hình dưới dạng danh sách.
>>> outputs = model.outputs
>>> outputs
<tf.Tensor 'dense_15/BiasAdd:0' shape=(?, 8) dtype=float32>]
- model.get_weights − Trả về tất cả các trọng số dưới dạng mảng NumPy.
- model.set_weights(weight_numpy_array) − Đặt trọng số của mô hình.
c. Serialize model
Keras cung cấp các phương thức để tuần tự hóa mô hình thành đối tượng cũng như json và tải lại sau đó:
- get_config () - Trả về mô hình dưới dạng một đối tượng.
config = model.get_config()
- from_config () - Nó chấp nhận đối tượng cấu hình mô hình làm đối số và tạo mô hình tương ứng.
new_model = Sequential.from_config(config)
- to_json () - Trả về mô hình dưới dạng một đối tượng json.
>>> json_string = model.to_json()
>>> json_string '{"class_name": "Sequential", "config":
{"name": "sequential_10", "layers":
[{"class_name": "Dense", "config":
{"name": "dense_13", "trainable": true, "batch_input_shape":
[null, 8], "dtype": "float32", "units": 32, "activation": "linear",
"use_bias": true, "kernel_initializer":
{"class_name": "Vari anceScaling", "config":
{"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}},
"bias_initializer": {"class_name": "Zeros", "conf
ig": {}}, "kernel_regularizer": null, "bias_regularizer": null,
"activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}},
{" class_name": "Dense", "config": {"name": "dense_14", "trainable": true,
"dtype": "float32", "units": 64, "activation": "relu", "use_bias": true,
"kern el_initializer": {"class_name": "VarianceScaling", "config":
{"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}},
"bias_initia lizer": {"class_name": "Zeros",
"config": {}}, "kernel_regularizer": null, "bias_regularizer": null,
"activity_regularizer": null, "kernel_constraint" : null, "bias_constraint": null}},
{"class_name": "Dense", "config": {"name": "dense_15", "trainable": true,
"dtype": "float32", "units": 8, "activation": "linear", "use_bias": true,
"kernel_initializer": {"class_name": "VarianceScaling", "config":
{"scale": 1.0, "mode": "fan_avg", "distribution": " uniform", "seed": null}},
"bias_initializer": {"class_name": "Zeros", "config": {}},
"kernel_regularizer": null, "bias_regularizer": null, "activity_r egularizer":
null, "kernel_constraint": null, "bias_constraint":
null}}]}, "keras_version": "2.2.5", "backend": "tensorflow"}'
>>>
- model_from_json () - Chấp nhận biểu diễn json của mô hình và tạo một mô hình mới.
from keras.models import model_from_json
new_model = model_from_json(json_string)
- to_yaml () - Trả về mô hình dưới dạng một chuỗi yaml.
>>> yaml_string = model.to_yaml()
>>> yaml_string 'backend: tensorflow\nclass_name:
Sequential\nconfig:\n layers:\n - class_name: Dense\n config:\n
activation: linear\n activity_regular izer: null\n batch_input_shape:
!!python/tuple\n - null\n - 8\n bias_constraint: null\n bias_initializer:\n
class_name : Zeros\n config: {}\n bias_regularizer: null\n dtype:
float32\n kernel_constraint: null\n
kernel_initializer:\n cla ss_name: VarianceScaling\n config:\n
distribution: uniform\n mode: fan_avg\n
scale: 1.0\n seed: null\n kernel_regularizer: null\n name: dense_13\n
trainable: true\n units: 32\n
use_bias: true\n - class_name: Dense\n config:\n activation: relu\n activity_regularizer: null\n
bias_constraint: null\n bias_initializer:\n class_name: Zeros\n
config : {}\n bias_regularizer: null\n dtype: float32\n
kernel_constraint: null\n kernel_initializer:\n class_name: VarianceScalin g\n
config:\n distribution: uniform\n mode: fan_avg\n scale: 1.0\n
seed: null\n kernel_regularizer: nu ll\n name: dense_14\n trainable: true\n
units: 64\n use_bias: true\n - class_name: Dense\n config:\n
activation: linear\n activity_regularizer: null\n
bias_constraint: null\n bias_initializer:\n
class_name: Zeros\n config: {}\n bias_regu larizer: null\n
dtype: float32\n kernel_constraint: null\n
kernel_initializer:\n class_name: VarianceScaling\n config:\n
distribution: uniform\n mode: fan_avg\n
scale: 1.0\n seed: null\n kernel_regularizer: null\n name: dense _15\n
trainable: true\n units: 8\n
use_bias: true\n name: sequential_10\nkeras_version: 2.2.5\n'
>>>
- model_from_yaml () - Chấp nhận biểu diễn yaml của mô hình và tạo một mô hình mới.
from keras.models import model_from_yaml
new_model = model_from_yaml(yaml_string)
d. Tổng quan về model
Hiểu được mô hình là giai đoạn rất quan trọng để sử dụng đúng cách cho mục đích đào tạo và dự đoán. Keras cung cấp một phương pháp đơn giản, tóm tắt để có được thông tin đầy đủ về mô hình và các layer.
Tóm tắt về mô hình được tạo trong phần trước như sau:
>>> model.summary() Model: "sequential_10"
_________________________________________________________________
Layer (type) Output Shape Param
#================================================================
dense_13 (Dense) (None, 32) 288
_________________________________________________________________
dense_14 (Dense) (None, 64) 2112
_________________________________________________________________
dense_15 (Dense) (None, 8) 520
=================================================================
Total params: 2,920
Trainable params: 2,920
Non-trainable params: 0
_________________________________________________________________
>>>
e. Huấn luyện và dự đoán Model
Mô hình cung cấp chức năng cho quá trình huấn luyện, đánh giá và dự đoán như sau
- compile − Định cấu hình quá trình học tập của mô hình
- fit − Đào tạo mô hình bằng cách sử dụng dữ liệu đào tạo
- evaluate − Đánh giá mô hình bằng cách sử dụng dữ liệu test
- predict − Dự đoán kết quả với dữ liệu đầu vào mới
2. Functional API
API tuần tự được sử dụng để tạo mô hình theo từng lớp.Functional API là một cách tiếp cận thay thế để tạo ra các mô hình phức tạp hơn. Mô hình Functional, bạn có thể xác định nhiều đầu vào hoặc đầu ra chia sẻ các lớp. Đầu tiên, chúng ta tạo một thể hiện cho mô hình và kết nối với các lớp để truy cập đầu vào và đầu ra của mô hình. Sau đây giải thích ngắn gọn về mô hình chức năng.
a. Tạo model
Import 1 layer input:
>>> from keras.layers import Input
Tạo một layer đầu vào chỉ định hình dạng kích thước đầu vào cho mô hình như sau:
>>> data = Input(shape=(2,3))
Xác định layer đầu vào :
>>> from keras.layers import Dense
Thêm layer Dense cho dữ liệu đầu vào :
>>> layer = Dense(2)(data)
>>> print(layer)
Tensor("dense_1/add:0", shape =(?, 2, 2), dtype = float32)
Xác định Model:
from keras.models import Model
Tạo một mô hình bằng cách chỉ định cả lớp đầu vào và đầu ra -
model = Model(inputs = data, outputs = layer)
Toàn bộ code quá trình tạo model đơn giản như sau :
from keras.layers import Input
from keras.models import Model
from keras.layers import Dense
data = Input(shape=(2,3))
layer = Dense(2)(data) model =
Model(inputs=data,outputs=layer) model.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_2 (InputLayer) (None, 2, 3) 0
_________________________________________________________________
dense_2 (Dense) (None, 2, 2) 8
=================================================================
Total params: 8
Trainable params: 8
Non-trainable params: 0
_________________________________________________________________
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Giới thiệu
- Bài 2: Cài đặt
- Bài 3: Cấu hình backend
- Bài 4: Tổng quan về Deep learning
- Bài 5: Deep learning
- Bài 6: Mô đun
- Bài 7: Layers (phần 1)
- Bài 8: Layers (Phần 2)
- Bài 9: Tuỳ chỉnh Layer
- Bài 10: Models
- Bài 11: Tổng hợp Model (Phần 1)
- Bài 12: Tổng hợp Model (Phần 2)
- Bài 13: Đánh giá và dự đoán mô hình
- Bài 14: Convolution Neural Network
- Bài 15: Dự đoán hồi quy sử dụng MPL
- Bài 16: Dự đoán chuỗi thời gian bằng LSTM RNN
- Bài 17: Ứng dụng
- Bài 18: Dự đoán thời gian thực với mô hình ResNet
- Bài 19: Pre-Trained Models