在弥勒佛框架中模型参数和训练样本的特征值通过向量(util.Vector)来表示。
向量分两种类型:
- 稠密向量,元素的key从0开始到N结束,实际值保存在切片中,使用NewVector(length)开辟新的稠密向量,稠密向量的长度在新建向量时已经指定好,无法更改。稠密向量的存储和访问相比稀疏向量更有效,但仅仅使用于非海量(百万量级一下)特征数目的机器学习问题。
- 稀疏向量,元素的key可以是不连续的值,保存在map中,使用NewSparseVector()开辟新的稀疏向量。稀疏向量主要用于处理特征稀疏的超大规模机器学习问题。
需要注意的是
- 请不要混合使用稀疏和稠密向量。
- 和其他类型一样,向量是协程不安全的,请不要多个协程同时对向量进行读写。
请使用如下方法遍历向量中元素的值
for _, key := range(vector.Keys()) {
vector.Get(key)
}
我们为向量提供了丰富的操作函数,请见util/vector.go源文件。