Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

SetRandData<int> 返回是否应该针对整数张量进行初始化? #950

Closed
zrr1999 opened this issue Sep 18, 2022 · 0 comments
Closed

Comments

@zrr1999
Copy link
Member

zrr1999 commented Sep 18, 2022

我在开发gather算子时遇到了一个bug,经过排查发现很有可能是因为SetRandData 的功能跟我认为的功能不太一样。

源码中将随机到的整数转为浮点数再对浮点张量进行赋值

std::vector<float> random_data(num_ele);
  for (size_t i = 0; i < num_ele; i++) {
    random_data[i] = static_cast<float>(dist(engine));  // All random data
  }

在其他类似工具生成随机数的时候通常是用Randint,randn,rand等函数名确定实际生成的随机数分布,数据类型通过额外指定,所以SetRandData函数是否也应该采用类似的写法,比如SetRandint,SetRandn这种,T指定了针对的张量数据类型。

我感觉这样至少有两点好处

  1. 可以对不同分布的随机数指定不同参数,例如randint的最大值和最小值,randn的均质和方差等。
  2. 每个函数只需要实现一遍,不需要像现在这种 SetRandData和SetRandData 实现两个函数。

相关 pr:#897

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants