python - 如何更改切片张量流对象的值
问题描述
我想为我的 tensorflow keras 模型编写一个自定义损失函数来执行 YOLO 算法,问题是当特定网格中没有对象时,对象位置的导数应该为 0,因为它不应该不在乎。因此,我尝试将每个 bbox 的 y_true 乘以它,但我无法对 Tensor 对象进行切片并更改其值。
def YOLO_loss_function_shell(classes_path, output_shape): with open(classes_path, "r") as f_arch: classes = list(map(lambda row: row.strip("\n").strip("\r"), f_arch.readlines ())) classes = list(filter(lambda row: row != "" 而不是 row.startswith("#"), classes)) num_classes = len(classes) bbox_size = (5 + num_classes) num_bboxes = int(output_shape [2] / bbox_size)
def YOLO_loss_function(y_true, y_pred):
cost = np.subtract(np.multiply(-y_true,
(K.log(y_pred + tf.keras.backend.epsilon()))),
np.multiply((1 - y_true),
(K.log(1 - y_pred + tf.keras.backend.epsilon()))))
for b in range(num_bboxes):
cost[:, :, bbox_size*b:bbox_size*(b + 1)] *= y_true[:, :, bbox_size*b:(bbox_size*b + 1)]
return K.sum(cost, axis=-1)
return YOLO_loss_function
它一直告诉我 TypeError: 'Tensor' object does not support item assignment
解决方案
推荐阅读
- python - 显示()函数python
- python - 如何在 Kotlin 中解密 AES/CBC 加密字符串?
- selenium - 我想使用 Jenkins 等 CI 工具在 jira 中添加测试报告文件作为附件,请指导我
- google-apps-script - 保护行的功能不适用于多张纸
- linux - 如何构建基于节点的dockerized jenkins-slave,它可以通过Jenkins master运行节点基础项目
- php - Guzzle HTTP,Laravel Http Client,为什么我的代码很慢?
- c# - C# Forms 在消息框/数据库/图表中的新表单中显示排名列表
- java - 当设备在标记的 10 米内时调用该方法
- reactjs - 如何从reactjs中的元素中删除href属性
- javascript - 如何不使用 puppeteer 加载任何图像?