Я новичок в науке о данных. Я пытаюсь построить модель с двумя строковыми входами. Я использовал тензор потока для встраивания и объединения входных данных. Я запускаю этот код в 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:
Что не так с моим кодом?