question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Usage documentation?

See original GitHub issue

Sorry to spam you all with multiple issues, but is there any usage documentation associated with your s2cnn package? In particular, I’m curious when to use the different grid types and convolution types. Things like so3_equatorial_grid() vs. so3_soft_grid(), etc.

I also notice you explicitly call so3_integrate() in the MNIST example. I am wondering why there is a need for explicit integration, and what the operation is doing (I couldn’t find that in the papers).

Issue Analytics

  • State:closed
  • Created 5 years ago
  • Comments:14

github_iconTop GitHub Comments

6reactions
tscohencommented, Jul 31, 2018

Regarding the different grids used for the kernel: you are free to use either one, or define your own grid. Spherical CNNs are very new, so we don’t yet know what kind of grid / kernel support is appropriate for each kind of task. There is probably a lot that can be improved in terms of architecture details (for 2D CNNs, it took years to find good architectures, and they’re still improving).

You can think of so3_integrate as being analogous to “global average pooling” in a standard CNN. This is sometimes done at the end to get approximate translation invariance (in the spherical CNN so3_integrate leads to rotation invariance). The reason you can’t just sum up/average the values at all the points is that the grid points are not spread uniformly over the sphere, so we have to weigh them by the inverse of the density, which is given by the Haar measure. For instance, in the SOFT grid we have a lot of points near the north pole. Now imagine a signal that has high values near the north pole. After we rotate the signal, the large values could be near the equator, in which case we’d have fewer points with a high value. Simply summing the original and rotated pixels would not be rotation invariant, but so3_integrate() would be.

2reactions
mariogeigercommented, Jul 31, 2018
  • so3_equatorial_grid and so3_near_identity_grid are used to define the kernels support
  • so3_integrate integrate a signal on SO3 using the Haar measure

so3_soft_grid defines the SOFT grid that we use to represent our signals. You can use it to compute the Fourier transform of a signal, but we optimized the special case of the SOFT grid using FFT. The following two codes does the same thing (but the second one is much faster)

Slow

grid = so3_soft_grid(b_in)
so3_rft(x, b_out, grid)

Fast

so3_rfft(x, b_out=b_out)
Read more comments on GitHub >

github_iconTop Results From Across the Web

7 Best Examples of User Documentation & Help Guides
User documentation is the content that you provide the end user in order for them to be more successful with your product or...
Read more >
How to Build the Best User Documentation (New Guide) | Blog
User documentation (also called end user manuals, end user guides, instruction manuals, etc.) is the content you provide end users with to help...
Read more >
User Manuals and Other Documentation: Types, Tools, and ...
User (or end-user) documentation refers to explanatory and informational materials that describe the product you create and deliver to end-users ...
Read more >
How to Create Effective End-User Documentation (+Examples)
Learn how to write end-user documentation that users actually find valuable, with examples and tools to create your product documentation.
Read more >
5 Best User Documentation Examples for End Users
User Documentation, also known as End-user Documentation, refers to the documentation for a product or service provided to the end-users. It aims in...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found