Keras是构建深度学习模型的高阶API,Keras有两种类型的模型:

    • 序贯模型(Sequential):自上而下,依次排列,每层单输入单输出,层与层之间只有相邻关系,没有跨层连接。
    • 函数式模型(Model):需要使用有向图表示,每层相当于图中的一个节点,多输入多输出,层与层之间任意连接。

    Alink提供了KerasSequential组件,支持了Keras序贯模型(Sequential),一方面是其输入形式简单,易于理解,可以表示大多数深度模型;另一方面,序贯模型中可以插入TF Hub的预训练模型作为其一层,这种组合提升了序贯模型的模型表现能力和实用性。

    Alink的KerasSequential组件分为:KerasSequentialClassifier分类器组件、KerasSequentialRegressor回归器组件。这两个组件分别针对分类场景和回归场景进行了改进,精简了需要用户做的操作。

    下面通过一个例子,帮助读者深入理解上面的概念,手写识别MNIST的模型摘要如下

    1. _________________________________________________________________
    2. Layer (type) Output Shape Param #
    3. =================================================================
    4. input_1 (InputLayer) [(None, 784)] 0
    5. _________________________________________________________________
    6. dense (Dense) (None, 64) 50240
    7. _________________________________________________________________
    8. dense_1 (Dense) (None, 64) 4160
    9. _________________________________________________________________
    10. dense_2 (Dense) (None, 10) 650
    11. =================================================================
    12. Total params: 55,050
    13. Trainable params: 55,050
    14. Non-trainable params: 0
    15. _________________________________________________________________

    在计算图中显示隔层的输入和输出内容如下:
    image.png

    使用Keras Python脚本,定义如下。省略了输入层的定义,最后一层的长度与识别的类别总数相同,为10。

    1. import tensorflow as tf
    2. from tensorflow import keras
    3. from tensorflow.keras import layers
    4. model = keras.Sequential(
    5. [
    6. layers.Dense(64, activation='relu'),
    7. layers.Dense(64, activation='relu'),
    8. layers.Dense(10),
    9. ]
    10. )

    使用Alink KerasSequential组件表示如下,参数TensorCol为Tensor类型输入列的名称,组件会根据输入数据的shape,确定模型第一层的设置;参数LableCol为标签列的名称,用户不需要统计标签的类别数,不需要将不同类型的标签值统一为索引数,KerasSequentialClassifier组件会根据标签列的数据,自动进行统计和转换,并且在预测的时候,也会自动转换为原始的标签值。用户只需要设置中间各层的信息,每层用一个字符串表示,字符串的内容就是对应的Keras Python脚本中每层的定义代码去掉前缀“layers.”。

    1. KerasSequentialClassifier()\
    2. .setTensorCol("tensor")\
    3. .setLabelCol("label")\
    4. .setLayers(
    5. "Dense(64, activation='relu')",
    6. "Dense(64, activation='relu')"
    7. )

    :::tips 如何查找可用的Keras Layers?

    Alink当前内置的TensorFlow版本为2.3.1,支持的TensorFlow Keras Layer类型详见链接
    https://tensorflow.google.cn/versions/r2.3/api_docs/python/tf/keras/layers :::