训练结果很好,验证结果也很好,但测试的时候性能极差

我的猜测是程序学到了一个“不管输入是什么,就直接输出0.5”的模型。

这个也比较好理解,因为你的数据量只有30个(几乎等于没有数据),所以模型很可能几乎无法从输入提取任何信息。如果你每次都随机生成一个0到1的值并让模型猜,那模型最合理的表现就是每次都输出0-1均匀分布的期望,也就是0.5.

如果你真的想在数据只有30个的情况下得到一个合理的结果,可以搜索一下“小样本学习”。

3 Likes

原来是这样子啊!

虽然之前显示的训练loss看起来很小,但是实际上回归的结果并不是真的准确(可能其实都在0.5附近)。这点可以从model.evaluate(test_dataset)的结果loss看出来(loss也同样看起来很小,但是predict的结果却都是0.5附近)。

多谢解惑!

1 Like

試試mid-layer的activation改用relu或leakyrelu,BatchNormalization也拿掉看看,輸出的Dense保持不動就可以了