我无法使用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)在解决态度回归问题上不够有效。
您有什么建议吗?