Keras是构建深度学习模型的高阶API,Keras有两种类型的模型:
Alink提供了KerasSequential组件,支持了Keras序贯模型(Sequential),一方面是其输入形式简单,易于理解,可以表示大多数深度模型;另一方面,序贯模型中可以插入TF Hub的预训练模型作为其一层,这种组合提升了序贯模型的模型表现能力和实用性。
Alink的KerasSequential组件分为:KerasSequentialClassifier分类器组件、KerasSequentialRegressor回归器组件。这两个组件分别针对分类场景和回归场景进行了改进,精简了需要用户做的操作。
下面通过一个例子,帮助读者深入理解上面的概念,手写识别MNIST的模型摘要如下
_________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_1 (InputLayer) [(None, 784)] 0 _________________________________________________________________ dense (Dense) (None, 64) 50240 _________________________________________________________________ dense_1 (Dense) (None, 64) 4160 _________________________________________________________________ dense_2 (Dense) (None, 10) 650 ================================================================= Total params: 55,050 Trainable params: 55,050 Non-trainable params: 0 _________________________________________________________________
在计算图中显示隔层的输入和输出内容如下:
使用Keras Python脚本,定义如下。省略了输入层的定义,最后一层的长度与识别的类别总数相同,为10。
import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers model = keras.Sequential( [ layers.Dense(64, activation='relu'), layers.Dense(64, activation='relu'), layers.Dense(10), ] )
使用Alink KerasSequential组件表示如下,参数TensorCol为Tensor类型输入列的名称,组件会根据输入数据的shape,确定模型第一层的设置;参数LableCol为标签列的名称,用户不需要统计标签的类别数,不需要将不同类型的标签值统一为索引数,KerasSequentialClassifier组件会根据标签列的数据,自动进行统计和转换,并且在预测的时候,也会自动转换为原始的标签值。用户只需要设置中间各层的信息,每层用一个字符串表示,字符串的内容就是对应的Keras Python脚本中每层的定义代码去掉前缀“layers.”。
new KerasSequentialClassifier() .setTensorCol("tensor") .setLabelCol("label") .setLayers( "Dense(64, activation='relu')", "Dense(64, activation='relu')" )
如何查找可用的Keras Layers?
Alink当前内置的TensorFlow版本为2.3.1,支持的TensorFlow Keras Layer类型详见链接
https://tensorflow.google.cn/versions/r2.3/api_docs/python/tf/keras/layers