gpt4 book ai didi

python - tensorflow 中的张量收缩

转载 作者:太空宇宙 更新时间:2023-11-04 11:17:31 26 4
gpt4 key购买 nike

我有一个形状为 (?,4) 的张量 weights 和一个形状为 (?,4, 1024)

我想根据相应的权重对每行embeddings中的4个张量进行加权平均来收缩张量,最后产生一个张量形状 (?,1024) 的输出

我该怎么做?我尝试使用 output = tf.tensordot(weights, embeddings, axes = [1,1]) 但它产生了形状为 (?,?,1024) 的张量.

最佳答案

你可以这样做:

import tensorflow as tf

weights = tf.placeholder(tf.float32, [None, 4])
embeddings = tf.placeholder(tf.float32, [None, 4, 1024])
output = tf.einsum('ij,ijk->ik', weights, embeddings)

可以用矩阵乘积来表达同样的东西,不知道在性能上会不会有什么不同:

output = tf.squeeze(tf.expand_dims(weights, 1) @ embeddings, 1)

您也可以只进行乘法和减法,尽管原则上这会因为有一个中间张量而导致性能变差。

output = tf.reduce_sum(tf.expand_dims(weights, 2) * embeddings, axis=1)

关于python - tensorflow 中的张量收缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56701041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com