Tensorflow 2.0中的4D张量乘法
我有两个张量:Tensorflow 2.0中的4D张量乘法,tensorflow,tensorflow2.0,tensor,Tensorflow,Tensorflow2.0,Tensor,我有两个张量: 带形状的A:[128,24,24256] 带形状的B:[128,24,24,64] 我想把它们加在一起,但是维数是不同的,所以通过类比2D矩阵,我想把张量B和其他张量C相乘,这样张量积B*C将有维数[128,24,24256] 如何在tensorflow中实现这一点? 哪个维度应该是C张量?这取决于你想做什么。我可以想出两种方法 选择1 除后两个维度外,所有其他维度都与a和b完全相同。可以将n-d维矩阵乘法视为在最后两个维上进行矩阵乘法,并按原样为其余维添加前缀 a = tf.r
哪个维度应该是C张量?这取决于你想做什么。我可以想出两种方法 选择1 除后两个维度外,所有其他维度都与
a
和b
完全相同。可以将n-d维矩阵乘法视为在最后两个维上进行矩阵乘法,并按原样为其余维添加前缀
a = tf.random.normal(shape=[128,24,24,256])
b = tf.random.normal(shape=[128,24,24,64])
c = tf.random.normal(shape=[128,24,64,256])
# Essentially performing a [24, 64] . [64, 256]
# This is dot product
bc = tf.matmul(b,c)
# Res would be of size `128,24,24,256`
# This is element-wise
res = a * bc
选择2
您还可以通过将除最后两个维度之外的其他维度保持为1来利用广播功能。前两个维度中的任何一个(或全部)都可以是1,其余的由TensorFlow负责
a = tf.random.normal(shape=[128,24,24,256])
b = tf.random.normal(shape=[128,24,24,64])
# Note how the beginning dimensions are 1
c = tf.random.normal(shape=[1,1,64,256])
bc = tf.matmul(b,c)
res = a * bc
但是正如我前面所说的,
c
的大小实际上取决于您的用例。没有正确的普遍答案。那么,你的问题是,C的维数应该是多少?那么如何在tensorflow中实现呢?@thushv89两者都有!哪个维度应该是C,以及如何在tensorflow中对其进行编码。谢谢你的评论,我已经更新了我的问题谢谢你的回答!我的目标是从头开始构建Resnet。这就是为什么需要矩阵。