-
Notifications
You must be signed in to change notification settings - Fork 187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tutorial: tensor network basics #1193
base: master
Are you sure you want to change the base?
Conversation
👋 Hey, looks like you've updated some demos! 🐘 Don't forget to update the Please hide this comment once the field(s) are updated. Thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great skeleton @EmilianoG-byte @Shiro-Raven !
Mainly minor suggestions, and one bigger one towards the last section for quantum circuit applications
Thank you for opening this pull request. You can find the built site at this link. Deployment Info:
Note: It may take several minutes for updates to this pull request to be reflected on the deployed site. |
Initial draft from last week: DRAFT:
Very nice source with visual explanations that we can cite: https://www.math3ma.com/blog/matrices-as-tensor-network-diagrams |
Hi @Qottmann ! I have finished checking the spelling and grammar so I believe the demo is now ready for a review :). If anything, I saw my last 3 drawings could use some improvement in the thickness of the lines, but I guess that’s a minor detail I can correct in the following days :D |
@EmilianoG-byte awesome :) you can expect a review at the latest by eow |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great first draft @EmilianoG-byte , congrats!
I left a bunch of nitpicky comments, in particular feel free to ignore those marked as "personal opinion" at your discretion.
The demo starts relatively slow in the beginning (which is great pedagogically) and then very quickly goes very fast (also understandable since that is in the nature of these highly complex topics).
I wonder if you can adjust the pace on either ends to make the experience smoother (I understand this is a very vague and hard-to-implement suggestion, but perhaps you get an idea). Perhaps it is also more a matter of the framing of the scope of the demo, making it clear in the beginning, end and thoughout what this demo is trying to achieve.
Perhaps as a good exercise for you to answer first and then use to translate into the draft: who is the target audience of this demo? what is the intention of writing this demo? and what should a reader take away from it?
I think the content itself it already great, it is just a matter of framing and scoping of the text :)
demonstrations/tutorial_tn_basics.py
Outdated
|
||
Part of the excitement surrounding tensor networks is due to their ability to represent complex data efficiently, which allows for — among other things — fast classical simulations. In addition, the diagrammatic language accompanying tensor networks makes working with them intuitive and suitable for describing a vast range of mathematical concepts, including quantum circuits. | ||
|
||
In this tutorial, we aim to provide an introduction to tensor networks with a focus on their applications in quantum computing. We choose to start by discussing the basic notions and definitions of tensors and tensor networks and work our way up to more advanced topics such as contraction paths and algorithms used to simulate quantum computers using tensor networks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(personal opinion)
could be reduced or even removed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should I make the changes you were referring about being more clear about the scope of the demo?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have added some transition sentences (and even an intermezzo :o), let me know what you think @Qottmann !
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I quite like the idea of the intermezzo :) from reading that the context is clear. do you think there is also a way you could specify in the intro which parts of the contents are going to be "the first part"? Because technically this currently consists of 3 sub-parts, perhaps you can introduce main headings "part1" and "part 2", with the current headings (minus intermezzo) being sub-headings.
In particular, this structure
1. Part 1
1.1 from matrices to tensors
1.2 from matrix multiplication to tensor contractions
1.2.1 CNOT gate
1.3 cost of contraction
2. Intermezzo
3. Part 2
...
(note that I dont mean that the headings in the content actually have this numbering, this is just to explain the logic)
demonstrations/tutorial_tn_basics.py
Outdated
where each :math:`i_n` is an *index* of dimension :math:`d_n`—it takes integer values such that :math:`i_n \in [1, d_n]`—and the number of indices :math:`r` is known as the *rank* of the tensor. We say :math:`T` is a rank-:math:`r` tensor. | ||
|
||
.. tip:: | ||
Some authors refer to the indices of the tensors as their dimensions. In this tutorial, these two concepts will have different meanings, although related. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what is the meaning of dimension here? I'd either name the meaning of "dimension" directly here or leave the comment alltogether as it doesnt help at this stage
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have cleaned a bit the explanation on the index-dimension relation. Strictly speaking, I also think is not truly necessary, but perhaps could be helpful for beginners that can get confused with the terminology when coming from other tutorials :)
|
||
Does the last diagram seem familiar? It is because this is the representation of a single-qubit gate! We will see later in this tutorial the relation between quantum circuits and tensor networks. | ||
|
||
When working within the quantum computing notation, we adopt the convention that drawing the leg of a quantum state (i.e., a vector) to the right corresponds to a ket, i.e., a vector living in the Hilbert space, while drawing the legs to the left means they are a bra vector, i.e., living in the dual space. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the differentiation between bra and kets via the direction they are pointing a common definition and actually necessary here? Instead of ascribing duals to left-pointing legs, you can also just indicate complex conjugation of
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would say for "general tensor networks" (like in condensed matter) this is the opposite convention. But since in quantum computing we read from left to right, you can see that all kets result in legs pointing right. Analogously the bra
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
when writing tensor diagrams, transposition becomes irrelevant as it is always clear from context. So the only thing you need to differentiate a bra from a ket is complex conjugation, which you can indicate with a star or bar over the tensor name :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I know what you refer to, but I don't think those statements agree with these definitions:
from https://arxiv.org/pdf/1912.10049. When thinking of the applications I have encountered in condensed matter I have the impressions that your statements make sense. But in other applications, representation the transposition of a tensor by bending its wires has been quite fundamental (in my experience).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I personally have never seen these definitions and conventions outside of this particular review by Biamonte. There is nothing wrong with it, I was just wondering if it's adding something to your demo or making things unnecessarily comlicated (as in, are you making good use of this in the demo? Or can the demo do without it? I dont think it's widespread and therefore necessary to share as common knowledge). I'm sharing this observation and in the end it is up to you as the author to decide :)
"id": "emiliano_godinez" | ||
}, | ||
{ | ||
"id": "ahmed_darwish" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please swap this out like this:
"id": "emiliano_godinez" | |
}, | |
{ | |
"id": "ahmed_darwish" | |
"username": "emiliano" | |
}, | |
{ | |
"username": "ShiroRaven" |
It will pass the metadata checks then.
Also, @Shiro-Raven , you're still missing a picture and the Headline on your account.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is @Shiro-Raven still an author of the demo?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey there! Very sorry for the radio silence. Emiliano and I actually agreed a long time ago that he will go on and have complete authorship of this demo, so please remove me from the metadata and the authors section
"dateOfPublication": "2024-08-06T00:00:00+00:00", | ||
"dateOfLastModification": "2024-08-06T00:00:00+00:00", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tk
Before submitting
Please complete the following checklist when submitting a PR:
Ensure that your tutorial executes correctly, and conforms to the
guidelines specified in the README.
Remember to do a grammar check of the content you include.
All tutorials conform to
PEP8 standards.
To auto format files, simply
pip install black
, and thenrun
black -l 100 path/to/file.py
.When all the above are checked, delete everything above the dashed
line and fill in the pull request template.
Title:
Summary:
Relevant references:
[sc-66746]
If you are writing a demonstration, please answer these questions to facilitate the marketing process.
GOALS — Why are we working on this now?
Eg. Promote a new PL feature or show a PL implementation of a recent paper.
AUDIENCE — Who is this for?
Eg. Chemistry researchers, PL educators, beginners in quantum computing.
KEYWORDS — What words should be included in the marketing post?
Which of the following types of documentation is most similar to your file?
(more details here)