Tensorflow是否支持运行时确定Tensor的形状?
问题是在运行时基于输入向量 length_q
构建常量张量 . 目标张量的列数是 sum of length_q . 代码片段如下所示, length_q
的长度固定为64 .
T = tf.reduce_sum(length_q, 0)[0]
N = np.shape(length_q)[0]
wm = np.zeros((N, T), dtype=np.float32)
# Something inreletive.
count = 0
for i in xrange(N):
ones = np.ones(length_q[i])
wm[i][count:count+length_q[i]] = ones
count += length_q[i]
return tf.Constant(wm)
Update
我想根据输入 length_q
创建一个动态Tensor . length_q
是一些输入向量(64 * 1) . 我想要创建的新张量的形状取决于 length_q
的总和,因为在每个批次中 length_q
中的数据都会发生变化 . 当前的代码段如下:
def some_matrix(length_q):
T = tf.reduce_sum(length_q, 0)[0]
N = np.shape(length_q)[0]
wm = np.zeros((N, T), dtype=np.float32)
count = 0
return wm
def network_inference(length_q):
wm = tf.constant(some_matrix(length_q));
...
并且问题可能是因为 length_q
是占位符并且没有求和操作 . 有没有办法解决这个问题?
2 回答
听起来像tf.fill() op是你需要的 . 此操作允许您将形状指定为
tf.Tensor
(即运行时值)以及值:不清楚你在计算什么 . 如果你需要计算N形状,你可以生成这样的形状