线性回归的从零开始实现

https://zh.d2l.ai/chapter_linear-networks/linear-regression-scratch.html

有个疑问,SGD方法的batchsize参数,是不是不需要作为参数传入,而是在方法内部计算为佳?
从后面简洁实现来看,sgd的时候似乎也并不需要传入batchsize参数

看代码实现
这一段

    dw, db = g.gradient(l, [w, b])
        # 使用参数的梯度更新参数
        sgd([w, b], [dw, db], lr, batch_size)

dw,db并没有计算batch_size,就是计算的顺序变了

Exercise 1

初始化为 0 跑了几遍,仍然能够得到有效的结果。所以算法仍然是有效的。

Exercise 2

可以的,先假设电压和电流的关系为 U = wI + b,然后找到 (U, I) 的数据集,然后跑一遍这个模型。

Exercise 4

在计算二阶导的时候需要一阶导的结果。需要保存一阶导的结果。

Exercise 5

为了保证 y 和 y_hat 的形状一样,避免出现一个是行向量一个是列向量的情况。

Exercise 7

data_iter 最后取出来的一组数据没有 batch_size 个,但是计算 sgd 的时候仍然除了 batch_size,结果应该不会很准确,误差会比能整除的要大一些。

batchsize通常是自己设定的,这个参数属于超参数,他的设置涉及到模型和你的设备影响
在更多更大更复杂的模型下参数需要用户自己慢慢调