tf.estimator.inputs.pandas_input_fn тензор метки - PullRequest
0 голосов
/ 28 июня 2018

Пробовал встроенный в Tensorflow pandas_input_fn() с фреймом данных панд, который я назвал training_examples

Это очень простой фрейм данных, описывающий один набор функций и меток; затем это передается в качестве аргумента x в функции pandas_input_fn(), как показано ниже, которая, если я правильно понимаю документы, должна возвращать функцию ввода с данными, уже разбитыми на объекты и метки?

input_function = tf.estimator.inputs.pandas_input_fn(
x= training_examples,
y= None,
batch_size=128,
num_epochs=1,
shuffle=True,
queue_capacity=1000,
num_threads=1,
target_column='y'
)

Однако, когда я пытаюсь передать эту функцию методу .train(), я получаю сообщение об ошибке, как показано ниже:

ValueError: You must provide a labels Tensor. Given: None. Suggested 
troubleshooting steps: Check that your data contain your label feature. Check 
that your input_fn properly parses and returns labels.

Не уверен, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

train_input_function содержит собственный набор функций и меток. Вы находитесь на правильном пути в ваших комментариях.

x = training_examples[[feature_column_list]]
y = training_examples[label_column_name]

Работая с полным набором данных (до разделения на тренировку и тестирование), я нахожу, что он эффективно работает для создания функций обучения и тестирования входных данных, как это происходит. Это использует функцию train_test_split sklearn с 'stratify', чтобы убедиться, что правильное соотношение наблюдений имеет каждую категорию в метке.

sklearn.model_selection import train_test_split

train_x, test_x, train_y, test_y = train_test_split(x, y, stratify=y)

На данный момент вы можете указать свои функции ввода.

train_input_fn = tf.estimator.inputs.pandas_input_fn(x=train_x, y=train_y, shuffle=True, num_epochs=whatever, batch_size=whatever)

test_input_fn = tf.estimator.inputs.pandas_input_fn(x=test_x, y=test_y, shuffle=False, batch_size=1)
0 голосов
/ 18 июля 2018

try target_column = None и использовать фактический столбец Y в Y = training_examples ['label / target']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...