小编Pav*_*vle的帖子

Keras,tensorflow:变量...的初始化器来自控制流构造,循环或条件

我正在训练一个面具r-cnn模型参考github上的这个代表:https: //github.com/matterport/Mask_RCNN

我遇到了一个似乎是使用Keras问题的问题,所以我来到这里.

代码计算感兴趣区域(rois)和特征映射的掩码:

mrcnn_mask = build_fpn_mask_graph(rois, mrcnn_feature_maps,
    config.IMAGE_SHAPE,
    config.MASK_POOL_SIZE,
    config.NUM_CLASSES)
Run Code Online (Sandbox Code Playgroud)

但是,有时rois可能全为零,在这种情况下我想直接返回所有零.所以,我像这样使用tf.cond:

def ff_true():
    mrcnn_mask = build_fpn_mask_graph(rois, mrcnn_feature_maps,
       config.IMAGE_SHAPE,
       config.MASK_POOL_SIZE,
       config.NUM_CLASSES)

def ff_false():
    return tf.zeros_like(target_mask)

mrcnn_mask = KL.Lambda(lambda x: tf.cond(tf.equal(tf.reduce_mean(x), 0), 
    ff_true, ff_true)) (rois)
Run Code Online (Sandbox Code Playgroud)

这引发了一个错误:

ValueError:变量lambda_5/cond/mrcnn_mask_conv1/kernel /的初始化器来自控制流构造内部,例如循环或条件.在循环或条件内创建变量时,使用lambda作为初始化程序.

我谷歌它但没有有用的信息.这似乎是错误地使用keras/tensorflow的问题.任何线索都会受到欢迎!

顺便说一句,如果我使用这个代码,它将没有错误(但我不想提前计算):

a = build_fpn_mask_graph(rois, mrcnn_feature_maps,
    config.IMAGE_SHAPE,
    config.MASK_POOL_SIZE,
    config.NUM_CLASSES)   
def ff_true():
    return a
def ff_false():
    return tf.zeros_like(target_mask)

mrcnn_mask = KL.Lambda(lambda x: tf.cond(tf.equal(tf.reduce_mean(x), 0), 
    ff_true, ff_true)) (rois)
Run Code Online (Sandbox Code Playgroud)

keras tensorflow

11
推荐指数
2
解决办法
6920
查看次数

标签 统计

keras ×1

tensorflow ×1