代码之家  ›  专栏  ›  技术社区  ›  mrgloom

如何在Keras中写入隐藏的MSE损失?

  •  2
  • mrgloom  · 技术社区  · 7 年前

    我试图写下蒙面的MSE损失:

    def mae_loss_masked(mask):
        def loss_fn(y_true, y_pred):
            abs_vec = tf.multiply(tf.abs(y_pred-y_true), mask)
            loss = tf.reduce_mean(abs_vec)
            return loss
        return loss_fn
    

    我的模型:

    def MobileNet_v1():
        # MobileNet with dense layer on top
    
        # Keras 2.1.6
        mobilenet = MobileNet(input_shape=(config.IMAGE_H, config.IMAGE_W, config.N_CHANNELS),
                              alpha=1.0,
                              depth_multiplier=1,
                              include_top=False,
                              weights='imagenet'
                              )
    
        x = Flatten()(mobilenet.output)
        x = Dropout(0.5)(x)
        x = Dense(config.N_LANDMARKS * 2, activation='linear')(x)
    
        # -------------------------------------------------------
    
        model = Model(inputs=mobilenet.input, outputs=x)
        optimizer = Adadelta()
        model.compile(optimizer=optimizer, loss=mae_loss_masked)
    
        model.summary()
        import sys
        sys.exit()
    
        return model
    

    但它给出了一个错误: TypeError: mae_loss_masked() takes 1 positional argument but 2 were given

    还有一个问题是,在这种情况下,批处理生成器的输出应该是什么样子。

    0 回复  |  直到 7 年前
    推荐文章