использование tf.keras.layers.DenseFeatures - PullRequest
0 голосов
/ 04 августа 2020

Вот официальный do c.

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.Sequential (...). Как показано ниже:

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

В моем случае я хочу использовать его для переноса типа данных словаря в формат Tensor и передачи его в модель. Поэтому я использовал код, подобный приведенному ниже:

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?

1 Ответ

0 голосов
/ 06 августа 2020

Да, ваша идея разумна. И на самом деле вы можете выбрать функциональный API Keras или Keras Sequential API при указании вашей архитектуры глубокого обучения.

Чтобы завершить вашу работу, я бы удалил последний line и сделайте некоторые дополнительные настройки. Ниже приведен фрагмент кода для завершения оставленной вами работы с помощью функциональных API Keras:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...