Skip to content

Limitations of FiniteDifferences.to_vec for Tangent() #271

Open
@theogf

Description

@theogf

to_vec is great for working on complex structures but it has the limit of only reconstructing the primal representation.

For example, related to #270 , if I had a to_vec(x::AbstractVector{T,Missing}) where {T} definition such as:

function to_vec(x::AbstractVector{T,Missing}) where {T}
   is = findall(ismissing, x)
   not_is = findall(!ismissing, x)
   xval, from_xval = to_vec(x[is])
   function from_vec(x)
      y = similar(x)
      y[is] = from_xval(x)
      y[not_is] .= missing
      y
   end
   xval, from_vec
end

The primal reconstruction would work fine, but instead of returning some NoTangent for the missing values, it would just return missing and mess up the rest.

One solution would be to specify a dual version which would put the right Tangent types where needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions