TensorFlow 初始化 Tensor of ones
TensorFlow initializing Tensor of ones
所以假设我有一个张量
X = tf.placeholder("float", [None, 5])
所以我知道列数但不知道行数。我需要初始化一个维度为 nrows x 1
的向量
现在下面的代码块不起作用,
o = tf.ones(shape=(tf.shape(X)[0], 1))
==> TypeError: List of Tensors when single Tensor expected
也不行,
o = tf.ones(shape=(X.get_shape()[0].value, 1))
==> TypeError: Input 'dims' of 'Fill' Op has type
string that does not match expected type of int32.
现在,我发现解决这个问题的一种方法是让我的向量成为占位符,
o = tf.placeholder(dtype=tf.float32, shape=[None, 1])
并在我的 feed_dict
中传入一个适当大小的 numpy 数组。但是这个解决方案让我觉得不够优雅,而不是占位符的预期用途。我在这里可能是错的,但肯定有更好的方法。
解决你的问题的方法是使用tf.pack操作:
o = tf.ones(shape=tf.pack([tf.shape(X)[0], 1]))
您出现错误的原因是 TensorFlow 形状应该是整数列表或张量 link。 tf.pack 可以轻松地将整数列表 and/or TensorFlow 标量转换为 Tensor 对象。
试试这个:
0 * tf.identity(X) + 1
所以假设我有一个张量
X = tf.placeholder("float", [None, 5])
所以我知道列数但不知道行数。我需要初始化一个维度为 nrows x 1
现在下面的代码块不起作用,
o = tf.ones(shape=(tf.shape(X)[0], 1))
==> TypeError: List of Tensors when single Tensor expected
也不行,
o = tf.ones(shape=(X.get_shape()[0].value, 1))
==> TypeError: Input 'dims' of 'Fill' Op has type
string that does not match expected type of int32.
现在,我发现解决这个问题的一种方法是让我的向量成为占位符,
o = tf.placeholder(dtype=tf.float32, shape=[None, 1])
并在我的 feed_dict
中传入一个适当大小的 numpy 数组。但是这个解决方案让我觉得不够优雅,而不是占位符的预期用途。我在这里可能是错的,但肯定有更好的方法。
解决你的问题的方法是使用tf.pack操作:
o = tf.ones(shape=tf.pack([tf.shape(X)[0], 1]))
您出现错误的原因是 TensorFlow 形状应该是整数列表或张量 link。 tf.pack 可以轻松地将整数列表 and/or TensorFlow 标量转换为 Tensor 对象。
试试这个:
0 * tf.identity(X) + 1