InvalidArgumentError:In [0]不是矩阵。相反,它具有形状[]

时间:2019-04-29 18:30:49

标签: tensorflow keras regression

我无法使用keras训练网络,在第1阶段第一个批次出现以下错误:

InvalidArgumentError: In[0] is not a matrix. Instead it has shape []
     [[{{node training/SGD/gradients/dense_1/MatMul_grad/MatMul}}]]

我正在尝试使用Keras和https://github.com/farrell236/DeepPose提供的自定义函数来解决回归问题。

该网络非常类似于CNN VGG。

我认为问题在于损失函数。特别是,我认为权重初始化是个问题(看一下Tensorflow示例:https://github.com/farrell236/DeepPose/blob/master/tensorflow/example

那是我的损失函数:

def custom_loss(y_true, y_pred):
    loss = SE3GeodesicLoss(np.ones((1, 6)))
    tf.initializers.constant([loss])

    y_pred = tf.cast(y_pred, dtype=tf.float32)
    y_true = tf.cast(y_true, dtype=tf.float32)

    loss = SE3GeodesicLoss(np.ones(6))
    geodesic_loss = loss.geodesic_loss(y_pred, y_true)
    geodesic_loss = tf.cast(geodesic_loss, dtype=tf.float32)

    return geodesic_loss

奇怪的是,我能够将此功能用作训练的指标。

其他信息: 我想做的是估计一个对象的位置,该对象具有图像作为输入,相对欧拉角和目标距离作为标签(这意味着6个参数[r_x,r_y,r_z,t_x,t_y,t_z])。我正在尝试实现此损失函数,以解决姿态估计问题。其他损失(均指MSE,MAE)在解决态度回归问题上不够有效。

您有什么建议吗?

0 个答案:

没有答案