Open taojunhui opened 1 year ago
因为训练过程默认不需要使用到验证集,所以subset
默认被设置为'val'
。在评测模型精度时,可以设置subset
参数为'test'
来获取测试集上的精度指标。就像README中的这个例子:
python train.py eval --exp_config PATH_TO_CONFIG_FILE --resume PATH_TO_CHECKPOINT --save_on --subset test
我又看了一下代码,找到,感谢。
原来在这,进行配置
def get_common_train_configs(C):
"""获取通用的训练阶段配置"""
return dict(phase='train', repeats=C['repeats'])
def get_common_eval_configs(C):
"""获取通用的评估阶段配置"""
return dict(phase='eval', transforms=[None, None, None], subset=C['subset'])
class DatasetBase(data.Dataset, metaclass=ABCMeta):
def __init__(
self,
root, phase,
transforms,
repeats,
subset
):
super().__init__()
self.root = os.path.expanduser(root)
.
.
.
self.subset = 'train' if self.phase == 'train' else subset
以上是训练器构建训练集和验证集的代码。但是,我从一下代码发现,在WHUDataset加载训练集和验证集时,是以subset参数来区分的,但是在调用时,都采用默认的值val。这样的话,训练集和验证集不都是一个了吗?请问是我疏忽那些细节了吗?