Mendapatkan kombinasi dari beberapa list di Python

Beberapa bulan lalu, saya mengerjakan skripsi yang menerapkan grid search *sigh* dengan beberapa kombinasi hyperparameter/hyperparams. Tentu tak menyenangkan jika saya harus membuat kombinasi secara manual.

learning_rate_list = [0.001, 0.01, 0.1, 1.0, 10, 100]
decay_rate_list = [0.00005, 0.0001, 0.001, 0.01, 0.1]
momentum_rate_list = [0.1, 0.2, 0.4, 0.8, 1]
batch_size_list = [64, 128, 256, 512, 1024, 2048]

Dari 4 list di atas, harus dibuat kombinasi hyperparams untuk dimasukkan sebagai argumen saat membuat model di Keras. (Btw, saya tahu bahwa batch size bukanlah hyperparams.) Misalnya salah satu kombinasi adalah:

learning_rate = 0.1
decay_rate = 0.001
momentum_rate = 0.1
batch_size = 64

Berarti jika ada 4 list dengan masing-masing memiliki elemen sejumlah 6, 5, 5, dan 6, maka akan muncul 900 kombinasi dari keempat list tersebut. Sungguh tak menyenangkan jika saya harus memasukkan satu per satu kombinasi hyperparams ke dalam model. Not good. Jadi yang saya lakukan adalah membuat daftar kombinasi sebanyak 900 itu terlebih dahulu.

import itertools
import random

combination_list = list(itertools.product(*[learning_rate_list, decay_rate_list, momentum_rate_list, batch_size_list]))

print(len(combination_list))
print(combination_list[:3])

Jika kode di atas dijalankan, maka konsol Python akan menampilkan jumlah elemen dari daftar kombinasi yaitu 900 dan 3 kombinasi pertama. Saya juga tak lupa untuk mengacak daftar kombinasi tersebut agar nantinya pemrosesan grid search tidak urut dari kombinasi (0.001, 0.00005, 0.1, 64) sampai (100, 0.1, 1, 2048).

random.shuffle(combination_list)

Good luck!

Diterbitkan oleh

Faruq

Hai! Saya senang bisa tahu kamu membaca profil ini. Saat ini, saya berprofesi sebagai pembaca dan penulis amatir. Saya menulis di blog pribadi "Tempat Pembuangan Otak" dan situs "Unlearn Everything, New Level of Understanding". Tentu akan menyenangkan jika kita saling mengenal, jadi, mengapa harus menunda saling menyapa di kolom komentar?

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google

You are commenting using your Google account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.