Re: [eigen] Tensor .select() with mixed tensor/scalar arguments

[ Thread Index | Date Index | More Archives ]

Thanks for the .constant() workaround!

I've opened a bug.


On 05/11/2019, 13:45, "Christoph Hertzberg" <chtz@xxxxxxxxxxxxxxxxxxxxxxxx> wrote:

    Your code works fine with `Eigen::ArrayXXf` instead of 
    `Eigen::Tensor<float,2>`, so making this work for Tensor as well would 
    not be a bad idea. Feel free to open a bug for that.
    As a workaround, you can write:
         ft_result = (ft_A < 0.5f).select(ft_A, ft_A.constant(0.0f));
    This is also inconsistent with the Array-API, where you would need to 
    write (instead of `ft_A.constant(0.0f)`):
          ArrayXXf::Constant(0.0f, ft_A.rows(), ft_A.cols());
    On 05/11/2019 12.12, Wood, Tobias wrote:
    > Hello,
    > The following simplified program does not compile with Eigen HEAD:
    > #include <unsupported/Eigen/CXX11/Tensor>
    > int main(const int argc, const char *const argv[])
    > {
    >    Eigen::Tensor<float, 2> ft_A(2, 4), ft_B(2, 4), ft_result(2, 4);
    >    ft_A.setRandom();
    >    ft_B.setZero();
    >    ft_result = (ft_A < 0.5f).select(ft_A, ft_B);
    >    ft_result = (ft_A < 0.5f).select(ft_A, 0.f);
    > }
    > The first call to ft_result compiles fine, but the second does not. The first line of compile errors is:
    > Eigen/src/Core/util/ForwardDeclarations.h:23:47: error: implicit instantiation of undefined template 'Eigen::internal::traits<float>
    > So it looks to me like Eigen tries to treat the 0.f as an Eigen tensor, rather than as the scalar type.
    > Does this count as a bug and if so should I open a bug on the tracker? I looked at trying to fix it myself but sadly this kind of Eigen issue is out of my league.
    > Best wishes,
    > Toby
      Dr.-Ing. Christoph Hertzberg
      Besuchsadresse der Nebengeschäftsstelle:
      DFKI GmbH
      Robotics Innovation Center
      Robert-Hooke-Straße 5
      28359 Bremen, Germany
      Postadresse der Hauptgeschäftsstelle Standort Bremen:
      DFKI GmbH
      Robotics Innovation Center
      Robert-Hooke-Straße 1
      28359 Bremen, Germany
      Tel.:     +49 421 178 45-4021
      Zentrale: +49 421 178 45-0
      E-Mail:   christoph.hertzberg@xxxxxxx
      Weitere Informationen:;;sdata=XMwSgtNr08DydJTQCWQQh94yxKoTrQ6Rp2%2FZoNgL0NI%3D&amp;reserved=0
       Deutsches Forschungszentrum für Künstliche Intelligenz GmbH
       Trippstadter Strasse 122, D-67663 Kaiserslautern, Germany
       Prof. Dr. Jana Koehler (Vorsitzende)
       Dr. Walter Olthoff
       Vorsitzender des Aufsichtsrats:
       Prof. Dr. h.c. Hans A. Aukes
       Amtsgericht Kaiserslautern, HRB 2313

Mail converted by MHonArc 2.6.19+