Python 在Keras模型中实现lambda层

Python 在Keras模型中实现lambda层,python,tensorflow,keras,Python,Tensorflow,Keras,我试图从Keras模型中实现一个外部lambda函数。但是函数被调用两次,或者“###x”和“###x#u整形”被打印两次。如何消除这种情况 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) re

我试图从Keras模型中实现一个外部lambda函数。但是函数被调用两次,或者“###x”和“###x#u整形”被打印两次。如何消除这种情况

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)

你能试着这样称呼它吗:

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(RA_reshape)(conv1)

告诉我这是否有效

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

请注意,由于它是一个图形,因此不会按您的需要打印值!它将只打印符号张量

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