【发布时间】:2020-06-27 16:08:06
【问题描述】:
我有一个 Keras 模型,它具有输入 x_1、...、x_n 和 d 维输出 f(x_1)、...、f(x_n)。我正在研究 d 维目标 y_1,...,y_n 的回归问题。
我想最小化损失函数:
对于介于 0 和 1 之间的固定元参数 a,返回 |f(x_i)-y_i|^2 的第 a^th(经验)分位数。
这是我目前编写的代码:
def keras_custom_loss(y_true,y_predicted):
SEs = K.square(y_true-y_predicted)
out_custom = tfp.stats.percentile(SEs, 50.0, interpolation='midpoint')
return out_custom
一个问题是我想避免使用 tensorflow_probability,我希望在 Keras 上完成整个实现。
但是,我不知道怎么做。
【问题讨论】:
-
你能正确描述输入和输出的形状吗?目前太模棱两可了。也许如果您打印模型摘要?你想要批处理维度上的百分位数还是另一个维度?
-
我想要批处理维度中的百分位数。这里我模型的输出形状是 (None, 1) 。
-
Ok :) -- 当你说它必须完全在 Keras 上完成时,你的意思是你根本不能使用 tensorflow 吗?还是关于“tensorflow_probability”(我不知道)是一个外部包? -- 我可以用
tensorflow给你解决方案吗? -
确定 TensorFlow 没问题。我最近在 TensorFlow 上编写代码然后将其放入 Keras 时遇到了一个问题(所以我有点害怕:P)
-
您想要百分位数的“值”还是“包含在该百分位数中的所有元素”?
标签: python keras loss-function quantile risk-analysis