Функция кодирования k-hot Tensorflow Estimator - PullRequest
0 голосов
/ 24 августа 2018

Допустим, у меня есть следующий фрейм данных pandas:

   | col1 | col2  |     col3    |
---------------------------------
0  | 5    |  4    | [0,2,4]     |
1  | 3    |  8    | [7,3]       |
2  | 2    |  1    | [7,3,6,9]   |

in 'col3' У меня есть списки разных размеров, которые я также хочу импортировать в свой Tensorflow Estimator.Эти списки также должны быть закодированы k-hot, я не уверен, что люди так его называют:

[1,4,6] ---> [0, 1, 0, 0, 1, 0, 1]

Проблема возникает из-за того, что максимальное число в столбце col3 равно 600_000, поэтому мой кодированный вектор k-hot будетимеют размер 600_000, поэтому я не могу закодировать весь мой фрейм данных (из-за MemoryError) и передать col3 в Tensorflow как

tf.feature_column.numeric_column('col3', 600_000)

У вас есть какие-либо идеи, как я могу кормить этот столбец в моемDNNRegressor?Чтобы поделиться некоторым кодом, я обычно делаю это для «стандартных» столбцов:

# reading the columns from the pandas_input_fn
col1 = tf.feature_column.numeric_column('col1', default_value=0.0)
col2 = tf.feature_column.numeric_column('col2', default_value=0.0)

# converting them to categorical
col1_b = tf.feature_column.bucketized_column(col1, [0,5,10,20])
col1_2 = tf.feature_column.bucketized_column(col2, [0,4,8,16])

# make crosses
cross = tf.feature_column.crossed_colum([col1_b, col2_b], 4*4)

# define what will go in my estimator
features = [
   tf.feature_column.embedding_column(cross, 10)
   tf.feature_column.indicator_column(col1_b)
   tf.feature_column.indicator_cilumn(col2_b)
]

# and finally
estimator = tf.estimator.DNNRegressor(
              model_dir=model_dir, 
              feature_columns=features, 
              hidden_units=[512,256,256,128,32])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...