Печать тензора в шагах

Я создаю тензор кодировок one_hot из аудиофайла, загруженного через librosa. Тензор огромен, и я не хочу печатать его весь.

На самом деле это то, что он показывает мне, а затем никогда не печатает, когда я пытаюсь его распечатать: (или, может быть, он будет, но я не хочу ждать) W tensorflow/core/framework/allocator.cc:124] Allocation of 1387692032 exceeds 10% of system memory.

Как бы я печатал только определенные значения? Например, я хотел бы напечатать каждую 50-ю горячую кодировку в тензоре.

one_hot = _one_hot(load_audio()) # Tensor
sess = tf.InteractiveSession()

one_hot_prnt = tf.Print(one_hot, [one_hot], "One hot encoding:")
evaluator = tf.add(one_hot_prnt, one_hot_prnt)

evaluator.eval()
Udacity Nanodegree Capstone Project: Классификатор пород собак
Udacity Nanodegree Capstone Project: Классификатор пород собак
Вы можете ознакомиться со скриптами проекта и данными на github .
0
0
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Тензоры в tensorflow поддерживают причудливую индексацию, аналогичную numpy. Вы можете перебирать некоторое измерение тензора.

Рассмотрим следующий тензор (t) с формой (10000, 10). Теперь вы можете перебирать первое измерение по одному индексу за раз и получать массив с формой (10, ) например

t = tf.random.uniform(shape=(10000, 10)
print(t[0, :].eval(session=session)) # This prints first row of the tensor. The result is array with shape (10, )

Вы также можете получить доступ к отдельной (ячейке) позиции значения внутри тензора, указав значение координаты ([строка, столбец]).

t = tf.random.uniform(shape=(10000, 10)
print(t[0, 0].eval(session=session)) # This prints first element of first row. If the tensor has dimensions more than two, is this value would be a matrix or a tensor.

Другие вопросы по теме