Tensorflow:替代DenseFeatures输入层,可移植到tfjs

时间:2019-04-14 16:54:54

标签: javascript python tensorflow keras

我有一个回归网络,该网络吸收一组特征的二进制输入向量,并产生线性输出。但是,我在输入层上使用了DenseFeatures功能,如下所示

feature_columns = []
for header in ['FEATURE1', 'FEATURE2', 'FEATURE3', 'FEATURE4', 'FEATURE5']:
    feature_columns.append(feature_column.numeric_column(header))


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

完整模型为

model = keras.Sequential([
    feature_layer,
    layers.Dense(64, activation=tf.nn.relu),
    layers.Dense(1), activation='relu'
  ])

但是,当我从python环境(运行Tensorflow的2.0 alpha版本)导出此模型并尝试通过以下方式将其导入到我的node.js应用中时:

import * as tf from '@tensorflow/tfjs';
tf.loadLayersModel('/PATH_TO_FILE/model.json');

我收到以下错误:

Unknown layer: DenseFeatures

我认为这是由于DenseFeatures功能尚未移植到Tensorflow的javascript版本引起的?

如此,什么仍然是输入层的合适替代品,而仍然可以获得相同的功能?数据由5个二元特征(正在研究的工件具有或没有该特征)组成,并且输出是一个数字,例如工件的价格。这样,一个合适的数据点就可以了。

(1,0,1,0,0),(100)

谢谢:)

1 个答案:

答案 0 :(得分:1)

您可以使用tf.loadGraphModel代替tf.loadLayersModel。这样,您可以在tfjs内使用DenseFeatures。

使用转换器创建图形模型:

model.save(temp_path, overwrite=True)
tfjs.converters.convert_tf_saved_model(temp_path, out_path)

Here是对DenseFeaturesloadLayersModel的问题跟踪支持。