Open
Conversation
This was referenced Oct 16, 2022
Merged
Merged
darsnack
reviewed
Oct 17, 2022
Comment on lines
+166
to
+167
| (m::Embedding)(x::Nil) = similar(m.weight, Nil, size(m.weight, 1)) | ||
| (m::Embedding)(x::AbstractArray{Nil}) = similar(m.weight, Nil, size(m.weight, 1), size(x)...) |
Member
There was a problem hiding this comment.
Should these warn about the limitations? outputsize can be used in sanity checking contexts, so I think a user would be willing to accept a little noise.
ToucheSir
reviewed
Oct 21, 2022
| * `Embedding` accepts either integers or one-hot arrays, and `ohx = onehotbatch(x, ...)` | ||
| has one more dimension than `x`. Here `outputsize` uses `size(x)`. | ||
| * At present `outputsize` does not work with recurrent layers, | ||
| `outputsize(RNN(2 => 3), (2, 1))` gives an error. This is a bug. |
Member
There was a problem hiding this comment.
Suggested change
| `outputsize(RNN(2 => 3), (2, 1))` gives an error. This is a bug. | |
| `outputsize(RNN(2 => 3), (2, 1))` gives an error. See https://github.com/FluxML/Flux.jl/pull/1755 for more. |
I'm not up to speed on any Embedding changes, but a link reference here would be nice.
Member
|
Would this landing obsolete #1656? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Like #1656 this wants to make
outputsize(Embedding(3 => 4), (5,)) == (4, 5). That is, it thinks the size referred to byoutputsizeshould be the size of the array of vocabulary indices, not the size of the one-hot representation.But rather than overload indexing or
gather(as here https://github.com/FluxML/Flux.jl/pull/1656/files#diff-0dfa3b94337acdaa714025f5198f6907e6a50a59aac03ba1230fbcb681126da2R172) this just adds methods to(::Embedding). I think that's least likely to cause surprises. If indexing shows up elsewhere, we can decide then whether to extend.Restricting
(m::Embedding)(x::AbstractArray{<:Integer})also seems like the right thing to do, error right away on non-integer input.