微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-张量乘法的张量流有效方法

我在张量流中有两个张量,第一个张量是3-D,第二个张量是2D.我想像这样乘以它们:

x = tf.placeholder(tf.float32, shape=[sequence_length, batch_size, hidden_num]) 
w = tf.get_variable("w", [hidden_num, 50]) 
b = tf.get_variable("b", [50])

output_list = []
for step_index in range(sequence_length):
    output = tf.matmul(x[step_index,  :,  :], w) + b
    output_list.append(output)
output = tf.pack(outputs_list)

我使用循环执行乘法运算,但是我认为它太慢了.使该过程尽可能简单/干净的最佳方法是什么?

解决方法:

您可以使用batch_matmul.不幸的是,batch_matmul似乎不支持沿批次维度进行广播,因此您必须平铺w矩阵.这将使用更多的内存,但所有操作将保留在TensorFlow中

a = tf.ones((5, 2, 3))
b = tf.ones((3, 1))
b = tf.reshape(b, (1, 3, 1))
b = tf.tile(b, [5, 1, 1])
c = tf.batch_matmul(a, b) # use tf.matmul in TF 1.0 
sess = tf.InteractiveSession()
sess.run(tf.shape(c))

这给

array([5, 2, 1], dtype=int32)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐