fluid 接口如何高效实现 wide & deep 中的 wide model
Created by: lzha106
fluid 接口如何高效实现 wide & deep 中的 wide model?
根据现有的 fluid 接口实现如下的 wide model:
def wide_layer(input):
return fluid.layers.fc(input=input, size=1, act="relu")
def one_hot_layer(input):
return fluid.layers.one_hot(input=input, depth=sparse_feature_dim)
context_feature = [fluid.layers.data(name="context" + str(i), shape=[1], lod_level=1, dtype="int64") for i in range(0, NUM_CONTEXT_FEATURE)]
sparse_one_hot = list(map(one_hot_layer, context_feature))
wide_merged_features = fluid.layers.concat(sparse_one_hot, axis=1)
wide = wide_layer(wide_merged_features)
但是训练效率很低, onehot 后的特征维度很大,concat 操作需要花费 0.3 s 的时间
op_name:[24][one_hot], op_mean_time:[0.007394s]
op_name:[25][one_hot], op_mean_time:[0.007340s]
op_name:[26][concat], op_mean_time:[0.300164s]
op_name:[27][mul], op_mean_time:[0.127946s]
因为 context feature onehot 之后是维度很大的 sparse vector, 请问 fluid API 是否支持 Sparse Vector concat 操作及 fc 的输入?或者如何基于 fluid 接口实现 wide model?