Я пытаюсь добавить веса классов в качестве гиперпараметра для своей модели, но для расчета веса мне нужно прочитать входные данные, это происходит внутри input_fn, который затем передается в estimator.fit()
. Результатом input_fn
являются только функции, метки которых должны иметь одинаковую форму num_examples * num_features. Мои вопросы - есть ли способ передать данные из input_fn в карту гиперпараметров model_fn? Или в качестве альтернативы - может быть, есть оболочка для набора данных input_fn, которая позволяет передискретизировать меньшинство/недостаточно выборки большинства вместе с пакетной обработкой - в этом случае мне не понадобится какой-либо параметр для распространения.
API Tensorflow Estimator: как передать параметр из входной функции
Ответы (1)
И функции, и метки могут быть словарем тензоров (а не только одним тензором). Тензоры могут быть любой формы, которую вы хотите, хотя обычно это num_examples * ...
Если вы не используете какие-либо из предопределенных оценок, самым простым способом было бы добавить еще одну функцию с тем, что вам нужно для вычисления весов, вычислить веса в модели, а затем использовать их (умножить потерю или передать ее как параметр) .
У вас также есть доступ к гиперпараметрам внутри input_fn, поэтому вы можете вычислить там вес и добавить его в виде отдельного столбца.
Если вы используете стандартную оценку, проверьте документацию. Я вижу, что большинство из них поддерживают weight_column_name. В этом случае просто дайте ему имя, которое вы использовали в словаре функций для значений веса.
В качестве альтернативы, если ничего не помогает, вы можете сэмплировать данные так, как хотите, прежде чем передавать их в тензорный поток.
tf.estimator.Estimator
илиtf.contrib.learn.Estimator
. Я думаю, что между ними есть небольшие различия - person Ciprian Tomoiagă   schedule 23.01.2018