【问题标题】:How do I zip tensors in tensorflow when the dimensions don't match当尺寸不匹配时,如何在张量流中压缩张量
【发布时间】:2018-05-19 08:02:05
【问题描述】:

我有两个张量,一个是 [None, 20, 2] 的形状,一个是 [None, 1] 的形状。 我想以同步的方式对每个子张量进行操作以产生一个值,这样我最终会得到一个形状为 [None, 1] 的张量。

在 python 领域,我会压缩这两个,然后迭代结果。

所以,为了清楚起见,我想写一个函数,它接受一个 [20, 2] 形张量和一个 [1] 形张量,并产生一个 [1] 形张量,然后应用这个函数对 [None, 20, 2] 和 [None, 1] 张量,产生一个 [None, 1] 张量。

希望我表达得足够好;更高的维度有时让我头晕目眩。

【问题讨论】:

    标签: python tensorflow


    【解决方案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})
    

    数组([ 66., 211.], dtype=float32)

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

    66 211

    【讨论】:

    • 稳固!这正是我想要的,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 2022-06-13
    • 2021-12-08
    • 2019-01-31
    • 2016-11-17
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    相关资源
    最近更新 更多