确定Keras模型的输入形状

时间:2020-06-07 05:52:26

标签: python tensorflow machine-learning keras linear-regression

我对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。预先感谢!

1 个答案:

答案 0 :(得分:0)

是的,您对create table testbowman4(Prop_0 int, Prop_1 int, Prop_2 int) 的理解是正确的。

因此,可以从以下位置修改代码

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,)))

请参阅此Comprehensive Tensorflow Tutorial,以了解如何在model.add(tf.keras.layers.Dense(units=1)) 中使用Feature ColumnsFeature Layer

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