Comments (1)
Hi! Thank you for your interest!
-
Yes, setting it as a Parameter is sufficient since
entmax_bisect
already takes care of the gradient computation for you. -
I'm not really sure about your code snippet so maybe this can help:
class EntmaxAlpha(torch.nn.Module):
def __init__(self, head_count, n_iter=25, dim=0):
super(EntmaxAlpha, self).__init__()
self.dim = dim
self.n_iter = n_iter
self.alpha_chooser = AlphaChooser(head_count)
def forward(self, X):
batch_size, head_count, query_len, key_len = X.size()
X = X.view(-1, key_len)
self.alpha = self.alpha_chooser()
expanded_alpha = self.alpha.unsqueeze(0).unsqueeze(-1)
expanded_alpha = expanded_alpha.expand((batch_size, -1, query_len))
expanded_alpha = expanded_alpha.contiguous().view(-1)
p_star = entmax_bisect(X, expanded_alpha, self.n_iter)
return p_star.view(batch_size, head_count, query_len, -1)
We used this EntmaxAlpha
just as you would use nn.Softmax
in a regular multi-head attention implementation (particularly, we used OpenNMT).
-
The code snippet above should answer your question. You can compute the attention probabilities for the several heads in parallel (even if they have different alphas).
-
Note that
p.mean()
is a constant sincep
always sums to 1. Since it's a constant, callingbackward()
on this will get you zero gradients. -
This is learned automatically via backpropagation! :)
from entmax.
Related Issues (20)
- Usage of alpha HOT 3
- Unexpected behaviour of sparsemax gradients for 3d tensors HOT 8
- entmax implementation for Tesnoflow 2 HOT 1
- entmax_bisect leads to loss becoming nan HOT 16
- Problem with sparse activations HOT 9
- Entmax fails when all inputs are -inf HOT 1
- Alpha value less than one? HOT 8
- Index -1 is out of bounds HOT 1
- A bug when alpha = 1 for entmax_bisect? HOT 3
- `entmax_bisect` is not stable around `alpha=1` HOT 3
- Release patch 1.0.1 with torch install_requires fix HOT 5
- Code to reproduce figure 3 HOT 1
- alpha-entmax
- Errors when using the loss function HOT 9
- entmax_bisect bugs with fp16/bf16 HOT 1
- Nans gradients for tensors with singleton dimensions for budget_bisect. HOT 5
- Instability of entmax bisect around 0? HOT 1
- EntmaxBisect forward requires unused argument HOT 2
- Sparse losses return nan when there is -inf in the input HOT 2
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 entmax.