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