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 без назначения его в качестве глобального параметра?

2 ответа

Решение

Нашел решение проблемы в этом запросе GitHub Pull. С помощью

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)
Другие вопросы по тегам