我目前遇到一个问题,我无法从TensorFlow中的线性模型获取要素的权重。我知道当功能列仅由numeric_column
或categorical_columns_with_vocabulary_list
组成时怎么做,除非另外添加了bucketized_column
或crossed_column
,尤其是由于哈希箱< / strong>在crossed_column
中引入。
问题看起来像这样:
import tensorflow as tf
import tensorflow.feature_column as fc
x1 = [1,2,3,4,5,6,7,8]
x2 = [10,20,30,40,50]
x1_fc = fc.bucketized_column('x1', bins=[3,6])
x2_fc = fc.bucketized_column('x2', bins=[20,40])
x1_x_x2_fc = fc.indicator_column(fc.crossed_column([x1_fc, x2_fc], 7))
feature_columns = [x1_fc, x2_fc, x1_x_x2_fc]
# constuct the linear model
model = tf.estimator.LinearClassifier(feature_columns)
问题是,当训练模型并准备进行推理时,是否有任何方法可以通过查看模型中各个要素(桶状要素和交叉要素)的各个权重来检查预测?我的意思是可以毫无问题地提取权重的值,但是我很难解释与原始输入相关的那些值。
此外,根据我的经验,当我仅在模型中使用numeric_column
时,我确实注意到要素在权重层中按字母顺序排列,这对我来说有点奇怪。
This answer看起来不是很自然,当功能数量增加或哈希箱变大时,可能很难实现。