Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
174 views
in Technique[技术] by (71.8m points)

How to compute stride mean in Pytorch?

For example, we have x = [1, 2, 3, 4, 5] with stride = 3, step = 1, then the stride mean would be result = [2, 3, 4]. More specifically, I have a vector with shape = (batch_size, sequence_len, embed_dim), and I want to perform the above operation on dim = 1 (sequence_len). How can I implement that efficiently in PyTorch?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I think what you mean - in PyTorch notation - is a kernel size of 3 and a stride of 1. You can use torch.nn.AvgPool1d to perform this kind of operation:

mean = nn.AvgPool1d(kernel_size=3, stride=1)

Note, you will need one extra dimension, for the channel, to be compatible with this kind of layer:

>>> x = torch.tensor([[1, 2, 3, 4, 5]]).unsqueeze(0)
tensor([[[1, 2, 3, 4, 5]]])

>>> mean(x)
tensor([[[2, 3, 4]]])

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...