Halo Saya memerlukan istilah regularisasi khusus untuk ditambahkan ke fungsi Kerugian (biner lintas entropi) saya. Adakah yang bisa membantu saya dengan sintaks Tensorflow untuk mengimplementasikan ini? Saya menyederhanakan semuanya semaksimal mungkin sehingga lebih mudah untuk membantu saya.
Model ini mengambil kumpulan data 10.000 konfigurasi biner 18 x 18 sebagai masukan dan memiliki kumpulan konfigurasi 16x16 sebagai keluaran. Jaringan saraf hanya terdiri dari 2 lapisan Konvlusional.
Model saya terlihat seperti ini:
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
EPOCHS = 10
model = models.Sequential()
model.add(layers.Conv2D(1,2,activation='relu',input_shape=[18,18,1]))
model.add(layers.Conv2D(1,2,activation='sigmoid',input_shape=[17,17,1]))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-3),loss=tf.keras.losses.BinaryCrossentropy())
model.fit(initial.reshape(10000,18,18,1),target.reshape(10000,16,16,1),batch_size = 1000, epochs=EPOCHS, verbose=1)
output = model(initial).numpy().reshape(10000,16,16)
Sekarang saya menulis sebuah fungsi yang ingin saya gunakan sebagai istilah regularisasi tambahan sebagai istilah regularisasi. Fungsi ini mengambil kebenaran dan prediksi. Pada dasarnya ia mengalikan setiap titik dari keduanya dengan tetangganya yang 'kanan'. Kemudian selisihnya diambil. Saya berasumsi bahwa suku benar dan prediksi adalah 16x16 (dan bukan 10000x16x16). Apakah ini benar?
def regularization_term(prediction, true):
order = list(range(1,4))
order.append(0)
deviation = (true*true[:,order]) - (prediction*prediction[:,order])
deviation = abs(deviation)**2
return 0.2 * deviation
Saya akan sangat menghargai bantuan dengan menambahkan sesuatu seperti fungsi ini sebagai istilah regularisasi pada kerugian saya karena membantu jaringan saraf berlatih lebih baik dalam interaksi 'tetangga kanan' ini. Saya benar-benar kesulitan dalam menggunakan fungsi Tensorflow yang dapat disesuaikan. Terima kasih, sangat dihargai.