模型选择、欠拟合和过拟合

同感,而且感觉欠拟合那部分如果通过增加模型复杂度啥的,加入激活函数,非线性层应该也能学出来

“如果一个理论能拟合数据,且有具体的测试可以用来证明它是错误的,那么它就是好的”
没有理解这句话啥意思呢?

前面在定义 loss 时设定了 reduction = ‘none’,此时损失不会取平均,而是保留原来的形状

1 Like

对于np数组是不是无法直接通过load_array来读取,要先把np组转转成张量元组才能读取,np数组的size属性是个int。
image
这里判断的时候size返回的不是维度,size(0)会异常

d2l.train_epoch_ch3这个属性是没是没有了

训练数据可视化,红线是神经网络输出,蓝点是训练数据,绿点是测试数据

三阶多项式函数拟合(正常)

fit_3by3

线性函数拟合(欠拟合)

fit_3by1
这里神经网络实际上是用线性函数去拟合三阶多项式函数,很明显误差很大

高阶多项式函数拟合(过拟合)

fit_3byALOT
从图里看不出来过拟合
不过可以推断,神经网络是在用高(非常高)阶多项式函数去拟合三阶多项式函数,因为高阶多项式函数有更丰富的曲线,所以应该是拟合噪音去了,导致过拟合

image
我的为什么是这样?

因为这里用的测试集在训练集/验证集区间内,相当于用训练集去验证的模型,所以看不出来过拟合,需要把features取值范围变大才能看出来
Figure_1