I have the following code to average embeddings for list of item-ids. (Embedding is trained on review_meta_id_input, and used as look up for pirors_input and for getting average embedding)

 review_meta_id_input = tf.keras.layers.Input(shape=(1,), dtype='int32', name='review_meta_id')
 priors_input = tf.keras.layers.Input(shape=(None,), dtype='int32', name='priors') # array of ids
 item_embedding_layer = tf.keras.layers.Embedding(
     input_dim=100,      # max number

 review_meta_id_embedding = item_embedding_layer(review_meta_id_input)
 selected = tf.nn.embedding_lookup(review_meta_id_embedding, priors_input)
 non_zero_count =  tf.cast(tf.math.count_nonzero(priors_input, axis=1), tf.float32)
 embedding_sum = tf.reduce_sum(selected, axis=1)
 item_average = tf.math.divide(embedding_sum, non_zero_count)

I also have some feature columns such as.. (I just thought feature_column looked cool, but not many documents to look for..)

  kid_youngest_month = feature_column.numeric_column("kid_youngest_month")
     kid_age_youngest_buckets = feature_column.bucketized_column(kid_youngest_month, boundaries=[12, 24, 36, 72, 96])

I'd like to define [review_meta_id_iput, priors_input, (tensors from feature_columns)] as an input to keras Model.

something like:

 inputs = [review_meta_id_input, priors_input] + feature_layer
 model = tf.keras.models.Model(inputs=inputs, outputs=o)

In order to get tensors from feature columns, the closest lead I have now is

fc_to_tensor = {fc: input_layer(features, [fc]) for fc in feature_columns}

from https://github.com/tensorflow/tensorflow/issues/17170

However I'm not sure what the features are in the code.
There's no clear example on https://www.tensorflow.org/api_docs/python/tf/feature_column/input_layer either.

How should I construct the features variable for fc_to_tensor ?

Or is there a way to use keras.layers.Input and feature_column at the same time?

Or is there an alternative than tf.feature_column to do the bucketing as above? then I'll just drop the feature_column for now;


1 Answer 1


I think my answer over there https://stackoverflow.com/questions/56693937/tensorflow-how-to-convert-feature-column-to-vector might help you.

Look at

feature_layer = tf.keras.layers.DenseFeatures(feature_columns)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.