模型构建
在BigDL中,模型构建的API共分为两层,即torch风格的低级API和keras风格的高级API,高级API在实现上实际上是对低级API的封装。低级API功能更全面,但使用起来相对繁琐,而高级API则更好相反。对于初学者或者是熟悉Keras的开发者而言,从高级API入手显然是更好的选择。
高级API
值得注意的是,在BigDL及其子项目Analytics-zoo中,均有定义Keras风格的API,且实现几无二致。根据更新情况来看,Analytics-zoo中的部分会逐渐占据主导地位。在接口设计上,高级API照搬了Keras,同样包含Model和Layer两个层级。Model分为两种类型,即Sequential和Functional,其中Sequential类型的模型相当于定义了一个Layer的容器,往其中添加Layer即可,使用极其简单。而Functional类型的模型则允许定义相对复杂的计算流程,使用更加灵活多变。需要注意的是,尽管接口相似,其与Keras的API仍然具有一些不同,在使用时应当注意:
1. Functional layer只能使用一次
在Keras中,Functional模型中定义的算子可以为多个下游节点共享,而在BigDL中则不然,如果执意使用则会则模型定义时抛出算子重复构建的异常。
2. Backend
尽管Keras中的Layer对深度学习中常用的算子(如卷积,rnn等)进行了封装,很多时候仍然需要通过backend方法直接调用下层Tensorflow或Theano的算子。BigDL的高级API虽然没有backend的概念,却提供了类似的接口,即KerasLayerWrapper。与Keras中backend相似,如果需要使用的算子在已有的Layer没有封装,可以通过该方法间接调用低级API。
网友评论