我在遥感图像数据集上训练了segnet 。当我运行model.evaluate
一组指标时,会返回。当我使用相同的设置再次编译模型并再次评估模型时,结果会有所不同。据我了解,模型的编译没有任何随机性或随机性,对吗?我认为批次中训练图像的顺序可能会有所不同,所以我尝试了 1 的批次大小,但仍然得到不同的结果。
模型的初始化在预测时是否也会导致不同的结果?如果是,我该如何解决这个问题?
这是我用于网络初始化的代码:
def my_acc(y_true, y_pred):
class_id_true = K.argmax(y_true, axis=-1)
class_id_preds = K.argmax(y_pred, axis=-1)
accuracy_mask = K.cast(K.equal(class_id_preds, 1), 'int32')
class_acc_tensor = K.cast(K.equal(class_id_true, class_id_preds), 'int32') * accuracy_mask
class_acc = K.sum(class_acc_tensor) / K.maximum(K.sum(accuracy_mask), 1)
return class_acc
model = ZF_UNET_224() # This model is from the link in the beginning of the text
model.compile(optimizer=Adam(lr=0.0000001),
loss = class_weighted_pixelwise_crossentropy,
metrics=['accuracy',my_acc,'categorical_accuracy'])
model.evaluate(x=imgs_test,y=imgs_mask_test,batch_size = 1,verbose=1)
# result1: [77778.927522078811, 0.94418407911839697, 0.0039057209515957264, 0.94418407911839697]
# result2: [77586.558084239135, 0.077934800141045577, 0.02123359974321911, 0.077934800141045577]