【问题标题】:How to use defined function in functional API keras如何在功能 API keras 中使用定义的函数
【发布时间】:2020-01-21 03:23:24
【问题描述】:

在功能 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(~~~~) 

请救救我!!

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码在问题本身。没有清晰的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Reproducible example

标签: tensorflow lambda functional-programming layer


【解决方案1】:

如果您想将自定义操作包装为如下所示的图层,则可以使用第一种方式

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 层,例如:一个用于乘法,另一个用于添加来自第二个魔术函数的随机盐。
猜你喜欢
  • 2021-02-22
  • 2018-12-30
  • 1970-01-01
  • 2023-03-09
  • 2019-06-11
  • 2019-11-03
  • 2017-05-17
  • 1970-01-01
  • 2019-01-16
相关资源
最近更新 更多