【问题标题】:Determine the input shape of a Keras model确定 Keras 模型的输入形状
【发布时间】:2020-09-26 04:45:53
【问题描述】:

我对 tf.keras.layers.InputLayer 和 Tensorflow 中的 feature_columns 和 input_shape 参数有疑问。

我正在关注一个示例,该示例具有以下代码来创建特征列:

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,我们是否还在model.add(tf.keras.layers.Dense() 中指定input_shape? input_shape不应该由feature_layer确定吗?它是如何工作的?由于每个示例的输出只有一个值,units=1 对我来说很有意义。但我很难理解input_shape。提前致谢!

【问题讨论】:

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


【解决方案1】:

是的,你对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 以了解如何在Keras Sequential Model 中使用Feature Columns 和Feature Layer。

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

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2018-06-10
    • 2019-01-26
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2018-05-13
    相关资源
    最近更新 更多