Случайно отрицать входы и выходы в Керасе - PullRequest
0 голосов
/ 02 февраля 2020

Я строю двоичный классификатор с использованием модели tf.keras Sequential (), которая вводит массив вещественных значений и выводит значение в диапазоне от -1 до 1. Моя гипотеза состоит в том, что граница решения моей проблемы должна быть симметричной c при отрицании, то есть, что функция, которую нужно выучить, является нечетной.

К сожалению, из-за моего ограниченного набора данных классификатор учится смещать свои решения на основе количества элементов в обучающем наборе, которые классифицируются как + / - 1. Чтобы решить эту проблему, я хотел бы дополнить данные, исключив случайную выборку входных данных (вместе с соответствующими выходными данными) во время обучения.

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

Я думал о добавлении tf.keras .layers.Lambda слой к началу моей модели, чтобы случайно отрицать входные данные во время обучения, но есть проблема в том, что он не будет соответственно отменять желаемые результаты.

Моя другая мысль состояла в том, чтобы изменить код из tf.nn.dropout_v2 так, чтобы он действовал как выпадающий слой, но вместо обнуления случайного подмножества входов, чтобы отрицать это. К сожалению, это страдает от той же проблемы, что и раньше, поскольку значения y_true не будут затронуты.

Это такая простая задача, но я не уверен, как лучше ее выполнить sh. Любая помощь будет высоко ценится.

...