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.