如何将两个输入放入张量流 lambda 层

이홍재*_*이홍재 1 python lambda concatenation keras tensorflow

如何将两个输入放入张量流 lambda 层?我努力了:

channel_input=Input(shape=(4,),dtype='complex64',name='channel_input')

...
realed_ffted_channel1 = Dense(2*N_c,activation='relu')(realed_ffted_channel)
precoded_data = Lambda(lambda x,y: tf.concat([x,y],1))([encoding_x,realed_ffted_channel1])
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-29-9332eac3e7cf> in <module>()
     10 
     11 #Precoding Encoder
---> 12 precoded_data = Lambda(lambda x,y: tf.concat([x,y],1))([encoding_x,realed_ffted_channel1])
     13 encoder_data = Dense(3*N_c,activation='relu')(precoded_data)
     14 encoder_data1 = Dense(N_c,activation='relu')(encoder_data)

1 frames
/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/layers/core.py in call(self, inputs, mask, training)
    820       arguments['training'] = training
    821     with variable_scope.variable_creator_scope(self._variable_creator):
--> 822       return self.function(inputs, **arguments)
    823 
    824   def _variable_creator(self, next_creator, **kwargs):

TypeError: <lambda>() missing 1 required positional argument: 'y'
Run Code Online (Sandbox Code Playgroud)

意味着第二个输入y未通过。

Mat*_*gro 5

你可以这样做:

precoded_data = Lambda(lambda x: tf.concat([x[0], x[1]],1))([encoding_x,realed_ffted_channel1])
Run Code Online (Sandbox Code Playgroud)

请注意,对于这个特定的用例,您也可以使用该Concatenate层。