首页 > 解决方案 > 在 Keras 模型中实现 lambda 层

问题描述

我正在尝试从 Keras 模型中实现一个外部 lambda 函数。但是该函数被调用了两次,或者“### x”和“### x_reshape”被打印了两次。如何消除这种情况?

def RA_reshape(x):
    print('\n### x ', x)
    x_reshape = K.reshape(x, [1, x.shape[1].value, x.shape[2].value, x.shape[3].value])
    print('\n### x_reshape ', x_reshape)
    return x_reshape

def unet(pretrained_weights = None,input_size = None):
    inputs = Input(input_size)

    conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(inputs)
    conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv1)

    RA_0 = Lambda(lambda y: RA_reshape(x=y) )
    conv1 = RA_0(conv1)

标签: pythontensorflowkeras

解决方案


这是 Keras 在内部工作并构建“图形”,它确实调用了两次函数,我们无能为力。

请注意,由于它是一个图表,它不会按照您的需要打印值!它只会打印符号张量。

为了打印数据,您需要创建一个小模型来预测您想要查看的数据。或者您需要启用渴望模式而不使用“预测”,而是手动使用张量调用每一层。


推荐阅读