首页 > 解决方案 > 为什么 tf.random.truncated_normal 可以得到一个不是向量的形状,即使它说它只接收向量的形状?

问题描述

我正在使用 Python 中的 TensorFlow。

我通读了 tf.random.truncated_normal的文档 ,输入“形状”得到一维张量或 python 数组,即一个向量(根据https://www.tensorflow.org/guide/tensors)。

但是,在我使用的示例中,“形状”是一个 4-D 张量。或者它被认为是一个向量?也许我对向量和张量的定义有疑问?

def weight_variable(shape, name = 'noname'):
  initial = tf.truncated_normal(shape, stddev=0.1)
  return tf.Variable(initial, name = name)

W_conv1 = weight_variable([5, 5, 3, 32], 'W_conv1')

标签: python-3.xtensorflowtensor

解决方案


所以你在理解张量时犯了一个小错误。张量可以有不同的“等级”。诸如 1 的单个标量是 Rank 0 张量。诸如 [1,2,3,4] 之类的列表/向量是 Rank 1 张量。2-D 矩阵,例如 [[0,0],[0,0]] 是 Rank 2 张量,3D 矩阵是 Rank 3 张量,依此类推。因此,您在这里的输入是向量或 Rank 1 张量,而不是 4-D 张量。

这是一篇关于此的不错的博客文章。


推荐阅读