我有一个回归网络,该网络接受一组特征的二进制输入向量,并产生线性输出。但是,我已经为输入层使用了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)

谢谢 :)

最佳答案

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

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

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


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

08-20 04:04