1 回答

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
沒有自定義圖層具有“輸入”圖層。這沒有多大意義。輸入是您在調(diào)用圖層時(shí)傳遞給圖層的內(nèi)容。
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
如果您不打算多次使用“同一層”,也可以創(chuàng)建更簡單的 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
添加回答
舉報(bào)