我正在通过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()
答案 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.