x为False却不执行if x is False?numpy.bool_的坑!

话不多说,上代码:

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不显式指定类型,隐患就体现于此。

posted @ 2023-03-03 11:00  gloomy1999  阅读(26)  评论(0)    收藏  举报