кодирование one_hot для пакетов будет неполным тензорным потоком - PullRequest
0 голосов
/ 28 апреля 2018

Как вы знаете, tf.one_hot может выполнить одно горячее кодирование. Тем не менее, когда мой набор данных очень большой, мне нужно провести пакетное обучение. Таким образом, когда я использую цикл for для цикла по всем пакетам, на каждой итерации, когда я делаю tf.one_hot, размерность одной горячей матрицы будет меньше, чем я ожидал.

Например, для столбца «а» у нас 47 категорий, но в одном пакете их может быть показано только 20, и когда я сделаю one_hot для этого пакета, он создаст матрицу с размером строк * 20 вместо размерность строк * 47.

Как получить размерность строк * 47 по одной горячей матрице в каждой партии?

Спасибо!

1 Ответ

0 голосов
/ 28 апреля 2018

tf.one_hot() принимает аргумент, depth, в качестве его секунды, который определяет, как долго должен быть вектор с одной горячей точкой. Если вы запустите свою операцию так:

b = tf.one_hot( a, 47 )

это должно дать вам последнее измерение 47.

Трудно сказать без кода, но некоторые люди не кодируют размер one_hot жестко, а пытаются получить его из тензора метки, например,

max_class = tf.reduce_max( a )
b = tf.one_hot( a, max_class )

Если это так в вашем коде, то, возможно, партия пошла только до класса 20.

В противном случае необходимо увидеть ваш код, чтобы что-то сказать.

Если TensorFlow не хватает памяти, он остановится с ошибкой, а не просто тихо откусит половину ваших данных. :)

...