Keras:具有多个参数的 Lambda 层函数
Keras: Lambda layer function with multiple parameters
我正在尝试在 Keras 中编写一个 Lambda
层,它调用一个函数 connection
,运行一个循环 for i in range(0,k)
,其中 k
作为输入输入函数 connection(x,k)
。现在,当我尝试调用 Functional API 中的函数时,我尝试使用:
k = 5
y = Lambda(connection)(x)
此外,
y = Lambda(connection)(x,k)
但是这些方法都没有奏效。如何在不将其分配为全局参数的情况下输入 k
的值?
在this GitHub Pull Request中找到问题的解决方案。使用
y = Lambda(connection, arguments={'k':k})(x)
成功了!
只需使用
y = Lambda(connection)((x,k))
然后连接方法中的var[0]、var[1]
Tmodel = Sequential()
x = layers.Input(shape=[1,]) # Lambda on single input
out1 = layers.Lambda(lambda x: x ** 2)(x)
y = layers.Input(shape=[1,]) # Lambda on multiple inputs
z = layers.Input(shape=[1,])
def conn(IP):
return IP[0]+IP[1]
out2 = layers.Lambda(conn)([y,z])
Tmodel = tf.keras.Model(inputs=[x,y,z], outputs=[out1,out2],name='Tmodel') # Define Model
Tmodel.summary()
# output
O1,O2 = Tmodel([2,15,10])
print(O1) # tf.Tensor(4, shape=(), dtype=int32)
print(O2) # tf.Tensor(25, shape=(), dtype=int32)
我正在尝试在 Keras 中编写一个 Lambda
层,它调用一个函数 connection
,运行一个循环 for i in range(0,k)
,其中 k
作为输入输入函数 connection(x,k)
。现在,当我尝试调用 Functional API 中的函数时,我尝试使用:
k = 5
y = Lambda(connection)(x)
此外,
y = Lambda(connection)(x,k)
但是这些方法都没有奏效。如何在不将其分配为全局参数的情况下输入 k
的值?
在this GitHub Pull Request中找到问题的解决方案。使用
y = Lambda(connection, arguments={'k':k})(x)
成功了!
只需使用
y = Lambda(connection)((x,k))
然后连接方法中的var[0]、var[1]
Tmodel = Sequential()
x = layers.Input(shape=[1,]) # Lambda on single input
out1 = layers.Lambda(lambda x: x ** 2)(x)
y = layers.Input(shape=[1,]) # Lambda on multiple inputs
z = layers.Input(shape=[1,])
def conn(IP):
return IP[0]+IP[1]
out2 = layers.Lambda(conn)([y,z])
Tmodel = tf.keras.Model(inputs=[x,y,z], outputs=[out1,out2],name='Tmodel') # Define Model
Tmodel.summary()
# output
O1,O2 = Tmodel([2,15,10])
print(O1) # tf.Tensor(4, shape=(), dtype=int32)
print(O2) # tf.Tensor(25, shape=(), dtype=int32)