我的猜测是程序学到了一个“不管输入是什么,就直接输出0.5”的模型。
这个也比较好理解,因为你的数据量只有30个(几乎等于没有数据),所以模型很可能几乎无法从输入提取任何信息。如果你每次都随机生成一个0到1的值并让模型猜,那模型最合理的表现就是每次都输出0-1均匀分布的期望,也就是0.5.
如果你真的想在数据只有30个的情况下得到一个合理的结果,可以搜索一下“小样本学习”。
我的猜测是程序学到了一个“不管输入是什么,就直接输出0.5”的模型。
这个也比较好理解,因为你的数据量只有30个(几乎等于没有数据),所以模型很可能几乎无法从输入提取任何信息。如果你每次都随机生成一个0到1的值并让模型猜,那模型最合理的表现就是每次都输出0-1均匀分布的期望,也就是0.5.
如果你真的想在数据只有30个的情况下得到一个合理的结果,可以搜索一下“小样本学习”。
原来是这样子啊!
虽然之前显示的训练loss看起来很小,但是实际上回归的结果并不是真的准确(可能其实都在0.5附近)。这点可以从model.evaluate(test_dataset)的结果loss看出来(loss也同样看起来很小,但是predict的结果却都是0.5附近)。
多谢解惑!
試試mid-layer的activation改用relu或leakyrelu,BatchNormalization也拿掉看看,輸出的Dense保持不動就可以了