【发布时间】:2020-03-09 11:19:59
【问题描述】:
我想创建一个张量,它是某种变换矩阵(例如旋转矩阵)
我的模型预测 2 个参数:x1 和 x2
所以当 B 是批次数时,输出是 (B, 2) 的张量。
但是,当我写损失时,我必须知道这个“B”,因为我想迭代它:
def get_rotation_tensor(x):
roll_mat = K.stack([ [[1, 0, 0],
[0, K.cos(x[i, 0]), -K.sin(x[i, 0])],
[0, K.sin(x[i, 0]), K.cos(x[i, 0])]] for i in range(BATCH_SIZE)])
pitch_mat = K.stack([ [[K.cos(x[i, 1]), 0, K.sin(x[i, 1])],
[0, 1, 0],
[-K.sin(x[i, 1]), 0, K.cos(x[i, 1])]] for i in range(BATCH_SIZE)])
return K.batch_dot(pitch_mat, roll_mat)
我能想到的唯一解决方案是提前预定义 BATCH_SIZE。但是有没有办法编写一个适用于每个批次大小的通用损失函数?
谢谢
【问题讨论】:
标签: tensorflow keras neural-network loss-function