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

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Thanks for the .constant() workaround!

I've opened a bug.

Toby

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());
    
    Cheers,
    Christoph
    
    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: https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.dfki.de%2Frobotik&amp;data=01%7C01%7Ctobias.wood%40kcl.ac.uk%7C7683ce1039fa46a4754608d761f66efe%7C8370cf1416f34c16b83c724071654356%7C0&amp;sdata=XMwSgtNr08DydJTQCWQQh94yxKoTrQ6Rp2%2FZoNgL0NI%3D&amp;reserved=0
       -------------------------------------------------------------
       Deutsches Forschungszentrum für Künstliche Intelligenz GmbH
       Trippstadter Strasse 122, D-67663 Kaiserslautern, Germany
    
       Geschäftsführung:
       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+ http://listengine.tuxfamily.org/