python - 如何裁剪 Keras 中图层返回的值?

标签 python keras regression linear-regression clip

如何裁剪 Lambda 层返回的值?

我试过用这个:

from keras.backend.tensorflow_backend import clip
from keras.layers.core import Lambda

...
model.add(Dense(1))
model.add(Activation('linear'))
model.add(Lambda(lambda x: clip(x, min_value=200, max_value=1000)))

但是我把 Lambda+clip 放在哪里并不重要,它不会影响任何东西吗?

最佳答案

它实际上必须在 model.compile 步骤中作为损失来实现。

from keras import backend as K

def clipped_mse(y_true, y_pred):
    return K.mean(K.square(K.clip(y_pred, 0., 1900.) - K.clip(y_true, 0., 1900.)), axis=-1)

model.compile(loss=clipped_mse)

编辑:实际上,事后看来,我认为这可能不是正确的方法。这实际上意味着我们不会因为超过太高的值而增加惩罚 - 这在某种程度上与我们想要的相反。

关于python - 如何裁剪 Keras 中图层返回的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43099233/

相关文章:

python - 导入在 __init__.py 中指定的变量

python - 匹配 Ant 路径的正则表达式

python - Keras 在 model.fit() 之后删除图层

python - 无法将大小为 921600 的数组 reshape 为形状 (1,128,128,1)

r - JAGS 随机效应模型预测

Python 全局热键

python - R Lattice 类似于 Python、Pandas 和 Matplotlib 的绘图

machine-learning - 如何理解SpatialDropout1D以及何时使用它?

python - 如何根据 ODR 结果计算标准误差?

替换 R 中 Reg 模型中的标准误差