Keras - All layer names should be unique

后端 未结 3 665
滥情空心
滥情空心 2021-01-11 23:25

I combine two VGG net in keras together to make classification task. When I run the program, it shows an error:

RuntimeError: The name \"predictions\"

3条回答
  •  说谎
    说谎 (楼主)
    2021-01-11 23:44

    Example:

    # Network for affine transform estimation
    affine_transform_estimator = MobileNet(
                                input_tensor=None,
                                input_shape=(config.IMAGE_H // 2, config.IMAGE_W //2, config.N_CHANNELS),
                                alpha=1.0,
                                depth_multiplier=1,
                                include_top=False,
                                weights='imagenet'
                                )
    affine_transform_estimator.name = 'affine_transform_estimator'
    for layer in affine_transform_estimator.layers:
        layer.name = layer.name + str("_1")
    
    # Network for landmarks regression
    landmarks_regressor = MobileNet(
                            input_tensor=None,
                            input_shape=(config.IMAGE_H // 2, config.IMAGE_W // 2, config.N_CHANNELS),
                            alpha=1.0,
                            depth_multiplier=1,
                            include_top=False,
                            weights='imagenet'
                            )
    landmarks_regressor.name = 'landmarks_regressor'
    for layer in landmarks_regressor.layers:
        layer.name = layer.name + str("_2")
    
    input_image = Input(shape=(config.IMAGE_H, config.IMAGE_W, config.N_CHANNELS))
    downsampled_image = MaxPooling2D(pool_size=(2,2))(input_image)
    x1 = affine_transform_estimator(downsampled_image)
    x2 = landmarks_regressor(downsampled_image)
    x3 = add([x1,x2])
    
    model = Model(inputs=input_image, outputs=x3)
    optimizer = Adadelta()
    model.compile(optimizer=optimizer, loss=mae_loss_masked)
    

提交回复
热议问题