- 操作系统平台:Linux Centos 7.6
- 硬件配置:Intel Xeon Gold 6152 (22×3.70 GHz);
- GPU型号:NVIDIA Tesla V100 32 GB;
- 节点数/CPU核心数/总核心数/GPU数:26/52/1144/104;
- TensorFlow安装来源(源码或二进制):官方网页
- TensorFlow版本(使用以下命令):2.1.0
- Python版本:3.6.8
问题描述:
在实现我的提议方法时,我使用了第二种实现风格(见下文),我发现算法的表现确实有些奇怪。更具体地说,随着训练轮数的增加,准确率反而下降,损失值却在增加。
因此,我缩小了问题的范围,最终决定修改TensorFlow官方页面的一些代码来检查发生了什么。正如TF v2官方网页所解释的,有两种实现风格,我采用了如下方式。
-
我修改了“TF v2入门”中提供的代码,链接如下:
如下所示:
...
输出结果如预期那样,如下所示:
...
更具体地说,随着训练轮数的增加,训练准确率增加,损失值降低(这是预期的正常现象)。
然而,下面这块代码是从以下链接改编的:
如下所示:
...
确实表现得有些奇怪。这段代码的输出如下:
...
可以看到,不仅准确率的值看起来很奇怪,而且随着训练轮数的增加,它们反而在下降?
请问您能解释一下这是怎么回事吗?
回答:
正如我在评论中指出的那样,我在使用评估指标时犯了一个错误。我应该使用BinaryAccuracy。
此外,最好将高级版本中的call方法编辑如下:
...