我对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
。预先感谢!
答案 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 Columns
和Feature Layer
。
希望这会有所帮助。学习愉快!