In Keras, if you need to have a custom loss with additional parameters, we can use it like mentioned on https://datascience.stackexchange.com/questions/25029/custom-loss-fun
Yes, there is! custom_objects expects the exact function that you used as loss function (the inner one in your case):
model = load_model(modelFile, custom_objects={ 'loss': penalized_loss(noise) })
Unfortunately keras won't store in the model the value of noise, so you need to feed it to the load_model function manually.
You can try this:
import keras.losses
keras.losses.penalized_loss = penalized_loss
(after defining 'penalized_loss' function in your current 'py' file).