python - 使用 Keras 在自定义损失函数中索引张量
问题描述
我在Keras
. 这是功能:
def custom_loss(groups_id_count):
def listnet_loss(real_labels, predicted_labels):
losses = tf.placeholder(shape=[None], dtype=tf.float32) # Tensor of rank 1
for group in groups_id_count:
start_range = 0
end_range = (start_range + group[1])
batch_real_labels = tf.slice(real_labels, [start_range, 1, None], [end_range, 1, None])
batch_predicted_labels = tf.slice(predicted_labels, [start_range, 0, 0], [end_range, 0, 0])
loss = -K.sum(get_top_one_probability(batch_real_labels)) * tf.math.log(get_top_one_probability(batch_predicted_labels))
losses = tf.concat([losses, loss], axis=0)
start_range = end_range
return K.mean(losses)
return listnet_loss
我会从to获取real_labels
和predicted_labels
项目,但当前代码返回异常:start_range
end_range
错误:
TypeError: Failed to convert object of type <class 'list'> to Tensor.
Contents: [0, 1, None]. Consider casting elements to a supported type.
我不知道该怎么做,因为这是我第一次使用TensorFlow
and Keras
。如何使用张量索引获取项目?提前致谢。
解决方案
请使用后端函数K.reshape根据您自己的知识重塑输入标签和输入预测。
对于标签,输入是未定义的(?,?),因此您需要通过重塑它来修复它。否则,您无法索引它。
推荐阅读
- javascript - 是否可以更改本地 URL
- laravel - 状态:405,状态文本:“方法不允许”,在 axios .post laravel
- spring-boot - 在 docker 容器上运行 ConfigServer 和 EurekaServer 时无法获取配置文件
- javascript - 如何让 P5JS 线在函数 mousePressed() 上滑动到新位置
- c# - System.Drawing 中不存在图形
- asp.net - ASP.NET MVC 启动 404 错误找不到资源
- c# - VSTest 异常 - VSTS CI 构建
- javascript - 使用 Gatsby.js,如何添加特定于路由的 og:image 元标记?
- vba - VBA excel使用基于单元格的用户名从活动目录获取信息
- html - 上传时桌面上的垂直图像在网页上显示为水平