我有以下代码片段:
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插入模型中。
让我们来看一下具有顺序实现和功能性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] 删除。
我来说两句