文章目录
自定义函数+输入方法
环境配置: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. '
解决方案:

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





