获取自定义tensorflow keras度量中的批量大小
我想制作一个自定义度量,如中所示 我的代码如下所示获取自定义tensorflow keras度量中的批量大小,tensorflow,tensorflow2.0,tf.keras,Tensorflow,Tensorflow2.0,Tf.keras,我想制作一个自定义度量,如中所示 我的代码如下所示 class IOU(tf.keras.metrics.Metric): def __init__(self, name='iou_part', **kwargs): super(IOU, self).__init__(name=name, **kwargs) self.iou = self.add_weight(name='iou_part', initializer='zeros') self.template_wi
class IOU(tf.keras.metrics.Metric):
def __init__(self, name='iou_part', **kwargs):
super(IOU, self).__init__(name=name, **kwargs)
self.iou = self.add_weight(name='iou_part', initializer='zeros')
self.template_width = 115
self.template_height = 75
self.frame_width = 1280
self.frame_height = 720
self.corners = tf.constant([[-0.5, 0.1], [-0.5, 0.5], [0.5, 0.5], [0.5, 0.1]], dtype=tf.float32)
self.epsilon = 1e-6
def update_state(self, y_true, y_pred, sample_weight=None):
batch_size = y_true.shape[0]
fake_frame = tf.ones((batch_size, 1, self.frame_height, self.frame_width))
fake_template = tf.ones((batch_size, 1, self.template_height, self.template_width))
target = get_perspective_transform(self.corners, tf.reshape(y_true, (-1, 2, 4)))
output = get_perspective_transform(self.corners, tf.reshape(y_pred, (-1, 2, 4)))
## Compute IOU
但是,这会产生错误“TypeError:Expected int32,Get None of type'NoneType”。这是因为在执行model.compile(..)时,y_true为(None,4,2)。将批量大小放入度量的正确方法是什么?使用
tf.shape(y\u-true)[0]
而不是y\u-true.shape[0]
@Susmit-Agrawal-yes有效。你能说一下为什么它有效,为什么y_为真。形状[0]不起作用吗?tf.shape()返回跨步切片:0,而y_true.shape[0]返回非类型。