data_crop.chip(z, 2) = (d_o > r_o) || (d_i <= r_i) ? Eigen::Tensor<uint8_t, 2, Eigen::RowMajor>::Zero(data_layer.dimensions()) : data_layer; rror: C2039: “Zero”: 不是“Eigen::Tensor<uint8_t,2,1,Eigen::DenseIndex>”的成员 ..\octDemo\algorithm.cpp(11): note: 参见“Eigen::Tensor<uint8_t,2,1,Eigen::DenseIndex>”的声明
时间: 2024-02-06 12:02:23 浏览: 179
这个错误是因为 `Eigen::Tensor` 类并没有名为 `Zero` 的成员函数。正确的方法是使用 `Eigen::Tensor` 的静态成员函数 `Zero` 来创建一个元素全为 0 的张量。
以下是修改后的代码示例:
```cpp
data_crop.chip(z, 2) = (d_o > r_o) || (d_i <= r_i) ? Eigen::Tensor<uint8_t, 2, Eigen::RowMajor>::Zero(data_layer.dimension(0), data_layer.dimension(1)) : data_layer;
```
其中,`Eigen::Tensor<uint8_t, 2, Eigen::RowMajor>::Zero(data_layer.dimension(0), data_layer.dimension(1))` 表示创建一个元素全为 0、大小与 `data_layer` 相同的张量。注意,我们需要使用 `data_layer.dimension(0)` 和 `data_layer.dimension(1)` 来获取张量的大小。
相关问题
D:\code\octAlgDemo\octDemo\algorithm.cpp:406: error: C2039: “Zero”: 不是“Eigen::Tensor<uint8_t,2,1,Eigen::DenseIndex>”的成员 ..\octDemo\algorithm.cpp(11): note: 参见“Eigen::Tensor<uint8_t,2,1,Eigen::DenseIndex>”的声明
这个错误是因为 Eigen 的 `Tensor` 类没有名为 `Zero` 的成员函数。正确的方法是使用 `Eigen::Tensor` 的静态成员函数 `Constant` 来创建一个元素全为 0 的张量。
以下是修改后的代码示例:
```cpp
data_crop.chip(z, 2) = (d_o > r_o) || (d_i <= r_i) ? Eigen::Tensor<uint8_t, 2, Eigen::RowMajor>::Constant(data_layer.dimensions(), 0) : data_layer;
```
其中,`Eigen::Tensor<uint8_t, 2, Eigen::RowMajor>::Constant(data_layer.dimensions(), 0)` 表示创建一个元素全为 0 的张量,大小与 `data_layer` 相同。
data_crop[:, :, z] = np.where((d_o > r_o) | (d_i <= r_i), 0, data_layer) 转c++ Eigen
以下是将 `data_crop[:, :, z] = np.where((d_o > r_o) | (d_i <= r_i), 0, data_layer)` 转换为 C++ Eigen 的代码:
```cpp
data_crop.chip(z, 2) = (d_o > r_o) || (d_i <= r_i) ? Eigen::Tensor<uint8_t, 2, Eigen::RowMajor>::Zero(data_layer.dimensions()) : data_layer;
```
其中,`.chip` 表示提取一个张量的某个维度,`Eigen::Tensor<uint8_t, 2, Eigen::RowMajor>::Zero` 表示一个指定大小的全零张量,`data_layer.dimensions()` 表示获取 `data_layer` 的维度。
阅读全文
相关推荐
















