Mengekspor Bobot dan Bias ke Network JST

Cukup lama juga tulisan saya tentang “Seputar Jaringan Syaraf Tiruan” yaitu enam tahun yang lalu. Salah satu komentar yang cukup menarik adalah tentang bagaimana komponen JST yang berfungsi training mengirimkan hasil trainingnya (bobot dan bias) ke network JST agar bisa dipergunakan oleh aplikasi web-based yang memiliki JST di dalamnya. Sedikit berbeda dengan publikasi saya tentang Web-GIS yang baik training maupun simulating berada di desktop-GIS (Fig.1).

Dengan memanfaatkan fasilitas training JST Matlab, kita dapat mengetahui bobot dan bias hasil training yang telah dilakukan (lihat postingan sebelumnya mengenai cara membaca hasil pelatihan JST). Dengan memanfaatkan cara membaca bias dan bobot, kita dapat mengirimkannya ke JST yang telah dirakit terlebih dahulu. Postingan kali ini bermaksud sama-sama berdiskusi mengenai teknik untuk mengirimkan bias dan bobot hasil training ke JST yang ada.

A. Training JST dengan fungsi newff

Agar lebih gampang, contoh training dapat dilihat di help matlab (ketik saja help newff di command window Matlab). Atau copas script berikut ini:

  • load simplefit_dataset
  • net = newff(simplefitInputs,simplefitTargets,20);
  • net = train(net,simplefitInputs,simplefitTargets);
  • simplefitOutputs = sim(net,simplefitInputs);

Setelah enter ditekan, jendela pelatihan akan muncul seperti gambar di bawah ini. Tunggu sesaat hingga proses pelatihan selesai dijalankan.

B. Latihan Meng-update bobot JST Hasil Pelatihan

Untuk melihat variabel-variabel hasil pelatihan, kita dapat lakukan dengan menekan net di command window (jika variabel JST-nya “net” dan jika tidak, sesuai dengan namanya, biasanya network1 (default) jika dibuat di nntool).

  • sim(net,94)
  • ans =
  • 4.9494
  • Jawaban1=ans

Kode di atas adalah hasil awal JST ketika diberi masukan “94”, yaitu sebesar 4.9494. Berikutnya kita misalnya telah melakukan training lagi dengan data yang lebih baru dan akan meng-update dengan data baru. Sementara data yang lama adalah sebagai berikut:

  • >> net.IW
  • ans =
  • [20×1 double]
    • []
  • >> cell2mat(ans)
  • ans =
  • 28.3617
  • 27.9082
  • -27.8863
  • 26.6165
  • 23.2698
  • -15.0705
  • -20.3582
  • 22.0298
  • 28.3998
  • 28.0369
  • -27.9783
  • 27.8605
  • 27.8120
  • -27.7361
  • 28.0819
  • -28.8486
  • -29.2218
  • 26.3938
  • 26.8540
  • 28.1526
  • IWW=ans;

Di sini kita bisa mencoba melatih JST dengan data latih baru. Tetapi untuk gampangnya, sebagai perbandingan saja, misalnya IW di baris pertama misalnya “nol” (berwarna merah pada IW di atas). Insert dengan kode berikut:

  • IWW(1,1)=0

Sehingga baris pertama IW menjadi nol. Kembalikan variabel “mat” di atas menjadi “cell” mengingat bobot di Matlab adalah dalam bentuk cell.

  • IWWnew=mat2cell(IWW)
  • net.IW(1,1)=IWWnew

Di sini variabel baru IWWnew (konversi mat menjadi cell) disisipkan di net.IW yang merupakan bobot input JST.

  • >> sim(net,94)
  • ans =
  • 4.0079
  • Jawaban2=ans

Di sini kita uji dengan data test yang sama dengan sebelumnya (“94”), hasilnya ternyata berbeda dengan sebelumnya.

  • >> [jawaban1;jawaban2]
  • ans =
  • 4.9494
  • 4.0079

Perhatikan Jawaban1 dan Jawaban2 yang berbeda. Artinya JST sudah berubah karena update bobot di bagian input (net.IW). Untuk bias dan bobot sisi hidden layer dapat dilakukan dengan cara yang sama. Untuk mengirimkannya lewat mekanisme database, ada baiknya membaca buku yang telah kami tulis sebelumnya. Selamat mencoba.