写在前面的话:我已放弃这种做法,没法BP。。。
最近因为工作需要,需要设计一个loss function,因为以前看过些别人怎么用TensorFlow写loss function,感觉也就是几行的代码,所以,自己把数学公式想明白后,就开始码代码,第一步肯定是Google了。
搜到的很多都是这种文章Tensorflow 损失函数(loss function)及自定义损失函数(三),里面讲了很多TensorFlow官方自带的函数,但这种函数,说实话,是不适用于我的损失函数的,虽然不是很复杂,但是有很多查找和判断语句,还涉及到维度的变换,这个是这些函数无法解决的。
tensorflow里面怎么自定义一个loss function?-SofaSofa对这个有个概括,即只有两种方法:
1.用C++写底层代码,重新编译TensorFlow;
2.把自己定义的损失函数用TensorFlow中的标准函数表示出来;
说实话看到这个很失望,第一种方法在Adding a New Op里有详细的讲解,看到长长的介绍感觉头大,注册再编译一套流程走完感觉得好久好久。。。
好在最后还是给我搜到了TF 竟然还有这种操作,里面第一个操作很有趣,详细解释了下tf.py_func的用法,其用处是:
Wraps a python function and uses it as a TensorFlow op.
即能用Python程序去用来得到loss函数,这个已经符合我的需求了,就这样蹭蹭蹭一个下午就写好代码了。
不过,就如TF 竟然还有这种操作所说,是没法求导的,其实很好理解,这个python function只定义了前向推导的loss是怎么来的,但怎么反向推导确实无法给出,这个问题值得继续探讨。
【已完结】