将 numpy 转换为张量(keras)(损失函数)

Posted

技术标签:

【中文标题】将 numpy 转换为张量(keras)(损失函数)【英文标题】:Translate numpy to tensor (keras) (loss function) 【发布时间】:2020-08-17 09:57:45 【问题描述】:

我正在尝试在以下形状上定义损失函数:(NUM_OF_STROKES, STROKE_LEN, 2) 例如,假设 NUM_OF_STROKES=1,STROKE_LEN=4,它可以是: [[[x1,y1], [x2,y2], [x3,y3], [x4,y4]]]

我希望我的损失函数是两个对应点之间的距离(所有距离的总和)。例如:

p1 = [[[a1,b1], [a2,b2], [a3,b3], [a4,b4]]]
p2 = [[[c1,d1], [c2,d2], [c3,d3], [c4,d4]]]
loss = sqrt((a1-c1)^2 + (b1-d1)^2) + ... + sqrt((a4-c4)^2 + (b4-d4)^2)

在 numpy 中,我可以这样做: np.sum(np.linalg.norm(np.array(p1) - np.array(p2), axis=1))

但我不知道如何在 tensrflow 中做到这一点 我正在使用 tensorflow 2 ,keras。

【问题讨论】:

【参考方案1】:

我认为您正在寻找的是:

tf.keras.backend.sum(tf.sqrt(tf.keras.backend.sum(tf.square(labels - predictions), axis=3)))

axis = 3 用于批处理

【讨论】:

以上是关于将 numpy 转换为张量(keras)(损失函数)的主要内容,如果未能解决你的问题,请参考以下文章

如何将numpy数组转换为keras张量

如何在不启用 keras 中的 run_eagerly 标志的情况下将张量转换为 numpy 数组

NotImplementedError:无法将符号张量 (2nd_target:0) 转换为 numpy 数组

Keras:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型列表)

尝试连接 keras 模型:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)

使用张量流在 keras 中对损失函数的输入进行切片