[英]Determine the input shape of a Keras model
我对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)
下面是构建 model 的代码:
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
function 时,我将传入学习率和特征层,即fp_feature_layer
。 我的问题是,由于feature_columns
中有两个特征,即纬度和经度,所以input_shape
不应该是(2,)
而不是(1,)
。 或者更笼统地说,既然代码已经指定了feature_layer
,那我们还要在model.add(tf.keras.layers.Dense()
中指定input_shape
吗? input_shape
不应该由feature_layer
来决定吗?是这样吗?有效吗?由于 output 对于每个示例只有一个值,因此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))
请参阅此综合 Tensorflow 教程以了解如何在Keras Sequential Model
中使用Feature Columns
和Feature Layer
。
希望这可以帮助。 快乐学习!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.