Tensorflow 如何在函数API keras中使用已定义函数

Tensorflow 如何在函数API keras中使用已定义函数,tensorflow,lambda,functional-programming,layer,Tensorflow,Lambda,Functional Programming,Layer,在函数API期间,我对lambda层非常困惑 请告诉我哪个是正确的 比如说 def magic(x): x2=x+x return x2 D = Input((n,)) E = Lambda(magic)(D) d = Model(~~~~) or D = Input((n,)) E = magic(D) d = Model(~~~~) 还有一个案例 def magic(): x2=np.randn(3,1) return x2 D = Input((n,)

在函数API期间,我对lambda层非常困惑 请告诉我哪个是正确的

比如说

def magic(x):
   x2=x+x
   return x2

D = Input((n,))
E = Lambda(magic)(D)
d = Model(~~~~) 

or

D = Input((n,))
E = magic(D)
d = Model(~~~~) 
还有一个案例

def magic():
   x2=np.randn(3,1)
   return x2

D = Input((n,))
E = Lambda(magic)
d = Model(~~~~) 

or

D = Input((n,))
E = magic()
d = Model(~~~~) 

请救救我

如果要将自定义操作包装为如下所示的层,可以使用第一种方法

def magic(x):
    x2 = x + x
    return x2

inp = tf.keras.Input(shape=(2,))
x = tf.keras.layers.Dense(4, name="id_1")(inp)

# Ways to Define Custom Layer
x = tf.keras.layers.Lambda(lambda val: magic(val))(x)
# or
# x = tf.keras.layers.Lambda(magic)(x)
# or
# x = tf.keras.layers.Lambda(lambda val: (val + val))(x)

x = tf.keras.layers.Dense(4, name="id_2")(x)
model = tf.keras.Model(inputs=inp, outputs=x, name="inner_model")

print(model.summary())

非常感谢你。我还有一个问题。没有输入的函数如何与lambda层一起使用???这意味着我的问题中的第二个黑匣子在第二种情况下,我相信您的魔法函数的输出将与另一个(自定义)层一起使用。如果是,我认为你不需要额外的一层。例如,您可以在单Lambda层中执行线性变换
y=mx+c
。这意味着您不需要两个lambda层,例如:一个用于乘法,另一个用于第二个magic function中的随机盐加法。寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定问题或错误以及在问题本身中复制它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。