Как добавить случайный шум к меткам с помощью DNNLinearCombinedClassifier для tf1.15? - PullRequest
2 голосов
/ 20 июня 2020

В настоящее время я работаю с широким и глубоким классификатором в tf1.15 (DNNLinearCombinedClassifier) ​​и определил следующую функцию для добавления случайного шума к меткам:

def add_random_noise(labels):
    labels = tf.dtypes.cast(labels, tf.float32)
    rnd_noise = tf.random.uniform(tf.shape(labels))
    return tf.add(labels, tf.math.multiply_no_nan(0.05, rnd_noise))

Затем эта функция применяется к набор данных с использованием map и применяется только к целевому столбцу. Однако, когда я обучаю свою модель, она генерирует следующий результат:

(0) Invalid argument: assertion failed: [Labels must <= n_classes - 1] [Condition x <= y did not hold element-wise:] [x (head/labels:0) = ] [[0.00486446638][0.0133116841][0.0143840136]...] [y (head/assert_range/Const:0) = ] [1]

Насколько я понимаю, DNNLinearCombinedClassifier вычисляет количество уникальных значений в target и генерирует ошибку из-за разницы между n_classes и количество уникальных значений. Я просмотрел документацию DNNLinearCombinedEstimator, но он использует MSE как потерю, и я определенно хотел бы обучить свою модель, используя кросс-энтропию, как это сделано в DNNLinearCombinedClassifier. Я хотел бы спросить вас, есть ли способ использовать широкий и глубокий классификатор с этим возмущенным столбцом меток и перекрестной энтропией в качестве моей функции потерь при обучении.

...