Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Keras functional API and TensorFlow Hub

I'm trying to use a Universal Sentence Encoder from TF Hub as a keras layer in a functional way. I would like to use hub.KerasLayer with Keras Functional API, but i'm not sure how to achieve that, so far I've only seen exmaples of hub.KerasLayer with the Sequential API

import tensorflow_hub as hub
import tensorflow as tf
from tensorflow.keras import layers
import tf_sentencepiece


use_url = 'https://tfhub.dev/google/universal-sentence-encoder-multilingual-large/1'

english_sentences = ["dog", "Puppies are nice.", "I enjoy taking long walks along the beach with my dog."]
english_sentences = np.array(english_sentences, dtype=object)[:, np.newaxis]


seq = layers.Input(shape=(None, ), name='sentence', dtype=tf.string)
module = hub.KerasLayer(hub.Module(use_url))(seq)
model = tf.keras.models.Model(inputs=[seq], outputs=[module])
model.summary()

x = model.predict(english_sentences)
print(x)

the code above runs into this error when passing the input layer to the embedding: TypeError: Can't convert 'inputs': Shape TensorShape([Dimension(None), Dimension(None)]) is incompatible with TensorShape([Dimension(None)])

Is it possible to use hub.KerasLayer with keras functional API in TensorFlow 1.x? if it can be done, how?

like image 545
Sebastian Yonekura Baeza Avatar asked Sep 25 '19 15:09

Sebastian Yonekura Baeza


People also ask

What is Keras functional API?

The Keras functional API is a way to create models that are more flexible than the tf. keras. Sequential API. The functional API can handle models with non-linear topology, shared layers, and even multiple inputs or outputs.

What is the difference between sequential and functional API in Keras?

The functional API offers more flexibility and control over the layers than the sequential API. It can be used to predict multiple outputs(i.e output layers) with multiple inputs(i.e input layers))

What is TensorFlow hub?

TensorFlow Hub is an open repository and library for reusable machine learning. The tfhub. dev repository provides many pre-trained models: text embeddings, image classification models, TF. js/TFLite models and much more. The repository is open to community contributors.

Can Keras be used with TensorFlow?

Keras is an effective high-level neural network Application Programming Interface (API) written in Python. This open-source neural network library is designed to provide fast experimentation with deep neural networks, and it can run on top of CNTK, TensorFlow, and Theano.


1 Answers

Try This

sentence_encoding_layer = hub.KerasLayer("https://tfhub.dev/google/universal-sentence-encoder/4",
                                         trainable=False,
                                         input_shape = [],
                                         dtype = tf.string,
                                         name = 'U.S.E')

inputs = tf.keras.layers.Input(shape = (), dtype = 'string',name = 'input_layer')

x = sentence_encoding_layer(inputs)
x = tf.keras.layers.Dense(64,activation = 'relu')(x)

outputs = tf.keras.layers.Dense(1,activation = 'sigmoid',name = 'output_layer')(x)

model = tf.keras.Model(inputs,outputs,name = 'Transfer_learning_USE')
model.summary()

model.predict([sentence])

like image 194
Sunil Sharma Avatar answered Sep 28 '22 02:09

Sunil Sharma