Reputation: 23
I am new to tensorflow and I was trying to follow the official documentation where I came across tf.feature_column.categorical_column_with_vocabulary_list
The code I tested is:
key='colors', vocabulary_list=('X', 'R', 'G', 'B', 'Y'), default_value=0)
columns = [[tfc.embedding_column(colors, 3)], ...]
features = tf.io.parse_example(..., features=tfc.make_parse_example_spec(columns))
dense_tensor = tfc.input_layer(features, columns)
However , when I run this sample code I get the following error : ValueError: All feature_columns must be _FeatureColumn instances. Given: [EmbeddingColumn(categorical_column=VocabularyListCategoricalColumn(key='colors', vocabulary_list=('X', 'R', 'G', 'B', 'Y'), dtype=tf.string, default_value=0, num_oov_buckets=0), dimension=3, combiner='mean', initializer=, ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True)]
What I am doing wrong?
Upvotes: 1
Views: 298
Reputation:
make_parse_example_spec
expects FeatureColumn instances
. You can create the FeatureColumn instance using the below method for the category list.
colors = feature_column.categorical_column_with_vocabulary_list(key='colors',vocabulary_lis=('R', 'G', 'B', 'Y'),num_oov_buckets=2)
my_feature_columns = [feature_column.indicator_column(colors)]
feature_column.make_parse_example_spec(my_feature_columns)
Output :
{'colors': VarLenFeature(dtype=tf.string)}
If you want to create a dense embedding tensor on your categorical column, you can follow the below example.
data = {'colors': ['X', 'R', 'G', 'B', 'Y']}
df = pd.DataFrame(data)
colors = feature_column.categorical_column_with_vocabulary_list('colors', df['colors'].unique())
colors_embedding = feature_column.embedding_column(colors, dimension=4)
dense_tensor = tf.keras.layers.DenseFeatures(colors_embedding)(data)
Result:
tf.Tensor(
[[ 0.17071894 0.29407692 -0.26661882 0.07768019]
[ 0.26196313 0.14372464 -0.41102907 -0.7207164 ]
[-0.7888006 -0.07049363 -0.49007863 0.45744416]
[ 0.56329435 -0.7051675 0.04742934 -0.69377 ]
[-0.52031726 0.488502 -0.37031132 -0.44338205]], shape=(5, 4), dtype=float32)
Upvotes: 1