GithubHelp home page GithubHelp logo

He initialization about dm-haiku HOT 8 CLOSED

google-deepmind avatar google-deepmind commented on June 23, 2024
He initialization

from dm-haiku.

Comments (8)

tomhennigan avatar tomhennigan commented on June 23, 2024 5

Ah thank you @inoryy (hi again btw!), I'm glad that we have support for this. Perhaps it would be worth including the table from Sonnet showing how to drive variance scaling in common ways:

  ==============  ==============================================================
  Name            Parameters
  ==============  ==============================================================
  glorot_uniform  scale=1.0, mode=``fan_avg``, distribution=``uniform``
  glorot_normal   scale=1.0, mode=``fan_avg``, distribution=``truncated_normal``
  lecun_uniform   scale=1.0, mode=``fan_in``,  distribution=``uniform``
  lecun_normal    scale=1.0, mode=``fan_in``,  distribution=``truncated_normal``
  he_uniform      scale=2.0, mode=``fan_in``,  distribution=``uniform``
  he_normal       scale=2.0, mode=``fan_in``,  distribution=``truncated_normal``
  ==============  ==============================================================

https://sonnet.readthedocs.io/en/latest/api.html#variancescaling

from dm-haiku.

fredguth avatar fredguth commented on June 23, 2024 1

Just a suggestion in regards to Haiku documentation: create a topic in Initializers with "common" names like "he" and "glorot" in order for new developers to find out it inside "VarianceScaling".

from dm-haiku.

trevorcai avatar trevorcai commented on June 23, 2024

Hey, thanks for the issue. This is intentional, as we explicitly match Sonnet v2 initialization schemes.

from dm-haiku.

joaogui1 avatar joaogui1 commented on June 23, 2024

How "limited" are we by sonnet? Will you accept PRs that implement things that are not in sonnet?
For example other initialization schemes, activations or layers

from dm-haiku.

tomhennigan avatar tomhennigan commented on June 23, 2024

We aim to make it easy to port code from Sonnet to Haiku, so for core modules that can also be found in Sonnet we should match their API and defaults (in the same way jax.numpy is aligned with numpy).

New features are welcome 😄. In general I think in Haiku itself we should aim to only include well known modules/networks and we should make it really easy for folks to build anything custom that they want using the components in Haiku (e.g. we should be open to exposing utilities from core if needed, but we should not aim to have everything in core).

Concretely I think it would be great if you added an He initializer to Haiku as one of the initializers we support, but that we should keep the default Linear initializer as it is today.

from dm-haiku.

inoryy avatar inoryy commented on June 23, 2024

Note that a variety of initializers are implicitly supported through the generic VarianceScaling initializer. For instance, here is how to initialize a Linear layer with the He scheme:

hk.Linear(num_units, w_init=hk.initializers.VarianceScaling(scale=2.0))

from dm-haiku.

inoryy avatar inoryy commented on June 23, 2024

@tomhennigan (hello! :)) yep, that table seems like a great idea! Maybe even include it both in code and as a separate note in the docs?

from dm-haiku.

joaogui1 avatar joaogui1 commented on June 23, 2024

Including it in the docs seems like a great idea!

from dm-haiku.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.