ValueError:尺寸必须相等,但对于'{{node Equal}} = Equal [T = DT_FLOAT,incompatible_shape_error = true]Cast_2,Cast_3'

问题描述

我正在尝试制作姿势估计模型。我编写了自己的损失函数,该函数获取网络(640、640、16)-(16640 x 640个关键点的热图)和标签(16、2)-(带有x和y坐标的16个关键点)的输出。然后,我根据标签生成热图并计算均方误差。但是,它会产生形状错误,我真的不知道如何解决。 这是带有生殖示例的Colab笔记本:https://colab.research.google.com/drive/1-R8Y7Ke7Ip9n7gA_BfOSgJmkucuKjNsS?usp=sharing

这是错误

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-8-6228f8c4eebf> in <module>()
----> 1 autoencoder.fit(dataset.batch(1),epochs=1,batch_size=1)

10 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args,**kwargs)
    971           except Exception as e:  # pylint:disable=broad-except
    972             if hasattr(e,"ag_error_Metadata"):
--> 973               raise e.ag_error_Metadata.to_exception(e)
    974             else:
    975               raise

ValueError: in user code:

    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:806 train_function  *
        return step_function(self,iterator)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:796 step_function  **
        outputs = model.distribute_strategy.run(run_step,args=(data,))
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:1211 run
        return self._extended.call_for_each_replica(fn,args=args,kwargs=kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2585 call_for_each_replica
        return self._call_for_each_replica(fn,args,kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2945 _call_for_each_replica
        return fn(*args,**kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:789 run_step  **
        outputs = model.train_step(data)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:759 train_step
        self.compiled_metrics.update_state(y,y_pred,sample_weight)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/compile_utils.py:409 update_state
        metric_obj.update_state(y_t,y_p,sample_weight=mask)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/utils/metrics_utils.py:90 decorated
        update_op = update_state_fn(*args,**kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/metrics.py:176 update_state_fn
        return ag_update_state(*args,**kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/metrics.py:612 update_state  **
        matches = ag_fn(y_true,**self._fn_kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper
        return target(*args,**kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/metrics.py:3309 sparse_categorical_accuracy
        return math_ops.cast(math_ops.equal(y_true,y_pred),K.floatx())
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper
        return target(*args,**kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_ops.py:1614 equal
        return gen_math_ops.equal(x,y,name=name)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/gen_math_ops.py:3224 equal
        name=name)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py:744 _apply_op_helper
        attrs=attr_protos,op_def=op_def)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py:593 _create_op_internal
        compute_device)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py:3485 _create_op_internal
        op_def=op_def)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py:1975 __init__
        control_input_ops,op_def)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py:1815 _create_c_op
        raise ValueError(str(e))

    ValueError: Dimensions must be equal,but are 16 and 640 for '{{node Equal}} = Equal[T=DT_FLOAT,incompatible_shape_error=true](Cast_3,Cast_4)' with input shapes: [?,16,2],[?,640,640].

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)