如何使用 TensorFlow 在一层中创建并行线性计算?

Posted

技术标签:

【中文标题】如何使用 TensorFlow 在一层中创建并行线性计算?【英文标题】:How to create a parallel linear computation in one layer with TensorFlow? 【发布时间】:2018-05-25 10:15:11 【问题描述】:

我有大小为 [batch_size, height, width] 的输入。这里我想在一层中做几个不同的并行线性变换,即,

x = tensor([batch_size, height, width])
y = [W1*x, W2*x, W3*x,...,Wn*x]

我注意到TensorFlow中有fully_connectedlayer.dense,但它们一次只能做一个线性变换?我可以用它们做并行线性变换吗?

我是 TensorFlow 新手,如果这个问题有点愚蠢,请见谅。

【问题讨论】:

【参考方案1】:

利用广播:

import tensorflow as tf

batch_size, height, width = 5, 4, 3
n = 2

x = tf.random_uniform((batch_size, height, width))
W = tf.random_uniform((n,))

y = tf.multiply(tf.reshape(W, (n, 1, 1, 1)), tf.expand_dims(x, 0))

with tf.Session() as sess:
    y = sess.run(y)
    print(y.shape)
    # (2, 5, 4, 3)

【讨论】:

对不起,我之前的描述不清楚。这里我希望Wx 大小相同,y 应该是一维向量。我可以通过广播做到这一点吗? Wi*x 是什么意思,如果它必须返回一个标量值?这2个张量之间需要什么样的运算? 哦,是点生产。我想我已经弄清楚了如何按照您的代码执行此操作。还是谢谢!

以上是关于如何使用 TensorFlow 在一层中创建并行线性计算?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tensorflow 中创建优化器

如何在 grafana 图表中创建趋势线

Spring Batch - 如何使用一个读取其他步骤的作者的并行步骤?

如何在TensorFlow中创建自定义估算器?

如何在新的 NavigationView 中创建一个简单的分隔线?

R:如何使用其他列中的数据在一列中创建多个新值并为每个新值重复行?