繁体   English   中英

尺寸不匹配时如何在张量流中压缩张量

[英]How do I zip tensors in tensorflow when the dimensions don't match

我有两个张量,其中一个形状为[None,20,2],而另一个形状为[None,1]。 我想对每个子张量进行锁步运算以产生一个值,使得最终得到形状为[None,1]的张量。

在python领域中,我将这两个压缩,然后遍历结果。

因此,为了清楚起见,我想编写一个函数,该函数采用[20,2]形状的张量和[1]形状的张量,并产生[1]形状的张量,然后将此函数应用于[None,20,2]和[None,1]张量,以产生[None,1]张量。

希望我能说得足够清楚。 更高的尺寸有时会使我的头旋转。

这对我有用(TensorFlow版本1.4.0)

tf.reset_default_graph()
sess = tf.Session()

# Define placeholders with undefined first dimension.
a = tf.placeholder(dtype=tf.float32, shape=[None, 3, 4])
b = tf.placeholder(dtype=tf.float32, shape=[None, 1])

# Create some input data.
a_input = np.arange(24).reshape(2, 3, 4)
b_input = np.arange(2).reshape(2, 1)

# TensorFlow map function.
def f_tf(x):
    return tf.reduce_sum(x[0]) + tf.reduce_sum(x[1])
# Numpy map function (for validation of results).
def f_numpy(x):
    return np.sum(x[0]) + np.sum(x[1])

# Run TensorFlow function.
s = tf.map_fn(f, [a, b], dtype=tf.float32)
sess.run(s, feed_dict={a: a_input, b: b_input})

array([66.,211.],dtype = float32)

# Run Numpy function. 
for inp in zip(a_input, b_input):
    print(f_numpy(inp))

66211

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM