加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 生成随机索引向量

发布时间:2020-12-15 02:25:04 所属栏目:Java 来源:网络整理
导读:我需要生成随机索引向量(具有大约1000的大量维度),这通常是稀疏的(大多数为零值).向量可以包含1(正维度),-1(负维度)和0的值.这些向量是为文本语料库中的每个单词生成的.在 Java中实现这一目标的最佳方法是什么,同时确保结果向量的随机性? 谢谢 解决方法 要
我需要生成随机索引向量(具有大约1000的大量维度),这通常是稀疏的(大多数为零值).向量可以包含1(正维度),-1(负维度)和0的值.这些向量是为文本语料库中的每个单词生成的.在 Java中实现这一目标的最佳方法是什么,同时确保结果向量的随机性?

谢谢

解决方法

要存储矢量,请保留其非零位置和1 / -1位的列表.你需要1 / -1位的字节.

如果你真的想要尽可能多地保存内存,你可以保留一个长BitSet包含所有向量的1 / -1信息,每个向量将记住它在BitSet中的起始索引.

要生成与其他矢量正交的矢量,您可以执行以下操作:

[0 1 0 0 -1 ...]
 [1 0 1 0 0 ...]  // zeros where the first vector is non-zero
 ...

保留所有可用1000个索引的链表.生成向量时,选择一小部分随机索引,生成这些索引非零的向量,并从可用索引列表中删除索引.但是这样你很快就会耗尽可用的指数.但是在1000维空间中只有1000个相互正交的向量,所以无论如何你都可以创建最多1000个单词的向量.

而且,矢量必须是正交的这一事实意味着它们不能是完全随机的,因为真正的随机矢量可能恰好是非正交的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读