Я работаю над созданием взвешенной модели Keras в TFX, чтобы уменьшить вес одной функции в моей модели, которая создает проблемы справедливости. Если я не ошибаюсь, я думаю, что использование sample_weights - это то, что я ищу, основываясь на этой документации введите описание ссылки здесь ?
def _keras_model_builder():
"""Build a keras model for COMPAS dataset classification."""
feature_columns = []
feature_layer_inputs = {}
for key in transformed_names(INT_FEATURE_KEYS):
feature_columns.append(tf.feature_column.numeric_column(key))
feature_layer_inputs[key] = tf.keras.Input(shape=(1,), name=key)
for key, num_buckets in zip(transformed_names(CATEGORICAL_FEATURE_KEYS),
MAX_CATEGORICAL_FEATURE_VALUES):
categorical_column = tf.feature_column.categorical_column_with_identity(
key, num_buckets=num_buckets)
feature_columns.append(
tf.feature_column.indicator_column(categorical_column))
feature_layer_inputs[key] = tf.keras.Input(
shape=(1,), name=key, dtype=tf.dtypes.int32)
feature_columns_input = tf.keras.layers.DenseFeatures(feature_columns)
feature_layer_outputs = feature_columns_input(feature_layer_inputs)
dense_layers = tf.keras.layers.Dense(
20, activation=tf.nn.relu, name='dense_1')(feature_layer_outputs)
dense_layers = tf.keras.layers.Dense(
10, activation=tf.nn.relu, name='dense_2')(dense_layers)
dense_layers = tf.keras.layers.Dense(
5, activation=tf.nn.relu, name='dense_3')(dense_layers)
dense_layers = tf.keras.layers.BatchNormalization()(dense_layers)
output = tf.keras.layers.Dense(
1, name='predictions')(dense_layers)
inputs = [v for v in feature_layer_inputs.values()]
sample_weights = tf.keras.layers.Input(
shape=[1], dtype=tf.float32, name='race_xf')
model = tf.keras.Model(inputs=inputs,
sample_weights=sample_weights,
outputs=output)
model.compile(
loss=tf.keras.losses.MeanAbsoluteError(),
optimizer=tf.optimizers.Adamax(learning_rate=_LEARNING_RATE))
return model
Однако этот код вызывает ошибку ниже :
TypeError: ('Functional models may only specify `name` and `trainable` keyword arguments during initialization. Got an unexpected argument:', 'sample_weights')
Это вопрос из двух частей, но
- Правильно ли я думаю о понижении веса? Большинство документов, которые я видел, используют параметр weight_column в tf.estimator, который отличается от Keras. Например, .
- Если это правильный способ думать об этом, как я могу правильно передать параметр sample_weights?
Большое спасибо заранее!