简体   繁体   中英

Custom Loss Function in Keras - Iterate through TensorFlow

I am working on creating a custom loss function in Keras. Here is an example.

import keras.backend as K
def test(y_true, y_pred):
     loss = K.square(y_pred - y_true)
     loss = K.mean(loss, axis = 1)
return loss 

Now in this example, I would like to only subtract let's say specific values from y_pred, but since this is in tensorflow, how do I iterate throw them.

For example, can I iterate through y_pred to pick values? and how? Lets say for this example, the batch size is 5.

I have tried things such as y_pred[0...i] tf.arange and many more...

Just pass it when you are compiling model. Like

model.compile(optimizer='sgd', loss = test)

Keras will Iterate over it automatically. You have also intentaion error in return statement.

import keras.backend as K
def test(y_true, y_pred):
     loss = K.square(y_pred - y_true)
     loss = K.mean(loss, axis = 1)
     return loss 

def test_accuracy(y_true, y_pred):
     return 1 - test(y_true, y_pred)

By this way you can pass your custom loss function to the model and you can also pass accuracy funtion similarly

model.compile(optimizer='sgd', loss = test, metrics=[test_accuracy])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM