从顺序API转换为功能API模型

赛义德·哈西尼(Saeed Hassiny)

我有以下代码片段:

model = Sequential()
model.add(Conv2D(16, (5, 5), input_shape=(256, 256, 1)))
x = model.layers[0].output
model.add(Lambda(lambda x: tf.abs(x)))
model.add(Activation(activation='tanh'))

我的问题是,如何将这些步骤转换为API keras模型。我的困惑是如何将ABS层作为API插入模型中。

穆罕默德·侯赛因(Mohammad Hossein Ziyaaddini)

让我们来看一下具有顺序实现和功能性API实现的模型:

这里是一些进口:

import tensorflow as tf
from tensorflow.keras.layers import Lambda,Conv2D, Activation, Input
from tensorflow.keras import Model, Sequential

这是您使用顺序模型的实现:

model = Sequential()
model.add(Conv2D(16, (5, 5), input_shape=(256, 256, 1)))
x = model.layers[0].output
model.add(Lambda(lambda x: tf.abs(x)))
model.add(Activation(activation='tanh'))

model.summary()

摘要输出:

Model: "sequential_2"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_6 (Conv2D)            (None, 252, 252, 16)      416       
_________________________________________________________________
lambda_6 (Lambda)            (None, 252, 252, 16)      0         
_________________________________________________________________
activation_5 (Activation)    (None, 252, 252, 16)      0         
=================================================================
Total params: 416
Trainable params: 416
Non-trainable params: 0
_________________________________________________________________

现在使用Functional API实现:

首先,定义您的功能:

def arbitrary_functionality(tensor):

  return tf.abs(tensor)

和:

input_layer = Input(shape=(256, 256, 1))
conv1 = Conv2D(16, (5, 5))(input_layer)
lambda_layer = Lambda(arbitrary_functionality)(conv1)
output_layer = Activation(activation='tanh')(lambda_layer)

model_2 = Model(inputs=input_layer, outputs=output_layer)
model_2 .summary()

摘要输出:

Model: "model_4"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_7 (InputLayer)         [(None, 256, 256, 1)]     0         
_________________________________________________________________
conv2d_9 (Conv2D)            (None, 252, 252, 16)      416       
_________________________________________________________________
lambda_9 (Lambda)            (None, 252, 252, 16)      0         
_________________________________________________________________
activation_8 (Activation)    (None, 252, 252, 16)      0         
=================================================================
Total params: 416
Trainable params: 416
Non-trainable params: 0
_________________________________________________________________

注意:根据TensorFlow文档,更好的方法是对Layer类进行子类化。在这里查看示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章