大步打印张量

时间:2019-05-13 08:52:25

标签: tensorflow one-hot-encoding

我正在通过librosa加载的音频文件创建一个one_hot编码的张量。张量很大,我不想全部打印。

事实上,这就是它向我显示的内容,然后在尝试打印时从不打印:(或者可能会打印,但我不想等待)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()

1 个答案:

答案 0 :(得分:1)

tensorflow中的张量支持类似于numpy的花式索引。您可以遍历张量的某个维度。

考虑以下形状(10000,10)的张量(t)。现在,您可以一次遍历第一个维度一个索引,并获得形状为(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, )

您还可以通过指定坐标([row,col])值来访问张量内的值(单元)位置。

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.