【2021最新】Keras自定义Loss函数+接受输入+KerasTensor天坑解决方法

本文介绍了在Tensorflow 2.4环境下使用Keras自定义Loss函数时遇到的两个常见错误及其解决方案。包括如何处理KerasTensor与Tensor类型不匹配问题,以及如何解决因不同文件创建独立图而导致的操作不在同一图上的错误。

自定义函数+输入方法

环境配置:Tensorflow2.4,keras2.4.3

Keras自定义Loss函数,增加输入的方法,网上到处都有。
主要就是来源stackoverflow上一个仁兄的回答。
具体是这个链接:中国搬运翻译版本
具体实现方法自己去看,暂不赘述。

stackoverflow的方案有个很大问题。

自定义输入的input_tensor是KerasTensor,但是默认的loss函数输出的是Tensor。实操就会报错。

KerasTensor和Tensor是完全不同的格式。
KerasTensor是Keras中封装的特殊的张量,不具备Tensor很多性质。
可以这么理解,Tensor向下兼容KerasTensor,但是KerasTensor不能向上兼容Tensor。
两种向量相加等各种操作之后,得到的会是KerasTensor,而非Tensor
Tensor+KerasTensor = KerasTensor

第一个错误

原本的loss函数返回的Tensor最后是会转成numpy array完成一次迭代的。
Tensor可以转成numpy array,但是KerasTensor不行。
实操之后会报错:'Cannot convert a symbolic Keras input/output to a numpy array. '

解决方案:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值