对比学习里面instance_loss的意义

 (1)假设z1是(batchsize,sequencelength,featuredimension),假设一个(4,3,5)的维度,也就是batchsize是4,序列长度是3,特征维度是5。

(2)

 到了这一步之后,z就是(2 x batchsize,sequencelength,featuredimension)的了。

然后transpose一下,变成了(sequencelength,2 x batchsize,featuredimension)。

如下图,就是(8,3,5)

 再transpose之后,就变成了。

(3,8,5)

也就是变成了这样的了。这只是(3,4,5)

(3)然后做相乘,sim的尺寸应该是

(sequencelength,2 x batchsize,featuredimension)

(sequencelength,featuredimension,2 x batchsize)

->

(sequencelength,2 x batchsize,2 x batchsize)

也就是好比原来是(4,3,5)的(batchsize,sequencelength,featuredimension),

变成了(3,8,5)x(3,5,8) ->(3,8,8)

也就是以序列为单位做微观的乘法就是

(1,8,5)x(1,5,8)乘 3次。也就是以序列长度拆分后,做乘法。

也就是,(8,5)x(5,8)

再微观就是,(1,5)x(5,1)

举个例子,我们定义一个序列长度为3,每个序列点feature_dimension为5的序列,也就是说一个序列是(3,5)的维度,然后他的batch_size是4。然后我们定义这个序列点为

X1=[x1,x2,x3,x4,x5],那么也就是说一个序列是[X1,X2,X3]的维度的。其中每个X都是一个(1,5)的子序列。

那么一个batch也就是,一个(4,3,5)也就是。

X1,X2,X3

Y1,Y2,Y3

Z1,Z2,Z3

Q1,Q2,Q3

也就是4行3列的。我们做了cat之后就是。

X1,X2,X3

Y1,Y2,Y3

Z1,Z2,Z3

Q1,Q2,Q3

X1,X2,X3

Y1,Y2,Y3

Z1,Z2,Z3

Q1,Q2,Q3

也就是batchsize=8,8行。

序列长度是3,然后其中每个点X1,又包含一个五维的。

然后transpose之后,是(8,3,5)-》(3,8,5),也就是

X1 Y1 Z1 Q1 X1 Y1 Z1 Q1

X2 Y2 Z2 Q2 X2 Y2 Z2 Q2

X3 Y3 Z3 Q3 X3 Y3 Z3 Q3

 也就是说,到了上面这一步是(3,8,5)的维度的,请记住,一个序列(3,5)是[X1, Y1, Z1]。

然后我们的sim是再trnaspose(1,2)的。也就是变成了(3,5,8)的

下面,我们改变思路。因为之前定义的X1X2X3是这样的,

a1 a2 a3 a4 a5 

b1 b2 b3 b4 b5

c1 c2 c3 c4 c5,也就是说从序列长度来看是X1包含a1 a2 a3 a4 a5。如果我们从featuredimension的维度来看的话,那么就是F1,F2,F3,F4,F5。那么我们的F1就包含a1,b1,c1.也就是从序列点来看的同一位置的三个值。那么我们的一条序列就是,(4,5,3)的是怎么样的,回顾一下(4,3,5)的,那么这个就是4个 batch_size 也就是4个序列条。 一个[X123],也就是序列条。

那么四个,也就是四条了。

X1,X2,X3

Y1,Y2,Y3

Z1,Z2,Z3

Q1,Q2,Q3

如果是(4,5,3)的话,那么就是

F1,F2, F3, F4, F5

G1,G2,G3,G4,G5

H1,H2, H3,H4,H5

I1,   I2,  I3, I4,  I5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值