数据表示

BigDL的底层的数据表示形式有

可以参考官方文档 Data.

Tensor

Tensor是模仿Torch而来, 是最重要的数据结构.

可以理解为一个多维的矩阵, 在其之上定义了各种运算. 支持FloatDouble两种类型.

使用的时候, 可以显式使用类型参数:

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

代表你用的数据集, 当然包括featurelabel, 这里的feature和label都是Tensor.

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)
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)