小编arr*_*sea的帖子

特征:评估A*S*A_transpose并将结果存储在对称矩阵中的最佳方法

设S是对称nxn矩阵,A是amxn矩阵.

给定:B = A*S*A_transpose(其中"*"表示矩阵乘积运算)

B也将是对称矩阵.

使用tuxfamily Eigen库,版本3,什么是实现此计算的干净有效的方法?(通过有效,我主要是指在对称性不必要的情况下,不执行B元素的重复计算.)

我猜它会使用SelfAdjointView,但我搜索了高低,没有找到一个干净的例子.

该应用程序是一个卡尔曼滤波器,它严重依赖于涉及(对称)协方差矩阵的运算,因此我希望确保实现/设计正确.

谢谢!

c++ linear-algebra eigen

8
推荐指数
1
解决办法
2164
查看次数

为什么"const Eigen :: Matrix <>&"和"const Ref <Eigen :: Matrix <>>"显然不兼容?

这是我的示例代码:

(请注意包围的部分#if ENABLE_MY_COMPILE_ERROR)

#include <Eigen/Core>
#include <iostream>

#define ENABLE_MY_COMPILE_ERROR 1

void f1(const Eigen::Ref<Eigen::MatrixXd> a, 
        const Eigen::Ref<Eigen::MatrixXd> b, 
        Eigen::Ref<Eigen::MatrixXd> c)
{
   c = a * b;
}

int main(int argc, const char *argv[])
{
   Eigen::Matrix3d M;
   Eigen::Vector3d x;
   Eigen::Vector3d y;

   M.setRandom();
   x.setRandom();

   std::cout<<"M = \n"<<M<<std::endl;
   std::cout<<"x = \n"<<x<<std::endl;
   std::cout<<"M * x = \n"<<M * x<<std::endl;

   {
      y.setZero();
      f1(M,x,y);

      std::cout<<"y = \n"<<y<<std::endl;
   }

   {
      Eigen::Matrix3d& MRef = M;

      y.setZero();
      f1(MRef,x,y);

      std::cout<<"y = \n"<<y<<std::endl;
   }

#if ENABLE_MY_COMPILE_ERROR
   {
      const Eigen::Matrix3d& MRef …
Run Code Online (Sandbox Code Playgroud)

c++ eigen eigen3

6
推荐指数
1
解决办法
1392
查看次数

tensorflow:结合 to_categorical() 与 Datasets 和 map()

简而言之,我正在努力尝试将 a 中的图像每像素类别掩码tf.data.Dataset从整数类编码转换为单热编码。

考虑这里的图像分割 tensorflow 教程示例:https ://www.tensorflow.org/tutorials/images/segmentation 。

输入是图像,输出是按像素整数标记的类别掩码。在他们的示例中,掩码在每个像素处都有一个由整数表示的类别值:{0、1 或 2}。

traintest的变量的类型的tf.data.Dataset ,并且每个样品是(图像,掩模)元组。

这种形式的掩码/输出与sparse_categorical_crossentropy教程中的损失函数是一致的。但是,我希望能够使用其他需要单热编码的损失函数。

我一直在尝试tf.keras.utils.to_categorical()使用 map() 调用通过函数转换数据集,即:

    def mask_to_categorical(image, mask):
        mask = tf.keras.utils.to_categorical(mask,3)
        return image, mask

    train = train.map(mask_to_categorical)
Run Code Online (Sandbox Code Playgroud)

但是,这失败并出现错误,例如:

    {...}/tensorflow_core/python/keras/utils/np_utils.py:40 to_categorical
        y = np.array(y, dtype='int')

    TypeError: __array__() takes 1 positional argument but 2 were given
Run Code Online (Sandbox Code Playgroud)

笔记:

到目前为止,我的搜索指出急切/非急切问题是一个可能的原因。值得一提的是,我通过以下方式验证了我正在以 Eager 模式运行:

    >>> print('tf.executing_eagerly() = ', tf.executing_eagerly())

    tf.executing_eagerly() =  True
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢!

python keras tensorflow

2
推荐指数
1
解决办法
1952
查看次数

标签 统计

c++ ×2

eigen ×2

eigen3 ×1

keras ×1

linear-algebra ×1

python ×1

tensorflow ×1