1 回答

TA贡献2036条经验 获得超8个赞
没有自定义图层具有“输入”图层。这没有多大意义。输入是您在调用图层时传递给图层的内容。
Vo_
import tensorflow as tf
class ConvBN(tf.keras.layers.Layer):
def __init__(self, activation, name):
super().__init__()
#here you just "store" the layers, you don't use them
#you also store any other property you find necessary for the call
self.conv = tf.keras.layers.Conv2D(
filters=16,
kernel_size=3,
strides=(1, 1),
padding="same",
name = name+'_conv'
)
self.bn = tf.keras.layers.BatchNormalization(name = name + "_bn")
self.activation = tf.keras.layers.Activation(activation, name = name + "_act")
def call(self, inputs):
#here you "use" the layers with the given input to produce an output
out = self.conv(inputs)
out = self.bn(out)
out = self.activation(out)
return out
如果您不打算多次使用“同一层”,也可以创建更简单的 blok:
def convGroup(input_tensor, activation, name):
out = tf.keras.layers.Conv2D(
filters=16,
kernel_size=3,
strides=(1, 1),
padding="same",
name = name+'_conv'
)(input_tensor)
out = tf.keras.layers.BatchNormalization(name = name + "_bn")(out)
out = tf.keras.layers.Activation(activation, name = name + "_act")(out)
return out
添加回答
举报