hub.KerasLayer вызывает AssertionError в функциональном API - PullRequest
0 голосов
/ 15 апреля 2020

Я новичок в науке о данных. Я пытаюсь построить модель с двумя строковыми входами. Я использовал тензор потока для встраивания и объединения входных данных. Я запускаю этот код в Colab с Tenorsflow версии «2.2.0-RC2». Это моя модель:

from tensorflow.keras.layers import Dense, Dropout , Input , concatenate
DROPOUT = 0.1 
import tensorflow as tf
import tensorflow_hub as hub
module_url =  "https://tfhub.dev/google/universal-sentence-encoder/4"
q1 = Input(shape=(1,), dtype=tf.string)
embedding_q1 = hub.KerasLayer(module_url, output_shape=[512], input_shape=[],
                              dtype=tf.string, trainable=False)(q1)

q2 = Input(shape=(1,), dtype=tf.string)
embedding_q2 = hub.KerasLayer(module_url, output_shape=[512], input_shape=[], 
                              dtype=tf.string, trainable=False)(q2)

merged = concatenate([embedding_q1, embedding_q2])
merged = Dense(64, activation='relu')(merged)
merged = Dropout(DROPOUT)(merged)
pred = Dense(4, activation='sigmoid')(merged)

model = Model(inputs=[q1 , q2], outputs=pred)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()

Это вызывает AssertionError. Это текст ошибки:

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-8-6c1b038fac8f> in <module>()
      6 q1 = Input(shape=(1,), dtype=tf.string)
      7 embedding_q1 = hub.KerasLayer(module_url, output_shape=[512], input_shape=[],
----> 8                               dtype=tf.string, trainable=False)(q1)
      9 
     10 q2 = Input(shape=(1,), dtype=tf.string)

1 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/autograph/impl/api.py in wrapper(*args, **kwargs)
    263       except Exception as e:  # pylint:disable=broad-except
    264         if hasattr(e, 'ag_error_metadata'):
--> 265           raise e.ag_error_metadata.to_exception(e)
    266         else:
    267           raise

AssertionError: in user code:

    /usr/local/lib/python3.6/dist-packages/tensorflow_hub/keras_layer.py:222 call  *
        result = f()
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/saved_model/load.py:486 _call_attribute  **
        return instance.__call__(*args, **kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py:580 __call__
        result = self._call(*args, **kwds)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py:650 _call
        return self._concrete_stateful_fn._filtered_call(canon_args, canon_kwds)  # pylint: disable=protected-access
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py:1665 _filtered_call
        self.captured_inputs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py:1759 _call_flat
        "StatefulPartitionedCall": self._get_gradient_function()}):
    /usr/lib/python3.6/contextlib.py:81 __enter__
        return next(self.gen)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py:4735 _override_gradient_function
        assert not self._gradient_function_map

    AssertionError: 

Что не так с моим кодом?

...