微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过添加新的权重参数自定义损失函数/添加新的lambda层来实现Keras自定义预测值

如何解决通过添加新的权重参数自定义损失函数/添加新的lambda层来实现Keras自定义预测值

我正在尝试将我的预测值构造为:

y_hat = alpha * output_1 + (1-alpha) * output_2

“ output_1”和“ output_2”都是从前一层获得的n * 1向量,而alpha是标量。但是问题是我不想自己修复Alpha,而是希望Alpha能够自己学习。

示例代码

def custom_lambda_layer_1(input1):
    return output1

def custom_lambda_layer_2(input2):
    return output2

lambda_layer_1 = Lambda(custom_lambda_layer_1)(prevIoUs1)  #prevIoUs1 is the output from prevIoUs layers
lambda_layer_2 = Lambda(custom_lambda_layer_2)(prevIoUs2)

### here is what I want to do 
def y_hat(parameter):
    return parameter[0] * alpha + parameter[1] * (1-alpha)

lambda_layer = Lambda(y_hat)([lambda_layer_1,lambda_layer_2])

### but I don't kNow where to write alpha as input/ output

我不知道如何修改代码,以便可以将alpha视为可以更新的参数。我不确定是否也可以通过这种方式学习alpha。

或者,我可以让

alpha_new = alpha_odd - learn_rate * gradient_of_alpha

但是我也不知道该怎么插入?我读了其他答案,但它们的“ alpha”不是一个可以由人更改的固定值,就是来自先前各层的输出。但是在这里,“ alpha”基本上是连接两个输出部分的权重参数。最初的问题是我不知道如何为这两个输出分配权重,因此我希望自己可以对其进行学习/优化。

任何想法将不胜感激!!谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。