Skip to content

Spyrit v3 ? #248

@romainphan

Description

@romainphan

@nducros

Suite à notre discussion pour intégrer des mesures flexibles sur plusieurs dimensions, j'ai pensé à un opérateur de mesure qui suit ces principes:

  • un opérateur de mesure H, qui a des dimensions (M, *), où (*) a au moins une dimension (la/les dimension/s sur la/lesquelle/s on mesure).
    Par exemple pour faire un équivalent du HadamSplit avec h=64, on prendrait HadamSplit.H.reshape(64**2, 64, 64)
    Avec cette construction, on voit tout de suite qu'on a M=64**2 mesures, et que les mesures s'appliquent sur 2 dimensions - les 2 dimensions restantes (par exemple les 2 dernières dimensions du tenseur à mesurer).

  • le tenseur mesuré en entrée devrait avoir les (*) dernières dimensions égales aux (*) dernières dimensions de l'opérateur de mesure. Dans le même exemple, l'opérateur a comme 2 dernières dimensions (64,64), donc on mesure ici des images (ou autre) de taille 64x64.

  • Si on veut 'sauter' une dimension lors de la mesure (par exemple mesurer sur (c,h) au lieu de (h,w) dans l'exemple de (b,c,h,w)), on peut indiquer une dimension en plus dans l'opérateur : au lieu d'avoir H.shape = (64**2, 64, 64) on aurait (dans un cas à 512 canaux) : H.shape = (64**2, 512, 64, 1). Ici avec le 1 à la fin on comprend qu'on ne mesure rien sur cette dimension : on la 'saute' et on passe aux 2 suivantes

Voilà c'est encore un peu brouillon, je sais pas comment régler le pb du dynamique dessus mais ça m'a l'air pas mal.

Metadata

Metadata

Labels

enhancementNew feature or requestquestionFurther information is requested

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions