tensorflow - 我的自定义损失函数中没有为任何变量提供梯度
问题描述
我有以下自定义错误函数,指示我在 10 个变量上的接近程度:
def custom__error(y_true, y_pred):
yt = tf.nn.softmax( y_true )
bt = 1 + tf.argsort(yt,axis=-1,direction='DESCENDING',stable=False,name=None)
ct = tf.keras.backend.eval(bt)
dt = ct[:,:10]
yp = tf.nn.softmax( y_pred )
bp = 1 + tf.argsort(yp,axis=-1,direction='DESCENDING',stable=False,name=None)
cp = tf.keras.backend.eval(bp)
dp = cp[:,:10]
ii = tf.sets.intersection(dt, dp)
result = len(ii.values)/y_true.shape[1]
tf.print(10-result)
return result
我想将它用于我的损失函数,所以我写道:
def custom_lossss(y_true, y_pred, coef1, coef2,coef3,coef4):
yt = tf.nn.softmax( y_true )
bt = 1 + tf.argsort(yt,axis=-1,direction='DESCENDING',stable=False,name=None)
ct = tf.keras.backend.eval(bt)
dt = ct[:,:10]
yp = tf.nn.softmax( y_pred )
bp = 1 + tf.argsort(yp,axis=-1,direction='DESCENDING',stable=False,name=None)
cp = tf.keras.backend.eval(bp)
dp = cp[:,:10]
ii = tf.sets.intersection(dt, dp)
iivl = tf.size(ii.values)
trdv = tf.divide(iivl,tf.size(y_true))
return trdv
但是我得到了错误:没有为任何变量提供渐变 我看不到路径被破坏的地方!你有什么线索吗?
解决方案
推荐阅读
- javascript - 将 JQuery 放在 React 组件中的什么位置?
- autohotkey - 是否可以使用两个键,一个在 AutoHotKey (AHK) 脚本中执行一个功能
- javascript - django ajax 请求获取选定的索引
- angular - 构建后运行命令/脚本
- bash - 在 Bash 中为文件名动态添加日期
- saml - SAMLv2 - IssueInstant 的处理规则?
- css - 在伪元素上转换转换会导致元素在 Safari 中抖动
- visual-studio-code - VSCode 扩展:如何在输出通道中渲染彩色输出?
- python - 如何迭代defaultdict?
- javascript - 如何在鼠标滚动时折叠 Jquery 手风琴