我尝试向模型添加新图层,但收到错误消息
TypeError: The added layer must be an instance of class Layer. Found: <class '__main__.New_Layer'>
几乎回答说所有层都应该是“tf.keras”或“keras”
但我将“tf.keras.layers.Layer”添加到 New_Layer 但不起作用。
在添加New_Layer之前,该模型可以正常执行。
这是我的代码
#InceptionResNetV2
conv_base = tf.keras.applications.InceptionResNetV2(weights=None,include_top=False , input_shape=(299,299,3))
conv_base.trainable = True
for layers in conv_base.layers[:-20]:
conv_base.trainable = False
class New_Layer(tf.keras.layers.Layer):
def __init__(self, context, **kwargs):
super(New_Layer, self).__init__(**kwargs)
self.context = context
def call(self, inputs):
feature_map = inputs
#get current file name and load new
file_name = self.context.get('file_name')
print(file_name)
new_image =
return tf.concat([feature_map, new_image], axis=-1)
model = tf.keras.Sequential()
model.add(conv_base)
model.add(tf.keras.layers.GlobalAveragePooling2D())
model.add(New_Layer)
model.add(tf.keras.layers.Dense(7,activation='softmax'))
model.summary()
model.compile(optimizer=Adam(learning_rate=0.001), loss='categorical_crossentropy', metrics=['accuracy'])
参考tensorflow指南:
model.add(New_Layer(context = ...))