Tensorflow的feature_columns API对于非数值特征处理非常有用。但是,当前的API文档更多是关于在tensorflow Estimator中使用feature_columns。有没有可能使用feature_columns进行分类要素表示,然后基于tf.keras构建模型?
我找到的唯一参考是以下教程。它显示了如何将特征列提供给Keras顺序模型:链接
代码片段如下:
from tensorflow.python.feature_column import feature_column_v2 as fc
feature_columns = [fc.embedding_column(ccv, dimension=3), ...]
feature_layer = fc.FeatureLayer(feature_columns)
model = tf.keras.Sequential([
feature_layer,
tf.keras.layers.Dense(128, activation=tf.nn.relu),
tf.keras.layers.Dense(64, activation=tf.nn.relu),
tf.keras.layers.Dense(1, activation=tf.nn.sigmoid)
])
...
model.fit(dataset, steps_per_epoch=8) # dataset is created from tensorflow Dataset API
Run Code Online (Sandbox Code Playgroud)
问题是如何在keras功能模型API中使用自定义模型。我尝试了以下操作,但不起作用(tensorflow版本1.12)
feature_layer = fc.FeatureLayer(feature_columns)
dense_features = feature_layer(features) # features is a dict of ndarrays in dataset
layer1 = tf.keras.layers.Dense(128, activation=tf.nn.relu)(dense_features)
layer2 = tf.keras.layers.Dense(64, activation=tf.nn.relu)(layer1)
output = tf.keras.layers.Dense(1, activation=tf.nn.sigmoid)(layer2)
model = Model(inputs=dense_features, outputs=output)
Run Code Online (Sandbox Code Playgroud)
错误日志:
ValueError: Input tensors …
Run Code Online (Sandbox Code Playgroud)