lambda networks
0.4.0
Implémentation de λ Networks, une nouvelle approche de reconnaissance d'images qui atteint SOTA sur ImageNet. La nouvelle méthode utilise la couche λ, qui capture les interactions en transformant les contextes en fonctions linéaires, appelées lambdas, et en appliquant ces fonctions linéaires à chaque entrée séparément.
Revue de l'article de Yannic Kilcher
$ pip install lambda-networks
Contexte mondial
import torch
from lambda_networks import LambdaLayer
layer = LambdaLayer (
dim = 32 , # channels going in
dim_out = 32 , # channels out
n = 64 , # size of the receptive window - max(height, width)
dim_k = 16 , # key dimension
heads = 4 , # number of heads, for multi-query
dim_u = 1 # 'intra-depth' dimension
)
x = torch . randn ( 1 , 32 , 64 , 64 )
layer ( x ) # (1, 32, 64, 64)
Contexte localisé
import torch
from lambda_networks import LambdaLayer
layer = LambdaLayer (
dim = 32 ,
dim_out = 32 ,
r = 23 , # the receptive field for relative positional encoding (23 x 23)
dim_k = 16 ,
heads = 4 ,
dim_u = 4
)
x = torch . randn ( 1 , 32 , 64 , 64 )
layer ( x ) # (1, 32, 64, 64)
Pour vous amuser, vous pouvez également l'importer comme suit
from lambda_networks import λLayer
Shinel94 a ajouté une implémentation Keras ! Il ne sera pas officiellement pris en charge dans ce référentiel, donc copiez/collez le code sous ./lambda_networks/tfkeras.py
ou assurez-vous d'installer tensorflow
et keras
avant d'exécuter ce qui suit.
import tensorflow as tf
from lambda_networks . tfkeras import LambdaLayer
layer = LambdaLayer (
dim_out = 32 ,
r = 23 ,
dim_k = 16 ,
heads = 4 ,
dim_u = 1
)
x = tf . random . normal (( 1 , 64 , 64 , 16 )) # channel last format
layer ( x ) # (1, 64, 64, 32)
@inproceedings {
anonymous2021lambdanetworks,
title = { LambdaNetworks: Modeling long-range Interactions without Attention } ,
author = { Anonymous } ,
booktitle = { Submitted to International Conference on Learning Representations } ,
year = { 2021 } ,
url = { https://openreview.net/forum?id=xTJEN-ggl1b } ,
note = { under review }
}