Как правильно работать с NaN в модели Tensorflow - PullRequest
0 голосов
/ 06 мая 2020

В настоящее время я обучаю модель Tensorflow, которая имеет различные значения и функции, заполненные NaN. Например:

feature = [np.Nan, 'foo', 'foo', np.Nan, 'bar', 'foo']

Tensorflow не работает со значениями NaN, поэтому я заменил их 0:

feature = [0 'foo', 'foo', 0, 'bar', 'foo']

Но, конечно, Tensorflow не работает со смешанными тензорами. Я действительно хочу, чтобы модель игнорировала эти входные данные при обучении модели нейронной сети.

Но поскольку я работаю с tf.feature_columns, у меня нет свободы вводить эти входные данные непосредственно в модель, потому что мне нужно явно указать, являются ли они строками или целыми числами при использовании методов tf.categorical и tf.numeric_column.

Есть предложения по работе с типами столбцов функций? Я бы предпочел по возможности придерживаться tf.feature_columns.

1 Ответ

0 голосов
/ 06 мая 2020

Susmit в основном отвечал на вопрос в комментариях для полноты: чтобы «игнорировать» значение, вы можете использовать данные в качестве словаря без NaN, и поиск "<UNK>" вернет -1.

na_mask = np.isna(feature)
vocab = np.unique(feature[~na_mask])
feature[na_mask] = "<UNK>"
...
tf.feature_column.categorical_column_with_vocabulary_list("feature", vocab)
...