数据表示
BigDL的底层的数据表示形式有
- Tensor
- SparseTensor
- Talbe
- Sample
- MiniBatch
- DataSet
- OpenCVMat
- ImageFeature
- ImageFrame
可以参考官方文档 Data.
Tensor
Tensor是模仿Torch而来, 是最重要的数据结构.
可以理解为一个多维的矩阵, 在其之上定义了各种运算. 支持Float
或Double
两种类型.
使用的时候, 可以显式使用类型参数:
import com.intel.analytics.bigdl.tensor.Tensor
val tensor = Tensor[Float](2, 3)
也可以导入一个隐式类, 隐式地表明你使用的数据类型:
import com.intel.analytics.bigdl.tensor.Tensor
import com.intel.analytics.bigdl.numeric.NumericFloat
val tensor = Tensor(2, 3)
Table
同样模仿Torch, 可以看作键值对map. 使用语法糖T
可以创建一个Table
Scala example:
import com.intel.analytics.bigdl.utils.T
import com.intel.analytics.bigdl.tensor.Tensor
import com.intel.analytics.bigdl.numeric.NumericFloat
println(T(Tensor(2,2).fill(1), Tensor(2,2).fill(2)))
输出是:
{
2: 2.0 2.0
2.0 2.0
[com.intel.analytics.bigdl.tensor.DenseTensor$mcF$sp of size 2x2]
1: 1.0 1.0
1.0 1.0
[com.intel.analytics.bigdl.tensor.DenseTensor$mcF$sp of size 2x2]
}
Sample
代表你用的数据集, 当然包括feature
和label
, 这里的feature和label都是Tensor.
- The case where feature is one tensor with a 1-element label.
import com.intel.analytics.bigdl.dataset.Sample
import com.intel.analytics.bigdl.tensor.Tensor
import com.intel.analytics.bigdl.numeric.NumericFloat
val image = Tensor(3, 32, 32).rand
val label = 1f
val sample = Sample(image, label)
- The case where feature is a few tensors and label is also a few tensors.
import com.intel.analytics.bigdl.dataset.Sample
import com.intel.analytics.bigdl.tensor.Tensor
import com.intel.analytics.bigdl.numeric.NumericFloat
val features = Array(Tensor(2, 2).rand, Tensor(2, 2).rand)
val labels = Array(Tensor(1).fill(1), Tensor(1).fill(-1))
val sample = Sample(features, labels)