确定Keras模型的输入形状

问题描述 投票:1回答:1

我对feature_columns和Tensorflow中的input_shapetf.keras.layers.InputLayer自变量有疑问。

我正在跟踪一个示例,该示例具有以下代码来创建要素列:

feature_columns = []
latitude = tf.feature_column.numeric_column("latitude")
feature_columns.append(latitude)
longitude = tf.feature_column.numeric_column("longitude")
feature_columns.append(longitude)
fp_feature_layer = layers.DenseFeatures(feature_columns)

下面是构建模型的代码:

def build_model(my_learning_rate, feature_layer)
    model = tf.keras.models.Sequential()
    model.add(feature_layer)
    model.add(tf.keras.layers.Dense(units=1, input_shape=(1,)))
    model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=my_learning_rate),
            loss="mean_squared_error",
            metrics=[tf.keras.metrics.RootMeanSquaredError()])

[当调用build_model函数时,我将传递学习率和要素层,即fp_feature_layer。我的问题是,由于feature_columns具有两个功能,即纬度和经度,因此input_shape不应为(2,)而不是(1,)。或者,更一般而言,由于代码已经指定了feature_layer,我们是否仍在input_shape中指定model.add(tf.keras.layers.Dense()input_shape是否不应该由feature_layer确定?它是如何运作的?由于每个示例的输出仅为一个值,因此units=1对我来说很有意义。但是我很难理解input_shape。预先感谢!

python tensorflow machine-learning keras linear-regression
1个回答
0
投票

是,您对feature layer will know the input shape, we don't need to specify the input shape again in the first hidden layer的理解是正确的。

因此,可以从中修改代码

model.add(tf.keras.layers.Dense(units=1, input_shape=(1,)))

model.add(tf.keras.layers.Dense(units=1))

请参阅此Comprehensive Tensorflow Tutorial以了解如何使用Feature Columns中的Feature LayerKeras Sequential Model

希望这会有所帮助。祝您学习愉快!

© www.soinside.com 2019 - 2024. All rights reserved.