我对feature_columns
和Tensorflow中的input_shape
和tf.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
。预先感谢!
是,您对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 Layer
和Keras Sequential Model
。
希望这会有所帮助。祝您学习愉快!