如何解决评估两个输入和一个输出模型张量流
我正在尝试评估具有 2 个输入和 1 个输出的模型,每个输入进入单独的预训练模型,然后两个模型的输出得到平均。我对两个输入使用相同的数据。
test_dir = 'D:\Graduation_project\Damage type not collected'
test_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255,)
test_set = test_datagen.flow_from_directory(test_dir,class_mode = 'categorical',batch_size = 16,target_size=(150,150))
test_set1 = test_datagen.flow_from_directory(test_dir,150))
加载第一个模型并重命名层
def load_dense_model():
densenet = tf.keras.models.load_model('D:\Graduation_project\saved models\damage_type_model.h5',compile=False)
for i,layer in enumerate(densenet.layers):
layer._name = 'Densenet_layer' + str(i)
return densenet
加载第二个模型
def load_vgg19_model():
vgg19 = tf.keras.models.load_model('D:\Graduation_project\saved models\damage_type_VGG19.h5',compile=False)
return vgg19
创建集成模型
def ensamble_model(first_model,second_model):
densenet = first_model()
vgg19 = second_model()
output_1 = densenet.get_layer('Densenet_layer613')
output_2 = vgg19.get_layer('dense_4')
avg = tf.keras.layers.Average()([output_1.output,output_2.output])
model = Model(inputs=[densenet.input,vgg19.input],outputs=avg)
return model
METRICS = [
'accuracy',tf.metrics.TruePositives(name='tp'),tf.metrics.FalsePositives(name='fp'),tf.metrics.TrueNegatives(name='tn'),tf.metrics.FalseNegatives(name='fn'),tf.metrics.Precision(name='precision'),tf.metrics.Recall(name='recall'),tfa.metrics.F1Score(name='F1_Score',num_classes=5),tfa.metrics.MultiLabelConfusionMatrix(num_classes=5)
]
model = ensamble_model(load_dense_model,load_vgg19_model)
编译和评估模型
model.compile(optimizer = 'adam',loss ='binary_crossentropy',metrics = 'accuracy')
model.evaluate({'Densenet_layer0':test_set1,'input_2':test_set})
evaluate() 无法运行
ValueError: Failed to find data adapter that can handle input: (<class 'dict'> containing {"<class 'str'>"} keys and {"<class 'tensorflow.python.keras.preprocessing.image.DirectoryIterator'>"} values),<class 'NoneType'>
解决方法
尝试像这样调用评估():
result = model.evaluate(x=[test_set1,test_set])
然后您可以通过执行以下操作获得指标的名称:
dict(zip(model.metrics_names,result))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。