tf.keras.layers的用法,

tyg4sfes  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(130)

这是官方的文件。

A layer that produces a dense Tensor based on given feature_columns.

Inherits From: DenseFeatures

tf.keras.layers.DenseFeatures(
    feature_columns, trainable=True, name=None, **kwargs
)

这在TF例子中使用,通常放在keras中。顺序(...)模型构造。如下所示:

model = tf.keras.Sequential([
  feature_layer,
  layers.Dense(128, activation='relu'),
  layers.Dense(128, activation='relu'),
  layers.Dropout(.1),
  layers.Dense(1)
])

在我的例子中,我想用它来将我的字典数据类型转换为Tensor格式,并将其传递给model。所以我使用了如下代码:

feature_columns = []
bins = [-125, -75, -50, -25, 0, 25, 50, 75, 125]
temp_num = feature_column.numeric_column('temp')
temp_buckets = feature_column.bucketized_column(temp_num, boundaries=bins)
feature_columns.append(temp_buckets)
feature_layer = layers.DenseFeatures(feature_columns) 
input = feature_layer(dict(dataframe))

输入是我将输入模型的训练数据。问题是我对这个DenseFeatures()层的使用是否合理。或者此feature_layer必须在keras.Model类中?

ltskdhd1

ltskdhd11#

是的,你的想法是合理的。实际上,在指定深度学习架构时,您可以自由选择Keras函数式APIKeras顺序式API
为了完成你的工作,我会删除最后一行,并做一些额外的调整。以下是使用Keras函数API完成您留下的工作的代码片段:

feature_columns = []
bins = [-125, -75, -50, -25, 0, 25, 50, 75, 125]
temp_num = feature_column.numeric_column('temp')
temp_buckets = feature_column.bucketized_column(temp_num, boundaries=bins)
feature_columns.append(temp_buckets)
feature_layer = tf.keras.layers.DenseFeatures(feature_columns)

# create a dictionary to associate column names with column values
inputs = {}
inputs["temp_num"] = tf.keras.Input(shape=(1,), name="temp_num") 

# convert FeatureColumns into a single tensor layer
x = feature_layer(inputs)

x = tf.keras.layers.Dense(128, activation='relu')(x)
x = tf.keras.layers.Dense(128, activation='relu')(x)
x = tf.keras.layers.Dropout(.1)(x)
out = tf.keras.layers.Dense(1)(x)

model = tf.keras.Model(inputs=dict(inputs), outputs=out)
wgeznvg7

wgeznvg72#

使用tf.keras.models.Sequential()配置,而不是使用tf.keras.layers.DenseFeatures(feature_columns)的Input-Output配置,可以得到相同的结果。唯一的区别是,当您希望使用model.summary()查看模型时,预处理层不会单独显示。

相关问题