Pengacakan List / Array

Pengacakan list atau array merupakan salah satu cara untuk menciptakan susunan acak data pada saat proses pelatihan klasifier, seperti CNN (Convolutional Neural Network) atau DNN (Deep Neural Network). Lalu bagaimana melakukan pengacakan yang konsisten? sehingga hasil pengacakan bisa digunakan untuk menyusun data lain yang berhubungan dengan data utama untuk proses pelatihan.


Saya akan menggunakan library numpy dan mengasumsikan bahwa data akan disimpan dalam numpy array. Apakah numpy? Secara sederhana, Numpy atau numerical python adalah Matlab-nya Python. Numpy juga mengakselerasi operasi vektor dan matriks sama seperti Matlab.

Fungsi yang digunakan adalah numpy.random.permutation(..). Dokumentasi dari fungsi tersebut dapat dilihat pada halaman web berikut https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.random.permutation.html

Intinya dari fungsi tersebut adalah menghasilkan angka acak dari 0 sampai N sebanyak N buah. Setiap nilai yang dihasilkan dapat dijadikan acuan sebagai indek random dari array, sehingga jika data yang di inginkan adalah setengah data acak maka yang harus dilakukan adalah melihat N/2 indek yang di vektor yang dihasilkan oleh fungsi permutation.

import numpy as np

data1 = np.load("data1.npy")
data2 = np.load("data2.npy")

N = 5000
rndid = np.random.permutation(N)

# ambil hanya 100 random data
data1_rnd = np.zeros(100, dtype='f')
data2_rnd = np.zeros(100, dtype='f')
for i in range(100):
    data1_rnd[i] = data1[rndid[i]]
    data2_rnd[i] = data2[rndid[i]]


Hasil akhir dari potongan kode diatas adalah 100 data random dari array data1 dan data2, dengan asumsi bahwa data1 dan data2 adalah dua array yang saling berhubungan sehingga jika salah satu diacak maka yang lain juga harus mengikuti pengacakan yang sama.

Komentar

Postingan populer dari blog ini

Deskripsi: Fine-Grained Classification

Caffe Deep Learning Framework