话不多说,上代码:
is_best = prec > best_prec
if is_best is False:
if epoch - best_ep > 30:
return
乍一看,Early Stopping丐版实现嘛。但是实际运行的时候,is_best永远不会为False(包括print(is_best)为False的时候)!
为什么?因为is_best是numpy.bool_类型!!!不是原生的Boolean!
解决方案也很简单,换成if not is_best
即可。Python不显式指定类型,隐患就体现于此。