मैं मध्यवर्ती परतों के अभ्यावेदन का उपयोग करके एक हानि फ़ंक्शन को लागू करने का प्रयास कर रहा हूं। जहां तक ​​​​मुझे पता है, केरस बैकएंड कस्टम लॉस फ़ंक्शन केवल दो इनपुट तर्क (y_ture, और y-pred) स्वीकार करता है। मैं @ tf.function के साथ एक हानि फ़ंक्शन को कैसे परिभाषित कर सकता हूं और इसे एक मॉडल के लिए उपयोग कर सकता हूं जिसे केरस के माध्यम से परिभाषित किया गया है? किसी भी सहायता की सराहना की जाएगी।

2
Aryan Asadian 18 जून 2020, 19:13

1 उत्तर

सबसे बढ़िया उत्तर

आपके नुकसान फ़ंक्शन में अतिरिक्त चर पारित करने के लिए यह एक आसान समाधान है। हमारे मामले में, हम अपनी एक परत (x1) के छिपे हुए आउटपुट को पास करते हैं। इस आउटपुट का उपयोग हानि फ़ंक्शन के अंदर कुछ करने के लिए किया जा सकता है (मैं एक डमी ऑपरेशन करता हूं)

def mse(y_true, y_pred, hidden):
    error = y_true-y_pred
    return K.mean(K.square(error)) + K.mean(hidden)


X = np.random.uniform(0,1, (1000,10))
y = np.random.uniform(0,1, 1000)

inp = Input((10,))
true = Input((1,))
x1 = Dense(32, activation='relu')(inp)
x2 = Dense(16, activation='relu')(x1)
out = Dense(1)(x2)

m = Model([inp,true], out)
m.add_loss( mse( true, out, x1 ) )
m.compile(loss=None, optimizer='adam')
m.fit(x=[X, y], y=None, epochs=3)

## final fitted model to compute predictions
final_m = Model(inp, out)
2
Marco Cerliani 8 मार्च 2021, 12:35