0

Ich versuche, Tensorflow-Operationen innerhalb eines Keras-Modells und ich bin ziemlich verwirrt über den Mechanismus und was Lambda-Schichten tun Tensoren.Wie tf Operationen in Keras Modelle zu verwenden

So funktioniert das:

a = keras.layers.Input(shape=[1, 2], dtype='float', name='a') 
s= keras.layers.Lambda(lambda x: tf.transpose(tf.transpose(x)))(a) 
model = keras.models.Model(inputs=a, outputs=s) 

aber das funktioniert nicht:

a = keras.layers.Input(shape=[1, 2], dtype='float', name='a') 
s = tf.transpose(tf.transpose(a)) 
s = keras.layers.Lambda(lambda x: x)(s) 
model = keras.models.Model(inputs=a, outputs=s) 

und es sagt:

AttributeError: 'Tensor' object has no attribute '_keras_history' 

so ist es immer notwendig, tf-Operationen zu packen innerhalb eine Schicht?

Frage 2 (war, warum ich die vorherige heraufkam): müssen wir mit einer kundenspezifischen Schicht verpacken, um Matrixmultiplikation in keras zu tun?

danke.

Antwort

1

Frage 1: Ja, es ist notwendig, tf Operationen mit einer Schicht zu umhüllen, da keras Modelle bestimmte Funktionen/Variablen benötigen, die nicht in Tensorflow Ops enthalten sind. In diesem Fall ist _keras_history eine Eigenschaft, die nur erzeugt wird, indem der Op mit einer Ebene umschlossen wird.

Frage 2: Ist die Matrixmultiplikation traHave, die Sie in Betracht gezogen haben, eine Keras Dense Schicht mit use_bias=False? Wenn Sie eine Konstante für den Gewichtsvektor verwenden möchten, können Sie kernel_initializer={constant} und trainable=False festlegen.

Verwandte Themen