所以我有一个场景,我有一个 CNN,它分为两部分。一部分产生一个张量,它是 x*y*300
表示每个 (x,y)
的 300 个类的分布,第二部分产生一个张量,它只是一个 x*y*1
张量,这样每个元素都在 [1,inf]
范围内{1}}。最后,我想将第一个张量中每个 (x,y)
坐标的所有 300 个通道元素乘以第二个张量中 (x,y)
处的值,以产生第三个张量 x*y*300
。简单地说,我想取第一个张量的每个垂直向量切片,并将其乘以第二个张量中的相应标量。我已经查看了 tensorflow 的各种函数,最接近的函数是 tf.math.multiply
,但这需要两个张量具有相同的维度。我如何解决这个问题,同时仍然使网络完全可训练端到端?
我做这个可以说是不寻常的操作的原因是因为我希望能够执行退火的boltzmann softmax来细化第一个张量的每个(x,y)
的分布,温度值是从每个像素定义的第二张量。根据每个像素在第二个分支中提取的特征,有效地学习退火温度。