张量繁殖

发布于 2025-01-22 15:19:52 字数 412 浏览 0 评论 0原文

我有两个大小

a< tf.tensor'sequent_12/my_layer_56/add:0'shape =(?,300,2)dtype = float32> gt;

和 b< tf.tensor'input_82:0'shape =(?,2,2)dtype = float32> gt;

现在,我想从通常的矩阵行列产品的意义上乘以它们以获得

大小的A * B(?,300,2),因此我只能在第二和第三维中使用矩阵产品。我该如何实现?

我尝试使用具有不同轴规范的TF.Tensordot,但到目前为止尚未工作。例如,我尝试了

tf.tensordot(a,b,axes = [[2],[0]]),

但这会产生以下形式的张

量2,2)dtype = float32>

I have two tensors of size

A <tf.Tensor 'sequential_12/my_layer_56/add:0' shape=(?, 300, 2) dtype=float32>

and
B <tf.Tensor 'input_82:0' shape=(?, 2, 2) dtype=float32>

Now, I would like to multiply them in the sense of the usual matrix row-column product to obtain

A * B of size (?, 300, 2), so I would be doing the matrix product only over the second and third dimension. How can I achieve this?

I tried to use tf.tensordot with different axes specifications, but it did not work so far. For example I tried

tf.tensordot(A,B,axes=[[2], [0]])

but this produces a tensor of the following form

<tf.Tensor 'Tensordot_10:0' shape=(?, 300, 2, 2) dtype=float32>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凌乱心跳 2025-01-29 15:19:52

也许尝试tf.matmul

import tensorflow as tf

samples = 1
A = tf.random.normal((samples, 300, 2))
B = tf.random.normal((samples, 2, 2))

print(tf.matmul(A, B).shape)
# (1, 300, 2)

Maybe try tf.matmul:

import tensorflow as tf

samples = 1
A = tf.random.normal((samples, 300, 2))
B = tf.random.normal((samples, 2, 2))

print(tf.matmul(A, B).shape)
# (1, 300, 2)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文