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 
_________________________________________________________________