我以子类化方式编写模型,
''' 类块(tf.keras.Model):
def __init__(self,index,is_train_bn,channel_axis):
super().__init__()
prefix = 'block' + str(index + 5)
self.is_train_bn=is_train_bn
self.sepconv1_act = layers.Activation('relu', name=prefix + '_sepconv1_act')
self.sepconv1 = layers.SeparableConv2D(728, (3, 3),padding='same',use_bias=False,name=prefix + '_sepconv1')
self.sepconv1_bn = layers.BatchNormalization(axis=channel_axis, name=prefix + '_sepconv1_bn')
self.sepconv2_act = layers.Activation('relu', name=prefix + '_sepconv2_act')
self.sepconv2 = layers.SeparableConv2D(728, (3, 3),padding='same',use_bias=False,name=prefix + '_sepconv2')
self.sepconv2_bn = layers.BatchNormalization(axis=channel_axis, name=prefix + '_sepconv2_bn')
self.sepconv3_act = layers.Activation('relu', name=prefix + '_sepconv3_act')
self.sepconv3 = layers.SeparableConv2D(728, (3, 3),padding='same',use_bias=False,name=prefix + '_sepconv3')
self.sepconv3_bn = layers.BatchNormalization(axis=channel_axis, name=prefix + '_sepconv3_bn')
def __call__(self,x,training=False):
residual = x
x=self.sepconv1_act(x)
x=self.sepconv1(x)
x=self.sepconv1_bn(x,self.is_train_bn)
x=self.sepconv2_act(x)
x=self.sepconv2 (x)
x=self.sepconv2_bn(x,self.is_train_bn)
x=self.sepconv3_act (x)
x=self.sepconv3 (x)
x=self.sepconv3_bn (x,self.is_train_bn)
return x+residual
''' 当我想打印 x 时,我得到这个错误:
'无法将符号张量 (block1_conv1_act_1/Relu:0) 转换为 numpy 数组'。