如何使用 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_connected
和layer.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)
【讨论】:
对不起,我之前的描述不清楚。这里我希望W
与x
大小相同,y
应该是一维向量。我可以通过广播做到这一点吗?
Wi*x
是什么意思,如果它必须返回一个标量值?这2个张量之间需要什么样的运算?
哦,是点生产。我想我已经弄清楚了如何按照您的代码执行此操作。还是谢谢!以上是关于如何使用 TensorFlow 在一层中创建并行线性计算?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Batch - 如何使用一个读取其他步骤的作者的并行步骤?