Keras - Model
Seperti yang dipelajari sebelumnya, model Keras mewakili model jaringan neural yang sebenarnya. Keras menyediakan dua mode untuk membuat model, API Sekuensial yang sederhana dan mudah digunakan serta API Fungsional yang lebih fleksibel dan canggih . Mari kita pelajari sekarang untuk membuat model menggunakan Sequential dan Functional API di bab ini.
Sekuensial
Ide inti dari Sequential APIhanya mengatur lapisan Keras dalam urutan berurutan sehingga disebut API Sekuensial . Sebagian besar JST juga memiliki lapisan dalam urutan yang berurutan dan data mengalir dari satu lapisan ke lapisan lain dalam urutan tertentu hingga data akhirnya mencapai lapisan keluaran.
Model ANN dapat dibuat hanya dengan menelepon Sequential() API seperti yang ditentukan di bawah ini -
from keras.models import Sequential
model = Sequential()
Tambahkan lapisan
Untuk menambahkan lapisan, cukup buat lapisan menggunakan API lapisan Keras dan kemudian lewati lapisan melalui fungsi add () seperti yang ditentukan di bawah ini -
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)
Di sini, kami telah membuat satu lapisan masukan, satu lapisan tersembunyi dan satu lapisan keluaran.
Akses modelnya
Keras menyediakan beberapa metode untuk mendapatkan informasi model seperti lapisan, data masukan, dan data keluaran. Mereka adalah sebagai berikut -
model.layers - Mengembalikan semua lapisan model sebagai daftar.
>>> 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 - Menampilkan semua tensor input model sebagai daftar.
>>> inputs = model.inputs
>>> inputs
[<tf.Tensor 'dense_13_input:0' shape=(?, 8) dtype=float32>]
model.outputs - Mengembalikan semua tensor keluaran model sebagai daftar.
>>> outputs = model.outputs
>>> outputs
<tf.Tensor 'dense_15/BiasAdd:0' shape=(?, 8) dtype=float32>]
model.get_weights - Mengembalikan semua bobot sebagai array NumPy.
model.set_weights(weight_numpy_array) - Atur bobot model.
Serialisasi modelnya
Keras menyediakan metode untuk membuat serial model menjadi objek serta json dan memuatnya lagi nanti. Mereka adalah sebagai berikut -
get_config() - IRmengembalikan model sebagai objek.
config = model.get_config()
from_config() - Ini menerima objek konfigurasi model sebagai argumen dan membuat model yang sesuai.
new_model = Sequential.from_config(config)
to_json() - Mengembalikan model sebagai objek 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() - Menerima representasi json dari model dan membuat model baru.
from keras.models import model_from_json
new_model = model_from_json(json_string)
to_yaml() - Mengembalikan model sebagai string 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() - Menerima representasi yaml dari model dan membuat model baru.
from keras.models import model_from_yaml
new_model = model_from_yaml(yaml_string)
Rangkum modelnya
Memahami model adalah fase yang sangat penting untuk digunakan dengan benar untuk tujuan pelatihan dan prediksi. Keras menyediakan metode sederhana, ringkasan untuk mendapatkan informasi lengkap tentang model dan lapisannya.
Ringkasan model yang dibuat di bagian sebelumnya adalah sebagai berikut -
>>> 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
_________________________________________________________________
>>>
Latih dan Prediksi modelnya
Model menyediakan fungsi untuk proses pelatihan, evaluasi dan prediksi. Mereka adalah sebagai berikut -
compile - Konfigurasi proses pembelajaran model
fit - Latih model menggunakan data pelatihan
evaluate - Evaluasi model menggunakan data uji
predict - Memprediksi hasil untuk input baru.
API Fungsional
Sequential API digunakan untuk membuat model lapis demi lapis. API Fungsional adalah pendekatan alternatif untuk membuat model yang lebih kompleks. Model fungsional, Anda dapat menentukan beberapa masukan atau keluaran yang berbagi lapisan. Pertama, kami membuat instance untuk model dan menghubungkan ke lapisan untuk mengakses input dan output ke model. Bagian ini menjelaskan tentang model fungsional secara singkat.
Buat model
Impor lapisan masukan menggunakan modul di bawah ini -
>>> from keras.layers import Input
Sekarang, buat layer input yang menentukan bentuk dimensi input untuk model menggunakan kode di bawah ini -
>>> data = Input(shape=(2,3))
Tentukan lapisan untuk input menggunakan modul di bawah ini -
>>> from keras.layers import Dense
Tambahkan layer Dense untuk input menggunakan baris kode di bawah ini -
>>> layer = Dense(2)(data)
>>> print(layer)
Tensor("dense_1/add:0", shape =(?, 2, 2), dtype = float32)
Tentukan model menggunakan modul di bawah ini -
from keras.models import Model
Buat model secara fungsional dengan menentukan lapisan input dan output -
model = Model(inputs = data, outputs = layer)
Kode lengkap untuk membuat model sederhana ditunjukkan di bawah ini -
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
_________________________________________________________________