sam*_*mjk 5 optimization deep-learning keras
该Keras损失页说,如果我们有一个自定义的损失函数,则“实际的优化目标是平均在所有数据点的输出数组的。” 有什么方法可以优化所有数据点(而不是平均值)的输出数组的中值?
为了做到这一点,你需要进入张量流级别
import keras
import tensorflow
def pick_median(arg_tensor):
the_upper_tensor = tensorflow.contrib.distributions.percentile(arg_tensor, 50, interpolation='higher')
the_lower_tensor = tensorflow.contrib.distributions.percentile(arg_tensor, 50, interpolation='lower')
final_tensor = (the_upper_tensor + the_lower_tensor) / 2
# print(the_count.eval(session=keras.backend.get_session()))
return final_tensor
Run Code Online (Sandbox Code Playgroud)
比方说,以下是定义median_squared_error损失函数的方式:
def median_squared_error(arg_y_true,
arg_y_pred):
final_tensor = keras.backend.square(arg_y_pred - arg_y_true)
final_tensor = pick_median(arg_tensor=final_tensor)
return final_tensor
Run Code Online (Sandbox Code Playgroud)