Comments (3)
is this really MSA? are we just linearly projecting to a greater dimension specified by hyperparameters and then projecting back to the embedding dimension?
For some reason you missed those lines from Attention.forward
:
qkv = self.to_qkv(x).chunk(3, dim = -1)
q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> b h n d', h = self.heads), qkv)
dots = torch.matmul(q, k.transpose(-1, -2)) * self.scale
attn = self.attend(dots)
attn = self.dropout(attn)
out = torch.matmul(attn, v)
So it is not just linear projection to a greater dimension and back. Basically it does exactly what attention should do according to formula:
First, it computes similarity between keys and queries, then takes softmax (non linearity) to get attention weights and then applies them to values.
pytorch's MultiHeadAttention
is definitely more verbose, it supports various mask, which are needed if you need causality (decoder) or you have sequences of different length, or it could use some cuda optimized hardware implementation, but in the simplest form that's basically the attention.
from vit-pytorch.
@stas-sl thank you Stas
@JavierUrenaPhDProjects i would not recommend pytorch's MHA. you will quickly find it inflexible if you want to do anything out of the ordinary
from vit-pytorch.
closing because not an issue
from vit-pytorch.
Related Issues (20)
- how to train HOT 2
- Questions about distill_loss HOT 1
- Trouble loading ViT - Dino structure for channels>3?
- Question regarding 1d fft use HOT 1
- Masking attention with batches
- can we use CvT model for segmentation?
- Multi-target Regression Question
- Problems regarding training 3D Vision transformer : model does not converge
- Add implementation of LongVit HOT 4
- A question with ViT 3d
- Cuda memory for 3D VIT HOT 2
- PyPi page markdown render HOT 1
- CrossViT does not handle other than three channel images HOT 2
- Non-deterministic results based on group_max_seq_len in NaViT HOT 3
- Whether to include pre-trained models HOT 1
- Request for Pre-trained Weights for Vit
- Why Remove PreNorm?
- Patch Embedding Design Choice?
- Validation accuracy higher than training accuracy
- Swin UNet
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vit-pytorch.